19 #include "StBTofCollection.h"
20 #include "StBTofHeader.h"
21 #include "StEventTypes.h"
23 #include "StThreeVectorD.hh"
25 #include "StTrackGeometry.h"
26 #include "StTrackPidTraits.h"
27 #include "PhysicalConstants.h"
29 #include "StBTofCollection.h"
30 #include "StBTofHeader.h"
31 #include "StMtdCollection.h"
32 #include "StMtdHeader.h"
34 #include "StMuDSTMaker/COMMON/StMuDstMaker.h"
35 #include "StMuDSTMaker/COMMON/StMuDst.h"
36 #include "StMuDSTMaker/COMMON/StMuTrack.h"
37 #include "StMuDSTMaker/COMMON/StMuPrimaryVertex.h"
38 #include "StMuDSTMaker/COMMON/StMuEvent.h"
39 #include "StMuDSTMaker/COMMON/StMuMtdCollection.h"
40 #include "StMuDSTMaker/COMMON/StMuMtdRawHit.h"
41 #include "StMuDSTMaker/COMMON/StMuMtdHeader.h"
42 #include "StMuDSTMaker/COMMON/StMuMtdHit.h"
44 #include "tables/St_mtdSlewingCorr_Table.h"
45 #include "tables/St_mtdT0Offset_Table.h"
46 #include "tables/St_mtdTriggerTimeCut_Table.h"
47 #include "tables/St_mtdPositionCorr_Table.h"
49 #include "StMtdCalibMaker.h"
62 mUseTriggercut = kFALSE;
63 mInitFromFile = kFALSE;
66 mCalibFileTrigger =
"";
69 hTimeOfFlightCorr = 0x0;
71 hTimeOfFlightModule = 0x0;
72 hTimeOfFlightCorrModule = 0x0;
75 hTOFTimeOfFlightTray = 0x0;
84 if(hTimeOfFlightCorr)
delete hTimeOfFlightCorr;
85 if(hAllCorr)
delete hAllCorr;
86 if(hTimeOfFlightModule)
delete hTimeOfFlightModule;
87 if(hTimeOfFlightCorrModule)
delete hTimeOfFlightCorrModule;
88 if(hTriggerTimeBL)
delete hTriggerTimeBL;
89 if(hVertexzVsTpcz)
delete hVertexzVsTpcz;
90 if(hTOFTimeOfFlightTray)
delete hTOFTimeOfFlightTray;
91 if(hDyModule)
delete hDyModule;
92 if(hDzModule)
delete hDzModule;
98 if (mHisto) bookHistograms();
104 Int_t StMtdCalibMaker::InitRun(Int_t runnumber)
108 Int_t dblSize =
sizeof(Double_t);
109 memset(mMtdT0Corr, 0, mNBackleg*mNModule*mNCell*dblSize);
110 memset(mMtdTotCorr, 0, mNBackleg*mNModule*mNBinMax*dblSize);
111 memset(mMtdTotEdge, 0, mNBackleg*mNModule*mNBinMax*dblSize);
112 memset(mMtdDyCorr, 0, mNBackleg*mNModule*dblSize);
113 memset(mMtdDzCorr, 0, mNBackleg*mNModule*mNCell*dblSize);
114 memset(mTriggerHighEdge,0, mNBackleg*mNModule*dblSize);
115 memset(mTriggerLowEdge, 0, mNBackleg*mNModule*dblSize);
119 LOG_INFO <<
"Initializing calibration parameters from data base" << endm;
123 mDbDataSet = GetDataBase(
"Calibrations/mtd/mtdT0Offset");
124 St_mtdT0Offset* mtdT0Offset =
static_cast<St_mtdT0Offset*
>(mDbDataSet->
Find(
"mtdT0Offset"));
127 LOG_ERROR <<
"Unable to get the T0 offset parameters from data base" << endm;
130 mtdT0Offset_st* tZero =
static_cast<mtdT0Offset_st*
>(mtdT0Offset->GetTable());
131 for(
int j=0; j<mNBackleg*mNModule*mNCell; j++)
133 Int_t backleg = j/60;
134 Int_t module = (j-backleg*60)/12;
135 Int_t cell = j-backleg*60-module*12;
136 mMtdT0Corr[backleg][module][cell] = tZero->t0Offset[j];
140 mDbDataSet = GetDataBase(
"Calibrations/mtd/mtdPositionCorr");
141 St_mtdPositionCorr* mtdPositionCorr =
static_cast<St_mtdPositionCorr*
>(mDbDataSet->
Find(
"mtdPositionCorr"));
144 LOG_ERROR <<
"Unable to get the posistion correction parameters from data base" << endm;
147 mtdPositionCorr_st* posCorr =
static_cast<mtdPositionCorr_st*
>(mtdPositionCorr->GetTable());
148 for(
int j=0; j<mNBackleg*mNModule; j++)
152 mMtdDyCorr[backleg][module] = posCorr->yCorr[j];
155 for(
int j=0; j<mNBackleg*mNModule*mNCell; j++)
157 Int_t backleg = j/60;
158 Int_t module = (j-backleg*60)/12;
159 Int_t cell = j-backleg*60-module*12;
160 mMtdDzCorr[backleg][module][cell] = posCorr->zCorr[j];
164 mDbDataSet = GetDataBase(
"Calibrations/mtd/mtdSlewingCorr");
165 St_mtdSlewingCorr* mtdSlewingCorr =
static_cast<St_mtdSlewingCorr*
>(mDbDataSet->
Find(
"mtdSlewingCorr"));
166 if(!mtdSlewingCorr) {
167 LOG_ERROR <<
"Unable to get the slewing correction parameters from data base" << endm;
170 mtdSlewingCorr_st* slewingCorr =
static_cast<mtdSlewingCorr_st*
>(mtdSlewingCorr->GetTable());
171 for(
int j=0; j<mNBackleg*mNModule*mNBinMax; j++)
173 Int_t backleg = j/100;
174 Int_t module = (j-backleg*100)/20;
175 Int_t bin = j-backleg*100-module*20;
176 mMtdTotEdge[backleg][module][bin] = slewingCorr->slewingBinEdge[j];
177 mMtdTotCorr[backleg][module][bin] = slewingCorr->slewingCorr[j];
183 mDbDataSet = GetDataBase(
"Calibrations/mtd/mtdTriggerTimeCut");
184 St_mtdTriggerTimeCut* mtdTriggerTimeCut =
static_cast<St_mtdTriggerTimeCut*
>(mDbDataSet->
Find(
"mtdTriggerTimeCut"));
185 if(!mtdTriggerTimeCut) {
186 LOG_ERROR <<
"Unable to get the trigger time window cuts from data base" << endm;
189 mtdTriggerTimeCut_st* trigTimeCut =
static_cast<mtdTriggerTimeCut_st*
>(mtdTriggerTimeCut->GetTable());
190 for(
int j=0; j<mNBackleg*mNModule; j++)
192 mTriggerLowEdge[j/5][j%5] = trigTimeCut->minTriggerTime[j];
193 mTriggerHighEdge[j/5][j%5] = trigTimeCut->maxTriggerTime[j];
196 LOG_INFO <<
"Done initializing calibration parameters from data base" << endm;
200 LOG_INFO <<
"Initializing calibration parameters from local files" << endm;
204 if (mCalibFileT0.length()==0)
206 LOG_ERROR <<
"Please input the local file path for T0 offset parameters" << endm;
209 if (mDebug) { LOG_INFO <<
" Local file for T0 offset : " << mCalibFileT0 << endm; }
210 inData.open(mCalibFileT0.c_str());
211 if(!inData.is_open())
213 LOG_ERROR <<
"Unable to get the T0 offset parameters from local file" <<endm;
214 LOG_ERROR <<
"Check if this file exists: " << mCalibFileT0.c_str() << endm;
217 Int_t backlegId, moduleId, cellId;
221 for(Int_t i=0;i<mNBackleg;i++)
223 for(Int_t j=0;j<mNModule;j++)
225 for(Int_t l=0;l<mNCell;l++)
227 inData>>backlegId>>moduleId>>cellId;
229 if(backlegId>=1 && backlegId<=mNBackleg &&
230 moduleId>=1 && moduleId<=mNModule &&
231 cellId>=0 && cellId<=mNCell-1)
233 mMtdT0Corr[backlegId-1][moduleId-1][cellId]=t0Corr;
234 if (mDebug) { LOG_INFO <<
"mMtdT0Corr=" <<mMtdT0Corr[backlegId-1][moduleId-1][cellId] << endm;}
242 if (mCalibFileDy.length()==0)
244 LOG_ERROR <<
"Please input the local file path for Dy offset parameters" << endm;
247 if (mDebug) { LOG_INFO <<
" Local file for Dy offset : " << mCalibFileDy << endm; }
248 inData.open(mCalibFileDy.c_str());
249 if(!inData.is_open())
251 LOG_ERROR <<
"Unable to get the Dy offset parameters from local file" <<endm;
252 LOG_ERROR <<
"Check if this file exists: " << mCalibFileDy.c_str() << endm;
257 for(Int_t i=0;i<mNBackleg;i++)
259 for(Int_t j=0;j<mNModule;j++)
261 inData>>backlegId>>moduleId;
263 if(backlegId>=1 && backlegId<=mNBackleg &&
264 moduleId>=1 && moduleId<=mNModule)
266 mMtdDyCorr[backlegId-1][moduleId-1]=yCorr;
267 if (mDebug) { LOG_INFO <<
"mMtdDyCorr=" <<mMtdDyCorr[backlegId-1][moduleId-1]<< endm;}
274 if (mCalibFileDz.length()==0)
276 LOG_ERROR <<
"Please input the local file path for Dz offset parameters" << endm;
279 if (mDebug) { LOG_INFO <<
" Local file for Dz offset : " << mCalibFileDz << endm; }
280 inData.open(mCalibFileDz.c_str());
281 if(!inData.is_open())
283 LOG_ERROR <<
"Unable to get the Dz offset parameters from local file" <<endm;
284 LOG_ERROR <<
"Check if this file exists: " << mCalibFileDz.c_str() << endm;
289 for(Int_t i=0;i<mNBackleg;i++)
291 for(Int_t j=0;j<mNModule;j++)
293 for(Int_t l=0;l<mNCell;l++)
295 inData>>backlegId>>moduleId>>cellId;
297 if(backlegId>=1 && backlegId<=mNBackleg &&
298 moduleId>=1 && moduleId<=mNModule &&
299 cellId>=0 && cellId<=mNCell-1)
301 mMtdDzCorr[backlegId-1][moduleId-1][cellId]=zCorr;
302 if (mDebug) { LOG_INFO <<
"mMtdDzCorr=" <<mMtdDzCorr[backlegId-1][moduleId-1][cellId] << endm;}
310 if (mCalibFileTot.length()==0)
312 LOG_ERROR <<
"Please input the local file path for slewing correction parameters" << endm;
315 if (mDebug) { LOG_INFO <<
" Local file for slewing correction : " << mCalibFileTot << endm; }
316 inData.open(mCalibFileTot.c_str());
317 if(!inData.is_open())
319 LOG_ERROR <<
"Unable to get the slewing correction parameters from local file" <<endm;
320 LOG_ERROR <<
"Check if this file exists: " << mCalibFileTot.c_str() << endm;
324 for(Int_t i=0;i<mNBackleg;i++)
326 for(Int_t j=0;j<mNModule;j++)
328 inData>>backlegId>>moduleId;
330 if (mDebug) { LOG_INFO <<
"BL,MOD=" <<backlegId<<
","<<moduleId<<
" ,bin="<<nbin << endm; }
332 for(Int_t k=0;k<nbin;k++)
334 if(backlegId>=1 && backlegId<=mNBackleg &&
335 moduleId>=1 && moduleId<=mNModule)
337 inData>>mMtdTotEdge[backlegId-1][moduleId-1][k];
338 if (mDebug) { LOG_INFO <<
"edge=" <<mMtdTotEdge[backlegId-1][moduleId-1][k] << endm; }
342 for(Int_t k=0;k<nbin;k++)
344 if(backlegId>=1 && backlegId<=mNBackleg &&
345 moduleId>=1 && moduleId<=mNModule)
347 inData>>mMtdTotCorr[backlegId-1][moduleId-1][k];
348 if (mDebug) { LOG_INFO <<
"Corr=" <<mMtdTotCorr[backlegId-1][moduleId-1][k] << endm; }
358 if (mCalibFileTrigger.length()==0)
360 LOG_ERROR <<
"Please input the local file path for trigger time window cuts" << endm;
363 if (mDebug) { LOG_INFO <<
" Local file for trigger time window cuts : " << mCalibFileTrigger << endm; }
365 inData.open(mCalibFileTrigger.c_str());
366 if(!inData.is_open())
368 LOG_ERROR <<
"Unable to get the trigger time window cuts from local file" <<endm;
369 LOG_ERROR <<
"Check if this file exists: " << mCalibFileTrigger.c_str() << endm;
372 for(Int_t i=0;i<mNBackleg;i++)
374 for(Int_t j=0;j<mNModule;j++)
376 inData>>backlegId>>moduleId>>mTriggerLowEdge[i][j]>>mTriggerHighEdge[i][j];
377 if (mDebug) { LOG_INFO <<
"triglow = " <<mTriggerLowEdge[i][j]<<
", trighigh = " <<mTriggerHighEdge[i][j] << endm; }
391 if (mDebug) { LOG_INFO <<
"StMtdCalibMaker::Maker: starting ..." << endm; }
393 mStEvent = (
StEvent*) GetInputDS(
"StEvent");
396 if (mDebug) { LOG_INFO <<
"Running on StEvent ..." << endm; }
405 mMuDst = muDstMaker->
muDst();
408 if (mDebug) { LOG_INFO <<
"Running on muDst ..." << endm; }
415 LOG_WARN <<
"Neither StEvent nor muDst is available!" << endm;
420 void StMtdCalibMaker::processStEvent()
424 if (!btofCollection)
return;
426 if (!bTofHeader)
return;
427 Double_t tStartTime = bTofHeader->tStart();
428 if (mDebug) { LOG_INFO <<
" Collision start time =" <<tStartTime << endm; }
433 LOG_WARN <<
"No Mtd collection is available ..." << endm;
438 StMtdHeader *mtdHeader = mtdCollection->mtdHeader();
439 Double_t mtdTriggerTime[2] = {0,0};
442 LOG_WARN <<
"No mtd header ..." << endm;
445 mtdTriggerTime[0] = 25.*(mtdHeader->triggerTime(0)&0xfff);
446 mtdTriggerTime[1] = 25.*(mtdHeader->triggerTime(1)&0xfff);
448 StSPtrVecMtdHit& mtdHits = mtdCollection->mtdHits();
449 Int_t nMtdHits = mtdHits.size();
452 for(Int_t i=0; i<nMtdHits; i++)
456 if(aHit->idTruth()>0)
continue;
457 Int_t backlegId = aHit->backleg();
458 Int_t moduleId = aHit->module();
459 Int_t cellId = aHit->cell();
460 pair<Double_t,Double_t> leadTime = aHit->leadingEdgeTime();
461 if(backlegId<1 || backlegId>mNBackleg)
continue;
462 if(moduleId<1 || moduleId>mNModule)
continue;
463 if(cellId<0 || cellId>mNCell-1)
continue;
467 if(backlegId>=16 && backlegId<=30) thub = 1;
468 Double_t triggerTime = (leadTime.first+leadTime.second)/2-mtdTriggerTime[thub-1];
469 while (triggerTime<-51200) triggerTime+=51200;
470 if (mUseTriggercut &&
471 (triggerTime<mTriggerLowEdge[backlegId-1][moduleId-1]|| triggerTime>mTriggerHighEdge[backlegId-1][moduleId-1]))
473 if (mHisto) hTriggerTimeBL->Fill((backlegId-1)*5+(moduleId-1),triggerTime);
476 Double_t timeOfFlight = (leadTime.first+leadTime.second)/2-tStartTime;
477 while (timeOfFlight>51200) timeOfFlight-=51200;
478 while (timeOfFlight<-51200) timeOfFlight+=51200;
479 if (mHisto) hTimeOfFlightModule->Fill((backlegId-1)*5+moduleId-1,timeOfFlight);
482 pair<Double_t,Double_t> totTime = aHit->tot();
483 Double_t tot = sqrt(totTime.first*totTime.second);
484 Double_t AllCorr =
mtdAllCorr(tot,backlegId,moduleId,cellId);
485 if (mDebug) { LOG_INFO <<
"TOT = "<< tot << endm; }
488 timeOfFlight += AllCorr;
489 if (mHisto) hAllCorr->Fill(AllCorr);
490 if (mHisto) hTimeOfFlightCorr->Fill(timeOfFlight);
491 if (mHisto) hTimeOfFlightCorrModule->Fill((backlegId-1)*5+moduleId-1,timeOfFlight);
495 StTrack *gTrack = aHit->associatedTrack();
496 if(!gTrack)
continue;
497 StSPtrVecTrackPidTraits& traits = gTrack->pidTraits();
499 for(UInt_t it=0; it<traits.size(); it++)
501 if(traits[it]->detector()==kMtdId)
507 if(!mtdPid)
continue;
508 mtdPid->setTimeOfFlight(timeOfFlight);
510 { LOG_INFO <<
"Time-of-flight = " <<timeOfFlight <<
", Calibration parameter = "<<AllCorr << endm; }
512 Float_t dy = mtdPid->deltaY();
513 dy -= mMtdDyCorr[backlegId-1][moduleId-1];
514 if (mHisto) hDyModule->Fill((backlegId-1)*5+moduleId-1,dy);
515 mtdPid->setDeltaY(dy);
517 Float_t dz = mtdPid->deltaZ();
518 dz -= mMtdDzCorr[backlegId-1][moduleId-1][cellId];
519 mtdPid->setDeltaZ(dz);
520 if (mHisto) hDzModule->Fill((backlegId-1)*5+moduleId-1,dz);
524 StTrack *pTrack = gTrack->node()->track(primary);
525 if(!pTrack)
continue;
527 StSPtrVecTrackPidTraits &ptraits = pTrack->pidTraits();
528 for(UInt_t it=0; it<ptraits.size(); it++)
530 if(ptraits[it]->detector()==kMtdId)
536 if(!pmtdPid)
continue;
537 pmtdPid->setTimeOfFlight(timeOfFlight);
538 pmtdPid->setDeltaY(dy);
539 pmtdPid->setDeltaZ(dz);
547 void StMtdCalibMaker::processMuDst()
553 LOG_WARN <<
"No muEvent is available ..." << endm;
562 LOG_WARN <<
"No TOF header is available ..." << endm;
565 Double_t tStartTime = bTofHeader->tStart();
566 Double_t vpdvz = bTofHeader->vpdVz();
568 if (mHisto) hVertexzVsTpcz->Fill(vpdvz,tpcvz);
571 Int_t nhits = mMuDst->numberOfMTDHit();
572 if (mDebug) { LOG_INFO <<
"Total number of MTD hits is: " << nhits << endm; }
573 Double_t mtdTriggerTime[2] = {0,0};
577 LOG_WARN <<
"No MTD header is available ..." << endm;
580 mtdTriggerTime[0] = 25.*(muMtdHeader->triggerTime(1)&0xfff);
581 mtdTriggerTime[1] = 25.*(muMtdHeader->triggerTime(2)&0xfff);
583 for(Int_t i=0;i<nhits;i++)
587 if(aHit->idTruth()>0)
continue;
588 Int_t backlegId = aHit->backleg();
589 Int_t moduleId = aHit->module();
590 Int_t cellId = aHit->cell();
591 pair<Double_t,Double_t> leadTime = aHit->leadingEdgeTime();
592 pair<Double_t,Double_t> trailTime = aHit->trailingEdgeTime();
593 if(backlegId<1 || backlegId>mNBackleg)
continue;
594 if(moduleId<1 || moduleId>mNModule)
continue;
595 if(cellId<0 || cellId>mNCell-1)
continue;
599 if(backlegId>=16 && backlegId<=30) thub = 1;
600 Double_t triggerTime = (leadTime.first+leadTime.second)/2-mtdTriggerTime[thub-1];
601 while (triggerTime<-51200) triggerTime+=51200;
602 if (mUseTriggercut &&
603 (triggerTime<mTriggerLowEdge[backlegId-1][moduleId-1]|| triggerTime>mTriggerHighEdge[backlegId-1][moduleId-1]))
605 if (mHisto) hTriggerTimeBL->Fill((backlegId-1)*5+(moduleId-1),triggerTime);
608 Double_t timeOfFlight = (leadTime.first+leadTime.second)/2-tStartTime;
609 while (timeOfFlight>51200) timeOfFlight-=51200;
610 while (timeOfFlight<-51200) timeOfFlight+=51200;
611 if (mHisto) hTimeOfFlightModule->Fill((backlegId-1)*5+moduleId-1,timeOfFlight);
614 Double_t totFirst = trailTime.first-leadTime.first;
615 if (totFirst<0) totFirst+=51200;
616 Double_t totSecond = trailTime.second-leadTime.second;
617 if (totSecond<0) totSecond+=51200;
618 Double_t tot = sqrt(totFirst*totSecond);
619 Double_t AllCorr =
mtdAllCorr(tot,backlegId,moduleId,cellId);
620 if (mDebug) { LOG_INFO <<
"TOT = "<< tot << endm; }
623 timeOfFlight += AllCorr;
624 if (mHisto) hAllCorr->Fill(AllCorr);
625 if (mHisto) hTimeOfFlightCorr->Fill(timeOfFlight);
626 if (mHisto) hTimeOfFlightCorrModule->Fill((backlegId-1)*5+moduleId-1,timeOfFlight);
631 Int_t index = aHit->index2Global();
632 if (mDebug) { LOG_INFO <<
"Associated global track index = "<< index << endm; }
633 if(index<0)
continue;
635 if(!gTrack)
continue;
637 pidMtd.setTimeOfFlight (timeOfFlight);
638 if (mDebug) { LOG_INFO <<
"Time-of-flight = " <<timeOfFlight <<
", Calibration parameter = "<<AllCorr << endm; }
640 Float_t dy = pidMtd.deltaY();
641 dy -= mMtdDyCorr[backlegId-1][moduleId-1];
642 pidMtd.setDeltaY(dy);
643 if (mHisto) hDyModule->Fill((backlegId-1)*5+moduleId-1,dy);
645 Float_t dz = pidMtd.deltaZ();
646 dz -= mMtdDzCorr[backlegId-1][moduleId-1][cellId];
647 pidMtd.setDeltaZ(dz);
648 if (mHisto) hDzModule->Fill((backlegId-1)*5+moduleId-1,dz);
649 gTrack->setMtdPidTraits(pidMtd);
652 index = aHit->index2Primary();
653 if(index<0)
continue;
655 if(!pTrack)
continue;
657 ppidMtd.setTimeOfFlight (timeOfFlight);
658 ppidMtd.setDeltaY(dy);
659 ppidMtd.setDeltaZ(dz);
660 pTrack->setMtdPidTraits(ppidMtd);
670 Int_t backleg = iBackleg-1;
671 Int_t module = iModule-1;
673 Double_t mtdCorr = 0;
674 mtdCorr += mMtdT0Corr[backleg][module][cell];
678 for(Int_t i=0;i<mNBinMax-1;i++)
680 if(tot>=mMtdTotEdge[backleg][module][i] && tot<mMtdTotEdge[backleg][module][i+1])
686 if(iTotBin>=0&&iTotBin<mNBinMax)
688 Double_t x1 = mMtdTotEdge[backleg][module][iTotBin];
689 Double_t x2 = mMtdTotEdge[backleg][module][iTotBin+1];
690 Double_t y1 = mMtdTotCorr[backleg][module][iTotBin];
691 Double_t y2 = mMtdTotCorr[backleg][module][iTotBin+1];
692 mtdCorr += y1 + (tot-x1)*(y2-y1)/(x2-x1);
696 if (mDebug) { LOG_INFO <<
" TOT out of range! totCorr set 0! Tot=" << tot <<
" ,BL,MOD="<<iBackleg<<
","<<iModule<< endm; }
702 void StMtdCalibMaker::bookHistograms()
704 hTimeOfFlightCorr =
new TH1D(
"hTimeOfFlightCorr",
"hTimeOfFlightCorr",4000,-1000,1000);
705 hAllCorr =
new TH1D(
"hAllCorr",
"hAllCorr",1000,-500,500);
706 hTimeOfFlightModule =
707 new TH2F(
"hTimeOfFlightModule",
"hTimeOfFlightModule",mNBackleg*mNModule,0,mNBackleg*mNModule,1000,-500,500);
708 hTimeOfFlightCorrModule =
709 new TH2F(
"hTimeOfFlightCorrModule",
"hTimeOfFlightCorrModule",mNBackleg*mNModule,0,mNBackleg*mNModule,1000,-500,500);
710 hTriggerTimeBL =
new TH2F(
"hTriggerTimeBL",
"hTriggerTimeBL",150,0,150,400,2700,3100);
711 hVertexzVsTpcz =
new TH2F(
"hVertexzVsTpcz",
"hVertexzVsTpcz",800,-100,100,800,-100,100);
712 hTOFTimeOfFlightTray =
new TH2F(
"hTOFTimeOfFlightTray",
"hTOFTimeOfFlightTray",120,0,120,1000,-1000,1000);
713 hDyModule =
new TH2F(
"hDyModule",
"hDyModule",mNBackleg*mNModule,0,mNBackleg*mNModule,200,-50,50);
714 hDzModule =
new TH2F(
"hDzModule",
"hDzModule",mNBackleg*mNModule,0,mNBackleg*mNModule,240,-60,60);
715 AddHist(hTimeOfFlightCorr);
717 AddHist(hTimeOfFlightModule);
720 AddHist(hTimeOfFlightCorrModule);
721 AddHist(hTriggerTimeBL);
722 AddHist(hVertexzVsTpcz);
723 AddHist(hTOFTimeOfFlightTray);
static TObjArray * globalTracks()
returns pointer to the global tracks list
StThreeVectorF primaryVertexPosition(int vtx_id=-1) const
The StMuDst is supposed to be structured in 'physical events'. Therefore there is only 1 primary vert...
Double_t mtdAllCorr(const Double_t tot, const Int_t iBackleg, const Int_t iModule, const Int_t iCell)
Caculate all the correction value for time of flight.
virtual Int_t Init()
Destructor.
virtual ~StMtdCalibMaker()
Default constructor.
static StMuEvent * event()
returns pointer to current StMuEvent (class holding the event wise information, e.g. event number, run number)
static StBTofHeader * btofHeader()
returns pointer to the btofHeader - dongx
static TClonesArray * array(int type)
returns pointer to the n-th TClonesArray
virtual TDataSet * Find(const char *path) const