00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00012
00013 #include "StMuDstVtxSeedMaker.h"
00014 #include "StMuDSTMaker/COMMON/StMuDstMaker.h"
00015 #include "StMuDSTMaker/COMMON/StMuDst.h"
00016 #include "StMuDSTMaker/COMMON/StMuEvent.h"
00017 #include "StMuDSTMaker/COMMON/StMuPrimaryVertex.h"
00018 #include "StMessMgr.h"
00019
00020
00021 ClassImp(StMuDstVtxSeedMaker)
00022
00023 StMuDstVtxSeedMaker::StMuDstVtxSeedMaker(const char *name):
00024 StVertexSeedMaker(name), mudst(0), event(0) {
00025 }
00026
00027 Int_t StMuDstVtxSeedMaker::Make() {
00028 StMuDstMaker* mudstMaker = (StMuDstMaker*) GetMaker("MuDst");
00029 if (!mudstMaker) {
00030 gMessMgr->Error("StMuDstVtxSeedMaker: No StMuDstMaker(\"MuDst\") found!");
00031 return kStErr;
00032 }
00033 mudst = mudstMaker->muDst();
00034 if (!mudst) {
00035 gMessMgr->Error("StMuDstVtxSeedMaker: No MuDst found!");
00036 return kStErr;
00037 }
00038 event = mudst->event();
00039 if (!event) {
00040 gMessMgr->Error("StMuDstVtxSeedMaker: No MuEvent found!");
00041 return kStErr;
00042 }
00043
00044 Int_t result = kStOk;
00045 for (pvn=0; pvn<mudst->numberOfPrimaryVertices(); pvn++) {
00046 result = StVertexSeedMaker::Make();
00047 if (result != kStOk) break;
00048 }
00049
00050 return result;
00051 }
00052
00053 Bool_t StMuDstVtxSeedMaker::CheckTriggers() {
00054 Bool_t notTrig = kTRUE;
00055
00056
00057 StMuTriggerIdCollection& trigIdColl = event->triggerIdCollection();
00058 const StTriggerId& tr = trigIdColl.nominal();
00059 vector<unsigned int> idVec = tr.triggerIds();
00060 for (unsigned int iTrg = 0;
00061 (notTrig) && (iTrg < idVec.size()) ; iTrg++) {
00062 if (ValidTrigger(idVec[iTrg])) notTrig = kFALSE;
00063 }
00064 return notTrig;
00065 }
00066
00067 Int_t StMuDstVtxSeedMaker::GetEventData() {
00068
00069 StMuPrimaryVertex* primVtx = mudst->primaryVertex(pvn);
00070 if (!primVtx) {
00071 gMessMgr->Error("StMuDstVtxSeedMaker: No primary vertex from StMuDst!");
00072 return kStErr;
00073 }
00074 StRunInfo& runInfo = event->runInfo();
00075 zdc = (float) (runInfo.zdcWestRate() + runInfo.zdcEastRate());
00076 fill = (int) (runInfo.beamFillNumber(blue));
00077 run = runInfo.runId();
00078
00079 StThreeVectorF pvert = primVtx->position();
00080 StThreeVectorF epvert = primVtx->posError();
00081 zvertex = pvert.z();
00082 yvertex = pvert.y();
00083 xvertex = pvert.x();
00084 eyvertex = epvert.y();
00085 exvertex = epvert.x();
00086
00087
00088 mudst->setVertexIndex(pvn);
00089 mult = mudst->numberOfPrimaryTracks();
00090 rank = primVtx->ranking();
00091
00092
00093 itpc = 0; otpc = 0; detmap = 0;
00094
00095 unsigned short nBEMC = primVtx->nBEMCMatch();
00096 if (nBEMC>7) nBEMC=7;
00097
00098 detmap += nBEMC;
00099
00100
00101 return kStOk;
00102 }
00103
00104 void StMuDstVtxSeedMaker::PrintInfo() {
00105 LOG_INFO << "\n**************************************************************"
00106 << "\n* $Id: StMuDstVtxSeedMaker.cxx,v 1.8 2009/06/12 17:09:17 genevb Exp $"
00107 << "\n**************************************************************" << endm;
00108
00109 if (Debug()) StVertexSeedMaker::PrintInfo();
00110 }
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138