00001 #include "TChain.h"
00002
00003 #include "StGammaPythiaEvent.h"
00004 #include "StGammaPythiaEventMaker.h"
00005 #include "StGammaEventMaker.h"
00006 #include "StGammaEvent.h"
00007 #include "StGammaScheduleMaker.h"
00008 #include "StMuDSTMaker/COMMON/StMuDstMaker.h"
00009 #include "StMuDSTMaker/COMMON/StMuDst.h"
00010 #include "StMuDSTMaker/COMMON/StMuEvent.h"
00011 #include "StMuDSTMaker/COMMON/StMuPrimaryVertex.h"
00012
00013 #include "StTriggerUtilities/StTriggerSimuMaker.h"
00014 #include "StSpinPool/StSpinDbMaker/StSpinDbMaker.h"
00015
00016 ClassImp(StGammaEventMaker);
00017
00019
00021 StGammaEventMaker::StGammaEventMaker(const char *name): StMaker(name)
00022 {}
00023
00025
00027 StGammaEventMaker::~StGammaEventMaker()
00028 {}
00029
00031
00033 Int_t StGammaEventMaker::Init()
00034 {
00035
00036
00037 mGammaEvent = new StGammaEvent();
00038
00039
00040 mPythia = 0;
00041 mPythiaMaker = dynamic_cast<StGammaPythiaEventMaker*>(GetMakerInheritsFrom("StGammaPythiaEventMaker"));
00042 if(mPythiaMaker)
00043 {
00044 mPythia = new StGammaPythiaEvent;
00045 mPythiaMaker->SetPythia(mPythia);
00046 mGammaEvent->SetPythia(mPythia);
00047 }
00048
00049
00050 muDstMaker = dynamic_cast<StMuDstMaker*>(GetMakerInheritsFrom("StMuDstMaker"));
00051 assert(muDstMaker);
00052
00053 return StMaker::Init();
00054 }
00055
00057
00059 void StGammaEventMaker::Clear(Option_t *opts)
00060 {
00061 mGammaEvent->Clear(opts);
00062 StMaker::Clear(opts);
00063 }
00064
00065
00067
00069 Int_t StGammaEventMaker::Make()
00070 {
00071
00072
00073 if(!GetDataSet("MuDst"))
00074 {
00075 LOG_WARN << "No MuDst" << endm;
00076 return kStFatal;
00077 }
00078
00079
00080
00081 StMuPrimaryVertex *pv = StMuDst::primaryVertex();
00082 if(pv)
00083 {
00084 mGammaEvent->SetVertex(TVector3(pv->position().xyz()));
00085 mGammaEvent->SetVertexRank(pv->ranking());
00086 mGammaEvent->mFlags |= TPC_VERTEX;
00087 }
00088 else
00089 {
00090 mGammaEvent->SetVertex(TVector3(0.,0.,0.));
00091 mGammaEvent->SetVertexRank(-100);
00092 mGammaEvent->mFlags |= !(TPC_VERTEX);
00093 }
00094
00095 mGammaEvent->SetRunNumber( StMuDst::event()->runNumber() );
00096 mGammaEvent->SetEventNumber( StMuDst::event()->eventNumber() );
00097 mGammaEvent->SetMudstFileName( muDstMaker->chain()->GetFile()->GetName() );
00098 mGammaEvent->SetMagneticField( StMuDst::event()->magneticField() );
00099 mGammaEvent->SetTriggerIds( StMuDst::event()->triggerIdCollection().nominal().triggerIds() );
00100 mGammaEvent->SetBunchCrossing48bit( StMuDst::event()->l0Trigger().bunchCrossingId() );
00101 mGammaEvent->SetBunchCrossing7bit( StMuDst::event()->l0Trigger().bunchCrossingId7bit( mGammaEvent->runNumber() ) );
00102
00103
00104 vector<unsigned int> simuTriggers;
00105
00106 StTriggerSimuMaker *triggerSimu = dynamic_cast<StTriggerSimuMaker*>(GetMakerInheritsFrom("StTriggerSimuMaker"));
00107 if(triggerSimu)
00108 {
00109
00110 for(unsigned int i = 0; i < mRequestedTriggers.size(); ++i)
00111 {
00112
00113 if(triggerSimu->isTrigger(mRequestedTriggers.at(i)))
00114 {
00115 simuTriggers.push_back(mRequestedTriggers.at(i));
00116 cout << "StGammaEventMaker::Make() - " << mRequestedTriggers.at(i) << " fired!" << endl;
00117 }
00118 else
00119 {
00120 cout << "StGammaEventMaker::Make() - " << mRequestedTriggers.at(i) << " did not fire!" << endl;
00121 }
00122
00123 }
00124
00125 }
00126
00127 mGammaEvent->SetSimuTriggerIds(simuTriggers);
00128
00129
00130 StSpinDbMaker* spinDb = dynamic_cast<StSpinDbMaker*>(GetMakerInheritsFrom("StSpinDbMaker"));
00131 if(spinDb)
00132 {
00133
00134 mGammaEvent->SetValidDb(spinDb->isValid());
00135 mGammaEvent->SetSpin4( spinDb->spin4usingBX48( mGammaEvent->bunchCrossing48bit() ) );
00136 mGammaEvent->SetBunchCrossingStar( spinDb->BXstarUsingBX48( mGammaEvent->bunchCrossing48bit() ) );
00137
00138 if(spinDb->isPolDirLong()) mGammaEvent->SetPolarizationType(StGammaEvent::kLongLong);
00139 else if(spinDb->isPolDirTrans()) mGammaEvent->SetPolarizationType(StGammaEvent::kTransTrans);
00140
00141 }
00142
00143
00144
00145
00146 StGammaScheduleMaker *scheduler = dynamic_cast<StGammaScheduleMaker*>(GetMakerInheritsFrom("StGammaScheduleMaker"));
00147 if(scheduler)
00148 {
00149 if(scheduler->nStamps()) mGammaEvent->SetRunNumber(scheduler->index());
00150 }
00151
00152 return kStOK;
00153
00154 }