00001
00002
00003
00004
00006 #include <Stiostream.h>
00007 #include "StPeCLumiEntry.h"
00008 #include "StEventUtilities/StuRefMult.hh"
00009
00010 ClassImp(StPeCLumiEntry)
00011
00012 StPeCLumiEntry::StPeCLumiEntry() {
00013 StPeCLumiEntry::Clear();
00014 }
00015
00016 void StPeCLumiEntry::Clear(const Option_t* t) {
00017 runNr=0;
00018 eventNr=0 ;
00019 uTime=0;
00020 triggerMask=0;
00021 triggerWord=0;
00022 triggerActionWord=0;
00023 zdcEast=0;
00024 zdcWest=0;
00025 zdcSum=0;
00026 zdcEastUA=0;
00027 zdcWestUA=0;
00028 zdcSumUA=0;
00029
00030 ctbSum=0;
00031 ctbSumMips=0;
00032 nPrimary=0;
00033 nGlobal=0;
00034 nhminus=0;
00035 xVtx=-9999;
00036 yVtx=-9999;
00037 zVtx=-9999;
00038 }
00039
00040
00041
00042 StPeCLumiEntry::~StPeCLumiEntry() {
00043 }
00044
00045 Int_t StPeCLumiEntry::fill ( StMuDst *muDst) {
00046 StPeCLumiEntry::Clear();
00047 StMuEvent *MuEvent = muDst->event();
00048 if (MuEvent) {
00049 eventNr = MuEvent->eventNumber();
00050 runNr = MuEvent->runNumber();
00051 uTime = (int ) MuEvent->runInfo().productionTime();
00052 uTime-= 946681200;
00053
00054 triggerWord = MuEvent->l0Trigger().triggerWord();
00055 triggerActionWord = MuEvent->l0Trigger().triggerActionWord();
00056
00057 nhminus = MuEvent->refMultNeg();
00058
00059
00060 StZdcTriggerDetector* zdc=0;
00061 StCtbTriggerDetector* ctb=0;
00062
00063 zdc = & MuEvent->zdcTriggerDetector();
00064 ctb = & MuEvent->ctbTriggerDetector();
00065
00066 if(zdc){
00067
00068 zdcWest = zdc->adcSum(west) ;
00069 zdcEast = zdc->adcSum(east) ;
00070 zdcSum = zdc->adcSum() ;
00071
00072 zdcWestUA = zdc->adc(0) ;
00073 zdcEastUA = zdc->adc(4) ;
00074 zdcSumUA = zdcEastUA+zdcWestUA;
00075 }
00076
00077
00078
00079
00080
00081 ctbSum=0;
00082 ctbSumMips=0;
00083 if(ctb){
00084 for(UInt_t i=0; i < ctb->numberOfTrays(); i++){
00085 for(UInt_t j=0; j < ctb->numberOfSlats(); j++){
00086 ctbSum += ctb->mips(i,j,0);
00087 ctbSumMips += int(ctb->mips(i,j,0)/5);
00088 }
00089 }
00090 }
00091
00092
00093 nGlobal = muDst->numberOfGlobalTracks ();
00094 nPrimary = muDst->numberOfPrimaryTracks();
00095
00096 StThreeVectorF vtx = MuEvent->primaryVertexPosition();
00097
00098 xVtx = vtx.x();
00099 yVtx = vtx.y();
00100 zVtx = vtx.z();
00101
00102
00103 cout << "utime " << uTime<< endl;
00104
00105 cout << "tw " << triggerWord<< endl;
00106 cout << "taw " << triggerActionWord<< endl;
00107 cout << "Primaries: " << nPrimary << endl;
00108 cout << "Globals : " << nGlobal << endl;
00109 cout << "Uncorr hminus:" << nhminus << endl;
00110 cout << "StPeCEvent : primary vertex " << xVtx << " "
00111 << yVtx << " " << zVtx << endl;
00112 cout << "LumiMaker: ZDC W:" <<zdcWest << " E: "<< zdcEast << " Sum " << zdcSum << endl;
00113 }
00114 return 0;
00115 }
00116
00117
00118 Int_t StPeCLumiEntry::fill ( StEvent *event) {
00119
00120 StPeCLumiEntry::Clear();
00121
00122
00123
00124 eventNr = event->id() ;
00125
00126 runNr = event->runId();
00127 uTime = event->time();
00128 uTime-= 946681200;
00129 triggerMask= event->triggerMask() ;
00130 triggerWord=event->l0Trigger()->triggerWord() ;
00131 triggerActionWord=event->l0Trigger()->triggerActionWord();
00132
00133
00134 nhminus = uncorrectedNumberOfNegativePrimaries(*event);
00135
00136
00137 StZdcTriggerDetector* zdc=0;
00138 StCtbTriggerDetector* ctb=0;
00139 StTriggerDetectorCollection* trg = event->triggerDetectorCollection();
00140
00141 if ( trg ) {
00142 zdc = & trg->zdc();
00143 ctb = & trg->ctb();
00144 }
00145 if(zdc){
00146
00147 zdcWest = zdc->adcSum(west) ;
00148 zdcEast = zdc->adcSum(east) ;
00149 zdcSum = zdc->adcSum() ;
00150
00151 zdcWestUA = zdc->adc(0) ;
00152 zdcEastUA = zdc->adc(4) ;
00153 zdcSumUA = zdcEastUA+zdcWestUA;
00154 }
00155
00156
00157
00158
00159
00160 ctbSum=0;
00161 ctbSumMips=0;
00162 if(ctb){
00163 for(UInt_t i=0; i < ctb->numberOfTrays(); i++){
00164 for(UInt_t j=0; j < ctb->numberOfSlats(); j++){
00165 ctbSum += ctb->mips(i,j,0);
00166 ctbSumMips += int(ctb->mips(i,j,0)/5);
00167 }
00168 }
00169 }
00170
00171
00172
00173 StSPtrVecTrackNode& exnode = event->trackNodes();
00174 for( UInt_t in=0; in<exnode.size(); in++ ) {
00175 nGlobal += exnode[in]->entries(global);
00176 nPrimary += exnode[in]->entries(primary);
00177 }
00178
00179
00180 StPrimaryVertex* vtx = event->primaryVertex();
00181 if(vtx) {
00182 xVtx = vtx->position().x();
00183 yVtx = vtx->position().y();
00184 zVtx = vtx->position().z();
00185 }
00186
00187
00188
00189 cout << "utime " << event->time() << endl;
00190 cout << "trigger mask" <<event->triggerMask() << endl;
00191 cout << "tw " << event->l0Trigger()->triggerWord() << endl;
00192 cout << "taw " << event->l0Trigger()->triggerActionWord() << endl;
00193 cout << "Primaries: " << nPrimary << endl;
00194 cout << "Globals : " << nGlobal << endl;
00195 cout << "Uncorr hminus:" << nhminus << endl;
00196 cout << "StPeCEvent : primary vertex " << xVtx << " "
00197 << yVtx << " " << zVtx << endl;
00198 cout << "LumiMaker: ZDC W:" <<zdcWest << " E: "<< zdcEast << " Sum " << zdcSum << endl;
00199
00200
00201 return 0 ;
00202 }
00203