00001
00002
00003
00004
00005 #include <TFile.h>
00006
00007 #include "StBbcVertexMaker.h"
00008
00009 #include "TChain.h"
00010 #include "TClonesArray.h"
00011 #include "StL0Trigger.h"
00012 #include "StEventInfo.h"
00013 #include "StEventSummary.h"
00014 #include "StarClassLibrary/StThreeVectorF.hh"
00015 #include "StMuDSTMaker/COMMON/StMuEvent.h"
00016 #include "StMuDSTMaker/COMMON/StMuTrack.h"
00017 #include "StMuDSTMaker/COMMON/StMuDstMaker.h"
00018 #include "StMuDSTMaker/COMMON/StMuTriggerIdCollection.h"
00019 #include "StEvent/StTriggerId.h"
00020
00021 #include <StMessMgr.h>
00022 #include "BbcHex.h"
00023
00024 ClassImp(StBbcVertexMaker)
00025
00026
00027
00028 StBbcVertexMaker::StBbcVertexMaker(const char* self ,const char* muDstMakerName) : StMaker(self){
00029 mMuDstMaker = (StMuDstMaker*)GetMaker(muDstMakerName);
00030 assert(mMuDstMaker);
00031
00032 }
00033
00034
00035
00036
00037 StBbcVertexMaker::~StBbcVertexMaker(){
00038
00039
00040 }
00041
00042
00043
00044 Int_t StBbcVertexMaker::InitRun(int runNo){
00045 initRun(runNo);
00046 return kStOK;
00047 }
00048
00049
00050
00051 Int_t StBbcVertexMaker::Init(){
00052 BbcVertex::init();
00053
00054 return StMaker::Init();
00055 }
00056
00057
00058
00059 Int_t StBbcVertexMaker::Finish(){
00060 finish();
00061 return kStOK;
00062 }
00063
00064
00065
00066
00067
00068
00069 Int_t StBbcVertexMaker::Make(){
00070 clear();
00071
00072 if( !unpackMuTrig()) return kStOK;
00073
00074 doVertex();
00075
00076 return kStOK;
00077 }
00078
00079
00080
00081
00082
00083
00084 bool StBbcVertexMaker::unpackMuTrig(){
00085
00086
00087
00088
00089 StMuEvent* muEve = mMuDstMaker->muDst()->event();
00090
00091
00092 StEventInfo &info=muEve->eventInfo();
00093 unixTime=info.time();
00094 if(unixTime0==0) unixTime0=unixTime;
00095
00096 StMuTriggerIdCollection& trgIdColl=muEve->triggerIdCollection();
00097
00098 StEventSummary &smry=muEve->eventSummary();
00099 StThreeVectorF ver=smry.primaryVertexPosition();
00100
00101 zTpc=ver.z();
00102 if( fabs(ver.x())<0.000001 &&fabs(ver.y())<0.000001 &&fabs(ver.z())<0.000001 ) {
00103 zTpc=999;
00104 return false;
00105 }
00106
00107 const StTriggerId& oflTrgId=trgIdColl.nominal();
00108 vector<unsigned int> trgId=oflTrgId.triggerIds();
00109
00110
00111
00112 bool isGood=false;
00113 UInt_t i;
00114 for(i = 0; i < trgId.size() ; i++){
00115
00116
00117 if(trgId[i]==10) isGood=true;
00118 if(trgId[i]==45010) isGood=true;
00119
00120
00121 }
00122 if(!isGood) return false;
00123
00124 StBbcTriggerDetector & bbc=muEve->bbcTriggerDetector ();
00125 for(i=0;i<mxHex;i++) {
00126 hex[0][i]->setHit(bbc.tdc(i),bbc.adc(i));
00127 hex[1][i]->setHit(bbc.tdc(i+24),bbc.adc(i+24));
00128
00129 }
00130 onlTdiff=bbc.onlineTimeDifference ();
00131 return isGood;
00132 }
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147