8 #include "PhysicalConstants.h"
12 #include "SystemOfUnits.h"
13 #include "StQABookHist.h"
17 #include "StEventQAMaker.h"
18 #include "StEventTypes.h"
19 #include "StDcaGeometry.h"
20 #include "StMcEventTypes.hh"
21 #include "StTpcDedxPidAlgorithm.h"
22 #include "HitHistograms.h"
23 #include "StTpcDb/StTpcDb.h"
24 #include "StarClassLibrary/StTimer.hh"
25 #include "StMessMgr.h"
26 #include "StEmcUtil/geometry/StEmcGeom.h"
27 #include "StEmcUtil/others/StEmcMath.h"
28 #include "StBichsel/Bichsel.h"
29 #include "StDetectorDbMaker/StDetectorDbTriggerID.h"
31 #include "StPmdUtil/StPmdCollection.h"
32 #include "StPmdUtil/StPmdDetector.h"
33 #include "StPmdUtil/StPmdMapUtil.h"
34 #include "StPhmdCollection.h"
35 #include "StPhmdDetector.h"
36 #include "StPhmdModule.h"
38 #include "StTofUtil/tofPathLength.hh"
39 #include "tables/St_tofTotCorr_Table.h"
41 #include "StBTofCollection.h"
42 #include "StBTofHit.h"
43 #include "StBTofPidTraits.h"
46 #include "StEpdCollection.h"
49 #include "StFcsPi0FinderForEcal/StFcsPi0FinderForEcal.h"
51 #include "StEvent/StTpcRawData.h"
53 static int tblow = 31;
54 static int tbhigh = 431;
60 static float ftpcPadrowZPos[20] = {162.75,171.25,184.05,192.55,205.35,
61 213.85,226.65,235.15,247.95,256.45,
62 -162.75,-171.25,-184.05,-192.55,-205.35,
63 -213.85,-226.65,-235.15,-247.95,-256.45};
67 Bool_t isTriggerInSubRange(const
StTriggerId* tr, UInt_t lo, UInt_t hi) {
71 vector<unsigned int> idVec = tr->triggerIds();
72 for (UInt_t i=lo; i<=hi; i++) {
73 UInt_t j = i - ((i/1000)*1000);
74 for (UInt_t k=0; k<idVec.size(); k++)
75 if (idVec[k] >= 10000 &&
76 j == (idVec[k] - ((idVec[k]/1000)*1000)))
return kTRUE;
80 Bool_t isTriggerInRange(
const StTriggerId* tr, UInt_t lo, UInt_t hi) {
81 for (UInt_t i=lo; i<=hi; i++)
82 if (tr->isTrigger(i))
return kTRUE;
85 Bool_t isTriggerAmong(
const StTriggerId* tr, UInt_t n, ... ) {
89 for (UInt_t i=0; (!is) && (i<n); i++)
90 if (tr->isTrigger(va_arg(ap,
unsigned int))) is=kTRUE;
96 StEventQAMaker::StEventQAMaker(
const char *name,
const char *title) :
97 StQAMakerBase(name,title,
"StE"), event(0), primVtx(0), mHitHist(0), mPmdGeom(0), maputil(0) {
103 printTpcHits = kFALSE;
114 StEventQAMaker::~StEventQAMaker() {
115 if (mHitHist)
delete mHitHist;
116 if (mPmdGeom)
delete mPmdGeom;
117 if (maputil)
delete maputil;
118 for (Int_t i=0; i<4; i++) {
if (emcGeom[i])
delete emcGeom[i];}
123 Int_t StEventQAMaker::Init() {
126 if (printTpcHits) allTrigs = kTRUE;
127 return StQAMakerBase::Init();
136 TString hname = QAMakerType;
137 hname +=
"QaDedxAllSectors";
138 mHitHist =
new HitHistograms(hname.Data(),
"dE/dx for all TPC sectors",
139 100,0.,1.e-5,2,
this);
142 if ((gROOT->GetClass(
"StEmcMath")) && (gROOT->GetClass(
"StEmcGeom"))) {
143 for(Int_t i=0; i<4; i++) {emcGeom[i] = StEmcGeom::getEmcGeom(i+1);}
147 St_tofTotCorr* tofTotCorr =
static_cast<St_tofTotCorr*
>(GetDataBase(
"Calibrations/tof/tofTotCorr"));
149 gMessMgr->Error(
"unable to get tof TotCorr table parameters",
"OS");
152 tofTotCorr_st* totCorr =
static_cast<tofTotCorr_st*
>(tofTotCorr->GetArray());
154 for(Int_t i=0;i<mNVPD;i++) {
155 short trayId = totCorr[i].trayId;
156 short cellId = totCorr[i].cellId;
158 if(trayId==mEastVpdTrayId) mEastVpdCorr[cellId-1] = totCorr[i].corr[0];
159 if(trayId==mWestVpdTrayId) mWestVpdCorr[cellId-1] = totCorr[i].corr[0];
173 event = (
StEvent*) GetInputDS(
"StEvent");
175 gMessMgr->Error(
"StEventQAMaker::Make(): no event found!");
178 Bool_t realData =
event->info() && (
event->info()->type() ==
"NONE" ||
179 event->info()->type() ==
"Collision");
192 Bool_t doEvent = kTRUE;
194 memset(evClasses,0,32*
sizeof(Int_t));
195 Int_t nEvClasses = 1;
198 ((double) (trg->bunchCounter())) / ((double) (St_starClockOnlC::instance()->Frequency())) :
200 Int_t run_num =
event->runId();
203 Int_t run_year = (run_num+727000)/1000000;
208 }
else if (run_year <= 3) {
212 if ((l0Trig) && (run_year != 1)) {
213 if (realData) doEvent = kFALSE;
214 tword = l0Trig->triggerWord();
216 if ((tword >= 0x1000) && (tword < 0x1100)) {
219 }
else if ((tword >= 0x1100) && (tword < 0x1200)) {
222 }
else if ((tword >= 0x1200) && (tword < 0x2000)) {
225 }
else if ((tword >= 0x2000) && (tword < 0x3000)) {
229 }
else if (tword == 0xF200) {
236 gMessMgr->Warning(
"StEventQAMaker::Make(): trigger word=0 !!!!!");
239 gMessMgr->Warning(
"StEventQAMaker::Make(): No trigger info...processing anyhow");
246 const StTriggerId* trigId = ((trigIdColl) ? trigIdColl->nominal() : 0);
249 if (run_num < 4363000)
histsSet = StQA_dAu;
250 else if (run_num < 5120000)
histsSet = StQA_AuAu;
251 else if (run_num < 5999999)
histsSet = StQA_pp;
252 if (realData) doEvent = kFALSE;
254 tword = trigId->mask();
263 Bool_t CONVENTION2012 = (run_num > 13077000);
267 if (isTriggerAmong(trigId,4,2001,2002,2003,2004)) {
270 evClasses[nEvClasses] = 1;
274 if (isTriggerAmong(trigId,2,2201,2202)) {
277 evClasses[nEvClasses] = 2;
281 if ((nEvClasses==0) && (isTriggerInRange(trigId,2000,2999))) {
283 evClasses[nEvClasses] = 3;
290 if ((nEvClasses==0) && (isTriggerInRange(trigId,1000,1999))) {
293 evClasses[nEvClasses] = 1;
300 if (isTriggerInSubRange(trigId,0,99) ||
301 ((!CONVENTION2012) && run_year >= 12 && isTriggerInSubRange(trigId,100,199))) {
304 evClasses[nEvClasses] = 1;
308 if (isTriggerInSubRange(trigId,100,199) && (CONVENTION2012 || run_year < 12)) {
311 evClasses[nEvClasses] = 2;
315 if (isTriggerInSubRange(trigId,200,299) ||
316 ((!CONVENTION2012) && run_year >= 9 && isTriggerInSubRange(trigId,500,599)) ||
317 (CONVENTION2012 && isTriggerInSubRange(trigId,300,399))) {
320 evClasses[nEvClasses] = 3;
324 if (isTriggerInSubRange(trigId,600,999)) {
326 if (run_year >= 9) doEvent = kTRUE;
327 evClasses[nEvClasses] = 4;
331 if ((run_year >= 10 && isTriggerInSubRange(trigId,400,499)) ||
332 (CONVENTION2012 && isTriggerInSubRange(trigId,500,599))) {
335 evClasses[nEvClasses] = 5;
341 gMessMgr->Warning(
"StEventQAMaker::Make(): No trigger info");
347 if (realData)
histsSet = StQA_run22;
348 }
else if (run_year >=20) {
349 if (realData)
histsSet = StQA_run19;
350 }
else if (run_year >=19) {
351 if (realData)
histsSet = StQA_run18;
352 }
else if (run_year >=18) {
353 if (realData)
histsSet = StQA_run17;
354 }
else if (run_year >=16) {
355 if (realData)
histsSet = StQA_run15;
356 }
else if (run_year >=15) {
357 if (realData)
histsSet = StQA_run14;
358 }
else if (run_year >=14) {
359 if (realData)
histsSet = StQA_run13;
360 }
else if (run_year >=13) {
361 if (realData)
histsSet = StQA_run12;
362 }
else if (run_year >=9) {
364 }
else silHists = kTRUE;
365 if (run_year < 13) ftpHists = kTRUE;
369 gMessMgr->Message() <<
"StEventQAMaker::Make(): "
370 <<
"skipping because trigger word=" << tword << endm;
375 for (
unsigned int iTrg=0; iTrg < (dbTriggerId ? dbTriggerId->
getIDNumRows() : 0); iTrg++) {
376 UInt_t daqid = dbTriggerId->getDaqTrgId(iTrg);
377 if (tword>>(daqid) & 1U)
378 mTrigBits->Fill((Float_t) daqid);
380 if (run_year > 1 && strlen(mTrigBits->GetXaxis()->GetBinLabel(daqid+1))<2)
381 mTrigBits->GetXaxis()->SetBinLabel(daqid+1,dbTriggerId->getName(iTrg));
384 if (!mNullPrimVtx) BookHist();
386 multiplicity =
event->trackNodes().size();
391 case (StQA_AuAuOld): {
392 if (multiplicity < 50) evClasses[0] = 0;
393 else if (multiplicity < 500) evClasses[0] = 1;
394 else if (multiplicity < 2500) evClasses[0] = 2;
395 else evClasses[0] = 3;
409 case (StQA_dAu) :
break;
410 default: nEvClasses=1; evClasses[0] = 1;
414 int makeStat =
kStOk;
418 primVtx =
event->primaryVertex();
425 Float_t min_rank = -1e6;
426 switch (primVtx->vertexFinderId()) {
427 case minuitVertexFinder : min_rank = -5;
break;
428 case ppvVertexFinder :
429 case ppvNoCtbVertexFinder : min_rank = 0;
break;
432 if (primVtx->ranking() >= min_rank &&
433 ((float) (primVtx->numMatchesWithBEMC() +
434 primVtx->numMatchesWithEEMC() +
435 primVtx->numMatchesWithBTOF() +
436 primVtx->numTracksCrossingCentralMembrane())) >
437 ((float) (primVtx->numberOfDaughters())) * 0.199) {
441 LOG_WARN <<
"questionable primary vertex found" << endm;
448 LOG_WARN <<
"no primary vertex found!" << endm;
450 mNullPrimVtx->Fill(vertExists);
452 for (eventClassIdx=0; eventClassIdx<nEvClasses; eventClassIdx++) {
453 eventClass = evClasses[eventClassIdx];
455 if ((evClasses[eventClassIdx]) && (
histsSet != StQA_MC) && (
hists))
456 hists->mNullPrimVtxClass->Fill(vertExists);
457 if (makeStat !=
kStOk)
break;
465 void StEventQAMaker::MakeHistGlob() {
468 gMessMgr->Info(
" *** in StEventQAMaker - filling global track histograms ");
470 if (!allTrigs && vertExists <= 0)
return;
472 StSPtrVecTrackNode &theNodes =
event->trackNodes();
474 if (primVtx) pvert = primVtx->position();
486 for (UInt_t i=0; i<theNodes.size(); i++) {
487 StTrackType estOrGlobal = estGlobal;
488 StTrack *globtrk = theNodes[i]->track(estOrGlobal);
490 estOrGlobal = global;
491 globtrk = theNodes[i]->track(estOrGlobal);
492 if (!globtrk)
continue;
494 cnttrk += theNodes[i]->entries(estOrGlobal);
497 if (map.trackTpcOnly()) cnttrkT++;
498 if (map.trackTpcSvt()) cnttrkTS++;
499 if (globtrk->flag() <= 0)
continue;
502 if ((map.hasHitInDetector(kTpcId) || map.hasHitInDetector(kiTpcId))
503 && PCThits(detInfo))
continue;
512 pT = geom->momentum().perp();
513 if (pT <= 1.e-10)
continue;
514 Float_t lmevpt = TMath::Log10(1e-30+pT*1000.0);
515 Float_t theta = TMath::ASin(1.) - geom->dipAngle();
516 Float_t thetad = theta/degree;
517 Float_t eta = geom->momentum().pseudoRapidity();
518 Float_t gmom = abs(geom->momentum());
519 Float_t lmevmom = TMath::Log10(1e-30+gmom*1000.0);
520 Float_t chisq0 = fTraits.chi2(0);
521 Float_t chisq1 = fTraits.chi2(1);
522 Float_t nfitnmax = (Float_t(fTraits.numberOfFitPoints())) /
523 (Float_t(globtrk->numberOfPossiblePoints())+1.e-10);
527 Float_t psi = geom->psi()/degree;
529 Float_t orphi = origin.phi()/degree;
530 if (orphi<0) orphi+=360;
531 Float_t fphi = firstPoint.phi()/degree;
532 if (fphi<0) fphi+=360;
542 Float_t xcenter = hx.
xcenter();
543 Float_t ycenter = hx.
ycenter();
544 Float_t rcircle = 1./hx.curvature();
545 Float_t centerOfCircleToFP = ::sqrt(::pow(xcenter-firstPoint.x(),2) +
546 ::pow(ycenter-firstPoint.y(),2));
547 Float_t centerOfCircleToLP = ::sqrt(::pow(xcenter-lastPoint.x(),2) +
548 ::pow(ycenter-lastPoint.y(),2));
549 Float_t azimdif = dif.perp();
550 if (rcircle<centerOfCircleToFP) azimdif *= -1.;
551 Float_t azimdifl = difl.perp();
552 if (rcircle<centerOfCircleToLP) azimdifl *= -1.;
553 Float_t radf = firstPoint.perp();
555 Float_t logImpact = TMath::Log10(1e-30+globtrk->impactParameter());
557 Float_t sImpact = (primVtx ? dcahx.geometricSignedDistance(pvert.x(),pvert.y()) : -999);
558 Float_t logCurvature = TMath::Log10(1e-30+geom->curvature());
574 for (
int detId=0; detId<kMaxDetectorId; detId++)
575 if (map.hasHitInDetector(static_cast<StDetectorId>(detId)))
583 if (map.trackTpcOnly()) {
587 if (map.trackTpcSvt())
589 if (map.trackTpcSvt() && radf>40)
596 Double_t ndf = 2*fTraits.numberOfFitPoints()-5;
597 Double_t probability = TMath::Prob(chisq0*ndf,(
int) ndf);
601 if (map.trackTpcOnly()) {
619 if (TMath::Abs(dcaToBeam.z()-pvert.z())<6) {
625 if (!eventClassIdx) m_glb_simpactTime->Fill(evtTime,sImpact);
626 if ((firstPoint.z() < 0) && (lastPoint.z() < 0)) {
630 if ((firstPoint.z() > 0) && (lastPoint.z() > 0)) {
646 StPtrVecHit tpc_hits = detInfo->hits(kTpcId);
647 for (UInt_t k=0;k<tpc_hits.size();k++) {
649 if ((Int_t) hit->padrow() < minpadrow) minpadrow = (Int_t) hit->padrow();
653 while (minpadrow < 72) {
655 if ((minpadrow <= 40 && map.hasHitInRow(kiTpcId,minpadrow)) ||
656 (minpadrow > 40 && map.hasHitInRow(kTpcId,minpadrow-27)))
661 while (minpadrow < 45) {
663 if (map.hasHitInRow(kTpcId,minpadrow))
break;
679 if (firstPoint.z() < 0) {
683 else if (firstPoint.z() > 0) {
715 if (firstPoint.z()<0)
723 Float_t(detInfo->numberOfPoints()));
725 Float_t(fTraits.numberOfFitPoints()));
728 Float_t(fTraits.numberOfFitPoints()));
731 if (primVtx && fabs(rcircle)>0.) {
732 double qwe = ::pow(firstPoint.x()-pvert.x(),2)
733 + ::pow(firstPoint.y()-pvert.y(),2);
734 qwe = ::sqrt(qwe)/(2*rcircle);
735 if (qwe>0.9999) qwe = 0.999;
736 Float_t denom = 2*rcircle*(::asin(qwe));
738 Float_t(TMath::Tan(geom->dipAngle())));
751 else if (silHists && (map.hasHitInDetector(kSvtId) || map.hasHitInDetector(kSsdId))) {
753 if (map.hasHitInDetector(kSsdId)) {
754 if (primVtx && TMath::Abs(pvert.z())<10 && TMath::Abs(eta)<1 &&
755 map.numberOfHits(kTpcId)>15) {
756 StPtrVecHit ssd_hits = detInfo->hits(kSsdId);
757 if (ssd_hits.size()) {
758 Float_t sphi = ssd_hits[0]->position().phi()/degree;
759 if (sphi<0) sphi+=360.;
760 hists->m_glb_ssd_phi->Fill(sphi);
765 if (map.trackTpcSvt()) {
786 if ((firstPoint.z() < 0) && (lastPoint.z() < 0)) {
790 if ((firstPoint.z() > 0) && (lastPoint.z() > 0)) {
835 Float_t(detInfo->numberOfPoints()));
837 Float_t(fTraits.numberOfFitPoints()));
839 Float_t(fTraits.numberOfFitPoints()));
843 double qwe = ::pow(firstPoint.x()-pvert.x(),2)
844 + ::pow(firstPoint.y()-pvert.y(),2);
845 qwe = ::sqrt(qwe)/(2*rcircle);
846 if (qwe>0.9999) qwe = 0.999;
847 Float_t denom = 2*rcircle*(::asin(qwe));
848 if (radf>40 && denom>0) {
850 Float_t(TMath::Tan(geom->dipAngle())));
852 if (radf<40 && denom>0) {
854 Float_t(TMath::Tan(geom->dipAngle())));
869 else if (ftpHists && map.trackFtpcEast()) {
892 if (fabs(firstPoint.z()-ftpcPadrowZPos[10])<=1)
894 if (fabs(firstPoint.z()-ftpcPadrowZPos[11])<=1)
896 if (fabs(firstPoint.z()-ftpcPadrowZPos[12])<=1)
898 if (fabs(firstPoint.z()-ftpcPadrowZPos[13])<=1)
900 if (fabs(firstPoint.z()-ftpcPadrowZPos[14])<=1)
902 if (fabs(firstPoint.z()-ftpcPadrowZPos[15])<=1)
904 if (fabs(firstPoint.z()-ftpcPadrowZPos[16])<=1)
906 if (fabs(firstPoint.z()-ftpcPadrowZPos[17])<=1)
908 if (fabs(firstPoint.z()-ftpcPadrowZPos[18])<=1)
910 if (fabs(firstPoint.z()-ftpcPadrowZPos[19])<=1)
935 Float_t(detInfo->numberOfPoints()));
938 else if (ftpHists && map.trackFtpcWest()) {
961 if (fabs(firstPoint.z()-ftpcPadrowZPos[0])<=1)
963 if (fabs(firstPoint.z()-ftpcPadrowZPos[1])<=1)
965 if (fabs(firstPoint.z()-ftpcPadrowZPos[2])<=1)
967 if (fabs(firstPoint.z()-ftpcPadrowZPos[3])<=1)
969 if (fabs(firstPoint.z()-ftpcPadrowZPos[4])<=1)
971 if (fabs(firstPoint.z()-ftpcPadrowZPos[5])<=1)
973 if (fabs(firstPoint.z()-ftpcPadrowZPos[6])<=1)
975 if (fabs(firstPoint.z()-ftpcPadrowZPos[7])<=1)
977 if (fabs(firstPoint.z()-ftpcPadrowZPos[8])<=1)
979 if (fabs(firstPoint.z()-ftpcPadrowZPos[9])<=1)
1004 Float_t(detInfo->numberOfPoints()));
1017 hists->m_globtrk_tot->Fill(cnttrk);
1034 if (
hists->m_glb_ssd_phi) {
1036 hists->m_glb_ssd_phi->SetBinContent(0,Nevents);
1037 hists->m_glb_ssd_phi->SetEntries(
hists->m_glb_ssd_phi->GetEntries()-1);
1048 void StEventQAMaker::MakeHistPrim() {
1051 gMessMgr->Info(
" *** in StEventQAMaker - filling primary track histograms ");
1053 if (!allTrigs && vertExists <= 0)
return;
1061 Int_t pTcnttrkgFE=0;
1062 Int_t pTcnttrkgFW=0;
1064 Float_t mean_ptTS=0;
1065 Float_t mean_ptFE=0;
1066 Float_t mean_ptFW=0;
1067 Float_t mean_etaT=0;
1068 Float_t mean_etaTS=0;
1069 Float_t mean_etaFE=0;
1070 Float_t mean_etaFW=0;
1075 cnttrk = primVtx->numberOfDaughters();
1079 for (UInt_t i=0; i<primVtx->numberOfDaughters(); i++) {
1080 StTrack *primtrk = primVtx->daughter(i);
1081 if (!primtrk)
continue;
1088 StTrack* estprimtrk = primtrk->node()->track(estPrimary);
1089 if (estprimtrk) primtrk = estprimtrk;
1090 if (primtrk->bad())
continue;
1093 if (primtrk->flag()>0) {
1096 if ((map.hasHitInDetector(kTpcId) || map.hasHitInDetector(kiTpcId))
1097 && PCThits(detInfo))
continue;
1108 StTrack *gtrack = primtrk->node()->track(estGlobal);
1109 if (!gtrack || gtrack->bad()) {
1110 gtrack = primtrk->node()->track(global);
1111 if (!gtrack || gtrack->bad())
continue;
1114 Int_t nhit_prim_fit = fTraits.numberOfFitPoints();
1115 Int_t nhit_glob_fit = gfTraits.numberOfFitPoints();
1121 pT = geom->momentum().perp();
1122 Float_t lmevpt = TMath::Log10(1e-30+pT*1000.0);
1123 Float_t theta = TMath::ASin(1.) - geom->dipAngle();
1124 Float_t thetad = theta/degree;
1125 Float_t eta = geom->momentum().pseudoRapidity();
1126 Float_t gmom = abs(geom->momentum());
1127 Float_t lmevmom = TMath::Log10(1e-30+gmom*1000.0);
1128 Float_t chisq0 = fTraits.chi2(0);
1129 Float_t chisq1 = fTraits.chi2(1);
1130 Float_t nfitnmax = (Float_t(fTraits.numberOfFitPoints())) /
1131 (Float_t(primtrk->numberOfPossiblePoints())+1.e-10);
1132 Float_t logCurvature = TMath::Log10(1e-30+geom->curvature());
1137 Float_t psi = geom->psi()/degree;
1138 if (psi<0) psi+=360;
1139 Float_t orphi = origin.phi()/degree;
1140 if (orphi<0) orphi+=360;
1153 Float_t xcenter = hx.
xcenter();
1154 Float_t ycenter = hx.
ycenter();
1155 Float_t rcircle = 1./hx.curvature();
1156 Float_t centerOfCircleToFP = ::sqrt(::pow(xcenter-firstPoint.x(),2) +
1157 ::pow(ycenter-firstPoint.y(),2));
1158 Float_t centerOfCircleToLP = ::sqrt(::pow(xcenter-lastPoint.x(),2) +
1159 ::pow(ycenter-lastPoint.y(),2));
1160 Float_t azimdif = dif.perp();
1161 if (rcircle<centerOfCircleToFP) azimdif *= -1.;
1162 Float_t azimdifl = difl.perp();
1163 if (rcircle<centerOfCircleToLP) azimdifl *= -1.;
1168 double sFirstOuter = ohx.
pathLength(firstPoint);
1169 double sLastOuter = ohx.
pathLength(lastPoint);
1172 Float_t outerXcenter = ohx.
xcenter();
1173 Float_t outerYcenter = ohx.
ycenter();
1174 Float_t outerRcircle = 1./(ohx.curvature()+1.e-10);
1175 Float_t outerCenterOfCircleToFP = ::sqrt(::pow(outerXcenter-firstPoint.x(),2) +
1176 ::pow(outerYcenter-firstPoint.y(),2));
1177 Float_t outerCenterOfCircleToLP = ::sqrt(::pow(outerXcenter-lastPoint.x(),2) +
1178 ::pow(outerYcenter-lastPoint.y(),2));
1179 Float_t outerAzimdif = outerDif.perp();
1180 if (outerRcircle<outerCenterOfCircleToFP) outerAzimdif *= -1.;
1181 Float_t outerAzimdifl = outerDifl.perp();
1182 if (outerRcircle<outerCenterOfCircleToLP) outerAzimdifl *= -1.;
1184 Float_t radf = firstPoint.perp();
1187 for (
int detId=0; detId<kMaxDetectorId; detId++)
1188 if (map.hasHitInDetector(static_cast<StDetectorId>(detId)))
1192 if (map.trackTpcOnly()) {
1195 mean_ptT += geom->momentum().perp();
1211 if (event->summary()) {
1213 mHitHist->setTrack(primtrk);
1214 mHitHist->setBField(event->summary()->magneticField());
1215 mHitHist->findHits();
1216 mHitHist->fillHistograms();
1253 if (firstPoint.z()<0)
1261 Float_t(detInfo->numberOfPoints()));
1263 Float_t(fTraits.numberOfFitPoints()));
1266 Float_t(fTraits.numberOfFitPoints()));
1270 double qwe = ::pow(firstPoint.x()-pvert.x(),2)
1271 + ::pow(firstPoint.y()-pvert.y(),2);
1272 qwe = ::sqrt(qwe)/(2*rcircle);
1273 if (qwe>0.9999) qwe = 0.999;
1274 Float_t denom = 2*rcircle*(::asin(qwe));
1276 Float_t(TMath::Tan(geom->dipAngle())));
1287 else if (silHists && (map.hasHitInDetector(kSvtId) || map.hasHitInDetector(kSsdId))) {
1289 if (map.hasHitInDetector(kSsdId)) {
1290 if (TMath::Abs(pvert.z())<10 && TMath::Abs(eta)<1 &&
1291 map.numberOfHits(kTpcId)>15) {
1292 StPtrVecHit ssd_hits = detInfo->hits(kSsdId);
1293 if (ssd_hits.size()) {
1294 Float_t sphi = ssd_hits[0]->position().phi()/degree;
1295 if (sphi<0) sphi+=360.;
1296 hists->m_prim_ssd_phi->Fill(sphi);
1301 if (map.trackTpcSvt()) {
1305 mean_ptTS += geom->momentum().perp();
1352 Float_t(detInfo->numberOfPoints()));
1354 Float_t(fTraits.numberOfFitPoints()));
1356 Float_t(fTraits.numberOfFitPoints()));
1359 double qwe = ::pow(firstPoint.x()-pvert.x(),2)
1360 + ::pow(firstPoint.y()-pvert.y(),2);
1361 qwe = ::sqrt(qwe)/(2*rcircle);
1362 if (qwe>0.9999) qwe = 0.999;
1363 Float_t denom = 2*rcircle*(::asin(qwe));
1365 Fill((firstPoint.z() - pvert.z())/denom,
1366 Float_t(TMath::Tan(geom->dipAngle())));
1368 Fill((firstPoint.z() - pvert.z())/denom,
1369 Float_t(TMath::Tan(geom->dipAngle())));
1379 StPtrVecHit svt_hits = detInfo->hits(kSvtId);
1380 for (UInt_t k=0; k<svt_hits.size(); k++) {
1389 else if (map.trackFtpcEast()) {
1392 mean_ptFE += geom->momentum().perp();
1437 Float_t(detInfo->numberOfPoints()));
1441 else if (map.trackFtpcWest()) {
1444 mean_ptFW += geom->momentum().perp();
1489 Float_t(detInfo->numberOfPoints()));
1510 mean_ptT /= (cnttrkgT +1.e-10);
1511 mean_ptFE /= (pTcnttrkgFE+1.e-10);
1512 mean_ptFW /= (pTcnttrkgFW+1.e-10);
1513 mean_etaT /= (cnttrkgT +1.e-10);
1514 mean_etaFE /= (cnttrkgFE +1.e-10);
1515 mean_etaFW /= (cnttrkgFW +1.e-10);
1517 mean_ptTS /= (cnttrkgTS +1.e-10);
1518 mean_etaTS /= (cnttrkgTS +1.e-10);
1542 if (
hists->m_prim_ssd_phi) {
1544 hists->m_prim_ssd_phi->SetBinContent(0,Nevents);
1545 hists->m_prim_ssd_phi->SetEntries(
hists->m_prim_ssd_phi->GetEntries()-1);
1551 void StEventQAMaker::MakeHistPID() {
1554 gMessMgr->Info(
" *** in StEventQAMaker - filling dE/dx histograms ");
1556 if (vertExists <= 0)
return;
1558 StSPtrVecTrackNode &theNodes =
event->trackNodes();
1560 for (UInt_t i=0; i<theNodes.size(); i++) {
1561 StTrack *theTrack = theNodes[i]->track(global);
1562 if (!theTrack || theTrack->bad())
continue;
1564 if (!pTrack || pTrack->bad() || pTrack->vertex() != primVtx)
continue;
1567 StSPtrVecTrackPidTraits &trkPidTr = theTrack->pidTraits();
1570 for (
unsigned int itrait=0; itrait<trkPidTr.size();itrait++) {
1575 if (dedxPidTr && dedxPidTr->method() == kTruncatedMeanId) {
1576 int ndedx = dedxPidTr->numberOfPoints();
1577 double dedx = dedxPidTr->mean();
1578 double error = dedxPidTr->errorOnMean();
1579 double p = abs(theTrack->geometry()->momentum());
1580 if (dedxPidTr->detector() == kTpcId) {
1581 Float_t pionExpected = Bichsel::Instance()->GetI70M(
1582 TMath::Log10(theTrack->geometry()->momentum().mag()/pion_minus_mass_c2));
1583 pionExpected *= 1.e-6;
1592 if (dedxPidTr->detector() == kTpcSvtId) {
1593 Float_t pionExpected = Bichsel::Instance()->GetI70M(
1594 TMath::Log10(theTrack->geometry()->momentum().mag()/pion_minus_mass_c2));
1595 pionExpected *= 1.e-6;
1598 if (dedxPidTr->detector() == kFtpcWestId) {
1606 if (dedxPidTr->detector() == kFtpcEastId) {
1621 void StEventQAMaker::MakeHistVertex() {
1624 gMessMgr->Info(
" *** in StEventQAMaker - filling vertex histograms ");
1626 if (!allTrigs && vertExists <= 0)
return;
1628 Float_t m_prmass2 = (proton_mass_c2*proton_mass_c2);
1629 Float_t m_pimass2 = (pion_minus_mass_c2*pion_minus_mass_c2);
1630 Float_t m_lamass2 = (lambda_mass_c2*lambda_mass_c2);
1635 pvert = primVtx->position();
1637 for (UInt_t j=0; j<
event->numberOfPrimaryVertices(); j++) {
1640 if (aPrimVtx == primVtx) {
1642 if (!std::isnan(
double(pvert.x())))
1644 if (!std::isnan(
double(pvert.y())))
1646 if (!std::isnan(
double(pvert.z())))
1650 pvert.y()*pvert.y());
1655 if (!std::isnan(
double(apvert.x())))
1657 if (!std::isnan(
double(apvert.y())))
1659 if (!std::isnan(
double(apvert.z())))
1663 apvert.y()*apvert.y());
1668 for (UInt_t j=0; j<
event->numberOfCalibrationVertices(); j++) {
1670 if (aCalibVtx->type() == 6 ) {
1672 aCalibVtx->position().y() - pvert.y());
1675 if (aCalibVtx->type() == 7 ) {
1677 aCalibVtx->position().y() - pvert.y());
1684 gMessMgr->Info(
" *** in StEventQAMaker - filling dst_v0_vertex histograms ");
1686 StSPtrVecV0Vertex &v0Vtx =
event->v0Vertices();
1687 UInt_t v0Vtxs = v0Vtx.size();
1688 hists->
m_v0->Fill( v0Vtxs ? TMath::Log10(v0Vtxs) : -0.5 );
1690 for (UInt_t k=0; k<v0Vtxs; k++) {
1692 if ((v0) && (v0->dcaParentToPrimaryVertex() >= 0.)) {
1693 Float_t e1a = ::pow(abs(v0->momentumOfDaughter(positive)),2);
1694 Float_t e2 = ::pow(abs(v0->momentumOfDaughter(negative)),2);
1695 Float_t e1 = e1a + m_prmass2;
1697 e1 = TMath::Sqrt(e1);
1698 e2 = TMath::Sqrt(e2);
1699 Float_t p = ::pow(abs(v0->momentum()),2);
1700 Float_t inv_mass_la = TMath::Sqrt((e1+e2)*(e1+e2) - p);
1701 e1 = e1a + m_pimass2;
1702 e1 = TMath::Sqrt(e1);
1703 Float_t inv_mass_k0 = TMath::Sqrt((e1+e2)*(e1+e2) - p);
1709 if (!std::isnan(
double(v0->position().x())))
1711 if (!std::isnan(
double(v0->position().y())))
1713 if (!std::isnan(
double(v0->position().z())))
1716 hists->
m_v_r->Fill(v0->position().x()*v0->position().x() +
1717 v0->position().y()*v0->position().y());
1719 if (!(std::isnan(
double(v0->position().x())) ||
1720 std::isnan(
double(v0->position().y())))) {
1721 Float_t phi = atan2(v0->position().y() - pvert.y(),
1722 v0->position().x() - pvert.x())
1724 if (phi<0.) phi += 360.;
1727 Float_t r_dist = ::sqrt(::pow(v0->position().x()-pvert.x(),2)+
1728 ::pow(v0->position().y()-pvert.y(),2));
1736 gMessMgr->Info(
" *** in StEventQAMaker - filling dst_xi_vertex histograms ");
1738 StSPtrVecXiVertex &xiVtx =
event->xiVertices();
1739 UInt_t xiVtxs = xiVtx.size();
1740 hists->
m_xi_tot->Fill( xiVtxs ? TMath::Log10(xiVtxs) : -0.5 );
1742 for (UInt_t l=0; l<xiVtxs; l++) {
1748 Float_t pP2 = pMom.mag2();
1749 Float_t pL2 = lMom.mag2();
1750 Float_t pX2 = xMom.mag2();
1751 Float_t epi = ::sqrt(pP2 + m_pimass2);
1752 Float_t ela = ::sqrt(pL2 + m_lamass2);
1753 Float_t eXi = ela + epi;
1754 Float_t inv_mass_xi = ::sqrt(eXi*eXi - pX2);
1759 if (!std::isnan(
double(xi->position().x())))
1761 if (!std::isnan(
double(xi->position().y())))
1763 if (!std::isnan(
double(xi->position().z())))
1766 hists->
m_v_r->Fill(xi->position().x()*xi->position().x() +
1767 xi->position().y()*xi->position().y());
1773 gMessMgr->Info(
" *** in StEventQAMaker - filling kink histograms ");
1775 StSPtrVecKinkVertex &kinkVtx =
event->kinkVertices();
1776 UInt_t kinkVtxs = kinkVtx.size();
1779 for (UInt_t m=0; m<kinkVtxs; m++) {
1784 if (!std::isnan(
double(kink->position().x())))
1786 if (!std::isnan(
double(kink->position().y())))
1788 if (!std::isnan(
double(kink->position().z())))
1791 hists->
m_v_r->Fill(kink->position().x()*kink->position().x() +
1792 kink->position().y()*kink->position().y());
1796 UInt_t cntrows =
event->numberOfPrimaryVertices() +
1797 v0Vtxs + xiVtxs + kinkVtxs;
1805 void StEventQAMaker::MakeHistPoint() {
1808 gMessMgr->Info(
" *** in StEventQAMaker - filling point histograms ");
1815 ULong_t totalHits = 0;
1816 ULong_t ftpcHitsE = 0;
1817 ULong_t ftpcHitsW = 0;
1823 for (UInt_t i=0; i<tpcHits->numberOfSectors(); i++) {
1825 unsigned int innerRows = St_tpcPadConfigC::instance()->numberOfInnerRows(i+1);
1826 for (UInt_t j=0; j<tpcHitsSector->numberOfPadrows(); j++) {
1827 StSPtrVecTpcHit& tpcHitsVec = tpcHitsSector->padrow(j)->hits();
1828 for (UInt_t k=0; k<tpcHitsVec.size(); k++) {
1829 hitPos = tpcHitsVec[k]->position();
1830 Float_t phi = hitPos.phi()/degree;
1831 if (phi<0) phi+=360.;
1833 Float_t tb = tpcHitsVec[k]->timeBucket();
1834 if (printTpcHits) printf(
"HHHH %d %d %d %f %f %f %f %f %d\n",qaEvents,
1835 tpcHitsVec[k]->sector(),tpcHitsVec[k]->padrow(),
1836 hitPos.x(),hitPos.y(),hitPos.z(),
1837 tpcHitsVec[k]->pad(),tb,tpcHitsVec[k]->flag());
1840 float density_correction = (j<innerRows ? (innerRows == 13 ? 4.8/2.0 : 1.6/2.0) : 2.0/2.0);
1842 float hit_charge = tpcHitsVec[k]->charge() * density_correction * (j<innerRows ? (innerRows == 13 ? 1.95/1.15 : 1.95/1.55) : 1.95/1.95);
1845 if (!eventClassIdx) {
1848 if (j < innerRows) {
1849 if ((tpcHitsVec[k]->flag() == 0 || tpcHitsVec[k]->flag() == 2) && (tpcHitsVec[k]->adc() > 40)) {
1850 m_tpc_clust_pxltb->Fill(i+1,tpcHitsVec[k]->maxTmbk() - tpcHitsVec[k]->minTmbk()+1);
1851 m_tpc_clust_pxlp->Fill(i+1,tpcHitsVec[k]->maxPad() - tpcHitsVec[k]->minPad()+1);
1852 if ((tb > tblow) && (tb < tbhigh)) {
1861 if ((tpcHitsVec[k]->flag() == 0) && (tpcHitsVec[k]->adc() > 15)) {
1864 if ((tb > tblow) && (tb < tbhigh)) {
1883 if (!eventClassIdx) m_pnt_rpTQE->Fill(hitPos.perp(),phi*degree,hit_charge);
1890 if (!eventClassIdx) m_pnt_rpTQW->Fill(hitPos.perp(),phi*degree,hit_charge);
1892 if (!eventClassIdx) {
1893 hitPos.rotateZ(((
float) rotator)*TMath::Pi()/6.0);
1894 mTpcSectorPlot[i]->Fill(hitPos.x(),(float) (j+1));
1900 totalHits += tpcHits->numberOfHits();
1903 Int_t SvtLaser1 = 0;
1904 Int_t SvtLaser2 = 0;
1905 Float_t SvtLaser1t[32];
1906 Float_t SvtLaser2t[32];
1907 ULong_t totalSvtHits = 0;
1908 for (UInt_t i=0; i<svtHits->numberOfBarrels(); i++) {
1910 for (UInt_t j=0; j<svtbarrel->numberOfLadders(); j++) {
1912 for (UInt_t k=0; k<svtladder->numberOfWafers(); k++) {
1913 StSPtrVecSvtHit& svtwaferhits = svtladder->wafer(k)->hits();
1914 for (UInt_t l=0; l<svtwaferhits.size(); l++) {
1915 StSvtHit* svthit = svtwaferhits[l];
1916 if (svthit->flag() < 4) {
1917 hitPos = svthit->position();
1918 Float_t x = hitPos.x();
1919 Float_t y = hitPos.y();
1920 Float_t z = hitPos.z();
1921 Float_t phi = hitPos.phi()/degree;
1922 if (phi<0) phi+=360.;
1932 if (i==2 && j==14 && k==6 && svthit->hybrid() == 1 &&
1933 svthit->anode() >= 195 && svthit->anode() <= 204 &&
1934 svthit->timebucket() >= 90) {
1936 SvtLaser1t[SvtLaser1] = svthit->timebucket();
1937 for (Int_t m=0;m<SvtLaser1;m++)
1939 TMath::Abs(SvtLaser1t[SvtLaser1]-SvtLaser1t[m]),0);
1943 if (i==2 && j==6 && k==0 && svthit->hybrid() == 2 &&
1944 svthit->anode() >= 195 && svthit->anode() <= 204 &&
1945 svthit->timebucket() >= 90) {
1947 SvtLaser2t[SvtLaser2] = svthit->timebucket();
1948 for (Int_t m=0;m<SvtLaser2;m++)
1950 TMath::Abs(SvtLaser2t[SvtLaser2]-SvtLaser2t[m]),1);
1958 hists->m_pnt_svt->Fill(totalSvtHits);
1959 totalHits += totalSvtHits;
1962 for (UInt_t j=0; j<ssdHits->numberOfLadders(); j++) {
1964 for (UInt_t k=0; k<ssdladder->numberOfWafers(); k++) {
1965 StSPtrVecSsdHit& ssdwaferhits = ssdladder->wafer(k)->hits();
1966 for (UInt_t l=0; l<ssdwaferhits.size(); l++) {
1967 StSsdHit* ssdhit = ssdwaferhits[l];
1968 hitPos = ssdhit->position();
1969 Float_t x = hitPos.x();
1970 Float_t y = hitPos.y();
1971 Float_t phi = hitPos.phi()/degree;
1972 if (phi<0) phi += 360.;
1974 hists->m_pnt_lwSSD->Fill(j+1,k+1);
1976 hists->m_pnt_sizeSSD->Fill(ssdhit->clusterSizePSide(),0);
1977 hists->m_pnt_sizeSSD->Fill(ssdhit->clusterSizeNSide(),1);
1978 hists->m_pnt_eSSD->Fill(TMath::Log10(fabs(ssdhit->charge())+1e-33));
1985 hists->m_pnt_lwSSD->SetBinContent(0,Nevents);
1987 hists->m_pnt_lwSSD->SetEntries(
hists->m_pnt_lwSSD->GetEntries()-1);
1992 for (UInt_t i=0; i<ftpcHits->numberOfPlanes(); i++) {
1993 for (UInt_t j=0; j<ftpcHits->plane(i)->numberOfSectors(); j++)
1994 for (UInt_t k=0; k<ftpcHits->plane(i)->sector(j)->hits().size(); k++) {
1995 Float_t x = ftpcHits->plane(i)->sector(j)->hits()[k]->position().x();
1996 Float_t y = ftpcHits->plane(i)->sector(j)->hits()[k]->position().y();
1997 Int_t npads = ftpcHits->plane(i)->sector(j)->hits()[k]->padsInHit();
1998 Int_t ntimebins = ftpcHits->plane(i)->sector(j)->hits()[k]->timebinsInHit();
1999 UInt_t trackReferenceCount = ftpcHits->plane(i)->sector(j)->hits()[k]->trackReferenceCount();
2013 ftpcHitsW += ftpcHits->plane(i)->numberOfHits();
2015 ftpcHitsE += ftpcHits->plane(i)->numberOfHits();
2023 totalHits += ftpcHits->numberOfHits();
2027 totalHits += ssdHits->numberOfHits();
2036 void StEventQAMaker::MakeHistEMC() {
2039 gMessMgr->Info(
" *** in StEventQAMaker - filling EMC histograms ");
2043 if (!emccol)
return;
2052 StDetectorId
id = StEmcMath::detectorId(det);
2057 for(UInt_t j=1;j<121;j++){
2060 StSPtrVecEmcRawHit& rawHit=module->hits();
2062 Int_t m,e,s,adc,sId,stripInMod;
2063 Float_t eta(0),phi(0),E(0);
2064 nh += rawHit.size();
2065 for(UInt_t k=0;k<rawHit.size();k++){
2066 m = rawHit[k]->module();
2067 e = rawHit[k]->eta();
2068 s = rawHit[k]->sub();
2069 emcGeom[i]->getId(m, e, s, sId);
2070 stripInMod = sId % 150;
2071 if (stripInMod==0) stripInMod=150;
2074 adc = rawHit[k]->adc();
2075 E = rawHit[k]->energy();
2076 emcGeom[i]->getEta(m, e, eta);
2077 emcGeom[i]->getPhi(m, s, phi);
2078 hists->m_emc_hits[i]->Fill(eta,phi);
2079 hists->m_emc_energy2D[i]->Fill(eta,phi,E);
2080 hists->m_emc_adc[i]->Fill(
float(adc));
2081 hists->m_emc_energy[i]->Fill(E);
2085 Int_t modIndex = (m-1)/30;
2086 Int_t histIndex = modIndex;
2087 if (i>2) histIndex = modIndex + 4;
2089 hists->m_emc_hits_per_module[histIndex]->Fill(m);
2090 hists->m_emc_energy_per_module[histIndex]->Fill(m,E);
2091 hists->m_emc_strip_hits_per_module[histIndex]->Fill(m,stripInMod);
2092 hists->m_emc_strip_energy_per_module[histIndex]->Fill(m,stripInMod,E);
2101 if(nh>0)
hists->
m_emc_nhit->Fill(log10(1e-30+Double_t(nh)), Float_t(det));
2102 if(energy>0)
hists->m_emc_etot->Fill(log10(1e-30+Double_t(energy)), Float_t(det));
2109 for(i=0; i<4; i++) {
2110 Int_t det = i+1, nh;
2111 StDetectorId
id = StEmcMath::detectorId(det);
2118 StSPtrVecEmcCluster& cluster = clusters->clusters();
2120 if(cluster.size()>0)
2122 hists->m_emc_ncl->Fill(log10(1e-30+Double_t(cluster.size())),(Float_t)det);
2123 Float_t Etot=0.0, eta, phi, sigEta, sigPhi, eCl;
2124 for(UInt_t j=0;j<cluster.size();j++){
2125 nh = cluster[j]->nHits();
2126 eCl = cluster[j]->energy();
2127 eta = cluster[j]->eta();
2128 sigEta = cluster[j]->sigmaEta();
2129 phi = cluster[j]->phi();
2130 sigPhi = cluster[j]->sigmaPhi();
2131 if(sigEta > 0)
hists->m_emc_sig_e->Fill(sigEta, Axis_t(det));
2132 if(sigPhi > 0.0)
hists->m_emc_sig_p->Fill(sigPhi, Axis_t(det));
2134 hists->m_emc_cl[det-1]->Fill(Axis_t(eta), Axis_t(phi));
2135 hists->m_emc_energyCl[det-1]->Fill(Axis_t(eta), Axis_t(phi), eCl);
2136 hists->m_emc_HitsInCl[det-1]->Fill(Axis_t(nh));
2137 hists->m_emc_EnergyCl[det-1]->Fill(Axis_t(eCl));
2138 hists->m_emc_EtaInCl[det-1]->Fill(Axis_t(eta));
2139 hists->m_emc_PhiInCl[det-1]->Fill(Axis_t(phi));
2142 hists->m_emc_etotCl->Fill(log10(1e-30+Etot), Axis_t(det));
2152 StSPtrVecEmcPoint& pointvec = emccol->barrelPoints();
2154 Int_t Point_Mult[4];
2155 for(i=0;i<4;i++) {Point_Mult[i]=0;}
2157 for(i=0;i<pointvec.size();i++) {
2173 Float_t EnergyDet[4];
2174 for(UInt_t ie=0;ie<4;ie++) {EnergyDet[ie]=0.0;}
2176 for(Int_t j=0;j<4;j++) {
2177 StDetectorId detid =
static_cast<StDetectorId
>(j+kBarrelEmcTowerId);
2178 EnergyDet[j] = point->energyInDetector(detid);
2182 if(EnergyDet[2]==0 && EnergyDet[3] ==0) {
2184 }
else if(EnergyDet[2]>0 && EnergyDet[3] ==0) {
2186 }
else if(EnergyDet[2]==0 && EnergyDet[3]>0) {
2193 Float_t energy=point->energy();
2194 Float_t sigmaeta=sizeP.x();
2195 Float_t sigmaphi=sizeP.y();
2196 Float_t trackmom=point->chiSquare();
2197 Float_t deltaeta=point->deltaEta();
2198 Float_t deltaphi=point->deltaPhi();
2201 if (energy>0)
hists->m_emc_point_energy[ncat]->Fill(energy);
2218 gMessMgr->Info(
" *** in StEventQAMaker - Finished filling EMC histograms ");
2222 void StEventQAMaker::MakeHistEval() {
2226 gMessMgr->Info(
" *** in StEventQAMaker - filling Eval histograms ");
2229 if (!mcEvent)
return;
2230 StMcVertex* mcprimaryVertex = mcEvent->primaryVertex();
2231 if ((primVtx) && (mcprimaryVertex)) {
2232 Float_t geantX = mcprimaryVertex->position().x();
2233 Float_t geantY = mcprimaryVertex->position().y();
2234 Float_t geantZ = mcprimaryVertex->position().z();
2235 Float_t recoX = primVtx->position().x();
2236 Float_t recoY = primVtx->position().y();
2237 Float_t recoZ = primVtx->position().z();
2246 void StEventQAMaker::MakeHistBBC() {
2253 for (i=0; i<32; i++) {
2255 hists->m_bbc_tdc[i/8]->Fill(bbc.tdc(i),i%8);
2260 void StEventQAMaker::MakeHistFPD() {
2265 unsigned short* dfpd = fpd->adc();
2268 for (i=0; i<16; i++) {
2269 hists->m_fpd_top[i/8]->Fill((
float) dfpd[i],i%8);
2270 hists->m_fpd_bottom[i/8]->Fill((
float) dfpd[i+16],i%8);
2271 hists->m_fpd_south[i/8]->Fill((
float) dfpd[i+32],i%8);
2272 if (i<12)
hists->m_fpd_north[i/6]->Fill((
float) dfpd[i+48],i%6);
2275 hists->m_fpd_sums[0]->Fill((
float) fpd->sumAdcTop());
2276 hists->m_fpd_sums[1]->Fill((
float) fpd->sumAdcBottom());
2277 hists->m_fpd_sums[2]->Fill((
float) fpd->sumAdcSouth());
2278 hists->m_fpd_sums[3]->Fill((
float) fpd->sumAdcNorth());
2279 hists->m_fpd_sums[4]->Fill((
float) fpd->sumAdcSmdX());
2280 hists->m_fpd_sums[5]->Fill((
float) fpd->sumAdcSmdY());
2281 hists->m_fpd_sums[6]->Fill((
float) fpd->sumAdcPreShower1());
2282 hists->m_fpd_sums[7]->Fill((
float) fpd->sumAdcPreShower2());
2286 void StEventQAMaker::MakeHistPMD() {
2291 if (!phmdcl)
return;
2292 Int_t runNumber=
event->runId();
2293 Int_t eventID=
event->id();
2294 if (runNumber != mRunNumber) {
2295 mRunNumber = runNumber;
2296 if (!mPmdGeom) mPmdGeom =
new StPmdGeom();
2297 mPmdGeom->readBoardDetail(mRunNumber);
2298 if (maputil)
delete maputil;
2304 for (Int_t d=0;d<2;d++) {
2306 Int_t TOTAL_HIT_DETECTOR=0;
2307 Int_t TOTAL_ADC_DETECTOR=0;
2310 StDetectorId pdet =
static_cast<StDetectorId
>(kPhmdCpvId+d);
2313 for (UInt_t j=0;j<12;j++) {
2318 StSPtrVecPhmdHit& rawHit=module->hits();
2319 if (rawHit.size()>0) {
2320 for (Int_t k=0;k<(Int_t)rawHit.size();k++) {
2321 Int_t sm=rawHit[k]->superModule();
2322 Int_t row=rawHit[k]->row();
2323 Int_t col=rawHit[k]->column();
2324 Int_t adc=rawHit[k]->adc();
2327 Int_t chainR, channelOR, channelCR;
2329 maputil->ReverseChannelOriginal(sm+13,row+1,col+1,channelOR);
2330 maputil->ReverseChannelConverted(sm+13,row+1,col+1,channelCR);
2331 maputil->ChainNumber(sm+13,row+1,col+1,chainR);
2333 maputil->ReverseChannelOriginal(sm+1,row+1,col+1,channelOR);
2334 maputil->ReverseChannelConverted(sm+1,row+1,col+1,channelCR);
2335 maputil->ChainNumber(sm+1,row+1,col+1,chainR);
2346 TOTAL_HIT_DETECTOR++;;
2347 TOTAL_ADC_DETECTOR+=adc;
2352 hists->m_pmd_sm_hit[smid/2]->Fill(TotalHit,smid%2);
2353 if (TotalHit<=0)
continue;
2354 hists->m_pmd_sm_adc[smid/2]->Fill(TotalAdc/TotalHit,smid%2);
2358 hists->m_pmd_total_hit->Fill(eventID,TMath::Log10(1e-30+TOTAL_HIT_DETECTOR));
2359 hists->m_pmd_total_adc->Fill(eventID,TMath::Log10(1e-30+TOTAL_ADC_DETECTOR));
2361 hists->m_cpv_total_hit->Fill(eventID,TMath::Log10(1e-30+TOTAL_HIT_DETECTOR));
2362 hists->m_cpv_total_adc->Fill(eventID,TMath::Log10(1e-30+TOTAL_ADC_DETECTOR));
2369 int runId =
event->runId();
2370 if(runId>10000000) {
2373 if (!btofcol)
return;
2376 double vz_tpc = -999.;
2377 if(primVtx) vz_tpc = primVtx->position().z();
2380 StSPtrVecBTofHit &tofHits = btofcol->tofHits();
2381 Int_t nTofHits = tofHits.size();
2382 Int_t nHitsvsTray[120] = {0};
2383 Int_t nHitsvsModule[2][32] = {{0},{0}};
2385 Int_t nHitsVpd[2] = {0};
2387 Int_t nCellvsTray[120] = {0};
2388 Int_t nCellvsModule[2][32] = {{0},{0}};
2390 for(i=0;i<nTofHits;i++) {
2393 int trayId = aHit->tray();
2394 int moduleId = aHit->module();
2395 if(trayId>0 && trayId<=120) {
2396 nHitsvsTray[trayId-1]++;
2397 nHitsvsModule[(trayId-1)/60][moduleId]++;
2401 nCellvsTray[trayId-1]++;
2402 nCellvsModule[(trayId-1)/60][moduleId]++;
2406 const StPtrVecTrackPidTraits& theTofPidTraits = pTrk->pidTraits(kTofId);
2407 if(!theTofPidTraits.size())
continue;
2409 StTrackPidTraits *theSelectedTrait = theTofPidTraits[theTofPidTraits.size()-1];
2410 if(!theSelectedTrait)
continue;
2413 if(!pidTof)
continue;
2415 double ptot = pTrk->geometry()->momentum().mag();
2416 double beta = pidTof->beta();
2422 nHitsVpd[trayId-121]++;
2425 for(i=0;i<120;i++) {
2442 double TSumEast = 0.;
2443 double TSumWest = 0.;
2446 for(i=0;i<nTofHits;i++) {
2449 int trayId = aHit->tray();
2450 int tubeId = aHit->cell();
2451 if(trayId==mEastVpdTrayId) {
2452 TSumEast += aHit->leadingEdgeTime() - mEastVpdCorr[tubeId-1];
2454 }
else if (trayId==mWestVpdTrayId) {
2455 TSumWest += aHit->leadingEdgeTime() - mWestVpdCorr[tubeId-1];
2459 double vz_vpd = -999.;
2460 if(nEast&&nWest) vz_vpd = (TSumEast/nEast - TSumWest/nWest)/2./29.979;
2469 if (!tofcol)
return;
2472 double vz_tpc = -999.;
2473 if(primVtx) vz_tpc = primVtx->position().z();
2476 StSPtrVecTofData &tofData = tofcol->tofData();
2477 Int_t nTofData = tofData.size();
2478 Int_t nHitsvsTray[120] = {0};
2479 Int_t nHitsvsModule[2][32] = {{0},{0}};
2481 Int_t nHitsVpd[2] = {0};
2482 for(i=0;i<nTofData;i++) {
2485 int index = aHit->dataIndex();
2486 int trayId = index/192 + 1;
2487 int moduleId = ( index%192 )/6 + 1;
2488 if(trayId>0 && trayId<=120) {
2489 nHitsvsTray[trayId-1]++;
2490 nHitsvsModule[(trayId-1)/60][moduleId-1]++;
2493 nHitsVpd[trayId-121]++;
2496 for(i=0;i<120;i++) {
2506 StSPtrVecTofCell &tofCell = tofcol->tofCells();
2507 Int_t nTofCell = tofCell.size();
2508 Int_t nCellvsTray[120] = {0};
2509 Int_t nCellvsModule[2][32] = {{0},{0}};
2511 for(i=0;i<nTofCell;i++) {
2513 if(!aCell)
continue;
2514 int trayId = aCell->trayIndex();
2515 int moduleId = aCell->moduleIndex();
2516 if(trayId>0 && trayId<=120) {
2517 nCellvsTray[trayId-1]++;
2518 nCellvsModule[(trayId-1)/60][moduleId]++;
2521 double tof = aCell->leadingEdgeTime();
2527 double ptot = pTrk->geometry()->momentum().mag();
2531 double L = tofPathLength(&primVtx->position(), &aCell->position(), theTrackGeometry->helix().curvature());
2532 double beta = L/(tof*29.979);
2537 for(i=0;i<120;i++) {
2546 double TSumEast = 0.;
2547 double TSumWest = 0.;
2550 for(i=0;i<nTofCell;i++) {
2552 if(!aCell)
continue;
2553 int trayId = aCell->trayIndex();
2554 int tubeId = aCell->cellIndex();
2555 if(trayId==mEastVpdTrayId) {
2556 TSumEast += aCell->leadingEdgeTime() - mEastVpdCorr[tubeId-1];
2558 }
else if(trayId==mWestVpdTrayId) {
2559 TSumWest += aCell->leadingEdgeTime() - mWestVpdCorr[tubeId-1];
2563 double vz_vpd = -999.;
2564 if(nEast&&nWest) vz_vpd = (TSumEast/nEast - TSumWest/nWest)/2./29.979;
2572 StPtrVecHit tpc_hits = detInfo->hits(kTpcId);
2573 if (tpc_hits.size()) {
2574 for (UInt_t k=0;k<tpc_hits.size();k++) {
2576 if ((hit->position().z() > 1 && hit->sector() > 12) ||
2577 (hit->position().z() <-1 && hit->sector() < 13)) PCT++;
2580 LOG_WARN <<
"Tpc hits are not available - cannot check for PCTs" << endm;
2587 void StEventQAMaker::MakeHistFMS() {
2591 if (!trigger)
return;
2593 const unsigned short dsm = trigger->lastDSM(4);
2599 TH1PtrMap::iterator i;
2601 TH1* histogram = i->second;
2604 int crate = i->first;
2605 for(
int slot(0); slot < kNQtSlotsPerCrate; ++slot) {
2606 for(
int channel(0); channel < kNQtChannelsPerSlot; ++channel) {
2607 int index = slot * kNQtChannelsPerSlot + channel;
2608 float adc = trigger->fmsADC(crate, slot, channel, 0);
2609 histogram->Fill(index, adc);
2619 void StEventQAMaker::MakeHistHFT() {
2623 if (!pxlHitCollection) {
2624 LOG_WARN <<
"No StPxlHitCollection" << endm;
2629 if (!istHitCollection) {
2630 LOG_WARN <<
"No StIstHitCollection" << endm;
2635 if (!sstHitCollection) {
2636 LOG_WARN <<
"No StSstHitCollection" << endm;
2639 if(pxlHitCollection && istHitCollection){
2640 hists->m_nhit_Pxl_Ist->Fill(pxlHitCollection->numberOfHits(),istHitCollection->numberOfHits());
2642 if(pxlHitCollection && sstHitCollection){
2643 hists->
m_nhit_Pxl_Sst->Fill(pxlHitCollection->numberOfHits(),sstHitCollection->numberOfHits());
2645 if(istHitCollection && sstHitCollection){
2646 hists->
m_nhit_Ist_Sst->Fill(istHitCollection->numberOfHits(),sstHitCollection->numberOfHits());
2652 void StEventQAMaker::MakeHistPXL() {
2656 if (!pxlHitCollection) {
2657 LOG_WARN <<
"No PXL hit collection" << endm;
2661 Int_t nHitsPxl1 = 0;
2662 Int_t nHitsPxl2 = 0;
2664 UInt_t numberOfSectors = pxlHitCollection->numberOfSectors();
2665 for (UInt_t sectorIdx = 0; sectorIdx < numberOfSectors; sectorIdx++) {
2667 if (!PxlSectorHitCollection) {
2668 LOG_WARN <<
"MakeHistPXL: No PxlSectorHitCollection" << endm;
2671 UInt_t numberOfLadders = PxlSectorHitCollection->numberOfLadders();
2672 for (UInt_t ladderIdx = 0; ladderIdx < numberOfLadders; ladderIdx++) {
2674 if (!PxlLadderHitCollection) {
2675 LOG_WARN <<
"MakeHistPXL: No PXLLadder hit collection" << endm;
2679 UInt_t numberOfHits = PxlLadderHitCollection->numberOfHits();
2681 UInt_t numberOfSensors = PxlLadderHitCollection->numberOfSensors();
2683 for (UInt_t sensorIdx = 0; sensorIdx < numberOfSensors; sensorIdx++) {
2685 StSPtrVecPxlHit& vec = PxlSensorHitCollection->hits();
2687 UInt_t NoHits = vec.size();
2688 Int_t sensorId = sensorIdx + 1;
2689 Int_t ladderId = sectorIdx*4 + ladderIdx + 1;
2690 Int_t sectorId = sectorIdx + 1;
2699 LOG_DEBUG <<
"MakeHistPXL: StiPixelHitLoader size: " << NoHits << endm;
2701 for (UInt_t ll = 0; ll < NoHits; ll++) {
2707 Int_t ladder = hit->ladder();
2712 int layer = (ladder == 1) ? 1 : 2;
2732 Int_t nTofHits = btofcol->tofHits().size();
2738 Int_t tpcMult =
event->trackNodes().size();
2760 void StEventQAMaker::MakeHistIST() {
2764 if (!istHitCollection) {
2765 LOG_WARN <<
"Error getting pointer to StIstHitCollection" << endm;
2769 for (UInt_t ladderIdx = 0; ladderIdx < (UInt_t)
kIstNumLadders; ladderIdx++) {
2772 UInt_t numberOfHits = ladderHitCollection->numberOfHits();
2778 UInt_t nHitsSensor = sensorHitCollection->hits().size();
2784 for (UInt_t idx = 0; idx < nHitsSensor; idx++) {
2786 StIstHit* hit = sensorHitCollection->hits()[idx];
2797 UInt_t nIstHits = istHitCollection->numberOfHits();
2800 Int_t nTofHits = btofcol->tofHits().size();
2804 Int_t tpcMult =
event->trackNodes().size();
2817 void StEventQAMaker::MakeHistSST(){
2820 if (!sstHitCollection) {
2821 LOG_WARN <<
"Error getting pointer to StSstHitCollection" << endm;
2824 hists->m_pnt_sst->Fill(sstHitCollection->numberOfHits());
2825 for (UInt_t ladder=0; ladder<sstHitCollection->numberOfLadders(); ladder++) {
2827 for (UInt_t wafer=0; wafer<sstladder->numberOfWafers(); wafer++) {
2828 StSPtrVecSstHit& sstwaferhits = sstladder->wafer(wafer)->hits();
2829 for (UInt_t l=0; l<sstwaferhits.size(); l++) {
2830 StSstHit* ssthit = sstwaferhits[l];
2833 Float_t x = hitPos.x();
2834 Float_t y = hitPos.y();
2835 Float_t phi = hitPos.phi()/degree;
2836 if (phi<0) phi += 360.;
2838 hists->m_pnt_lwSST->Fill(ladder+1,wafer+1);
2840 hists->m_pnt_sizeSST->Fill(ssthit->clusterSizePSide(),0);
2841 hists->m_pnt_sizeSST->Fill(ssthit->clusterSizeNSide(),1);
2842 hists->m_pnt_eSST->Fill(TMath::Log10(fabs(ssthit->charge())+1e-33));
2849 hists->m_pnt_lwSST->SetBinContent(0,Nevents);
2851 hists->m_pnt_lwSST->SetEntries(
hists->m_pnt_lwSST->GetEntries()-1);
2854 void StEventQAMaker::MakeHistMTD() {
2859 StSPtrVecMtdHit& mtdHits = mtdCollection->mtdHits();
2860 Int_t nMtdHits = mtdHits.size();
2862 Int_t nMthMtdHits = 0;
2863 for(Int_t i=0; i<nMtdHits; i++)
2867 Int_t backleg = hit->backleg();
2868 Int_t module = hit->module();
2869 Int_t channel = hit->cell();
2870 hists->m_MtdHitMap->Fill(backleg,(module-1)*12+channel);
2871 StTrack *gTrack = hit->associatedTrack();
2872 if(!gTrack)
continue;
2874 hists->m_MtdMatchHitMap->Fill(backleg,(module-1)*12+channel);
2876 hists->m_MtdNMatchHits->Fill(nMthMtdHits);
2881 void StEventQAMaker::MakeHistRP() {
2883 const Int_t MAXHITS = 10 ;
2884 Double_t POS[kRP_MAXSEQ][kRP_MAXCHAIN][MAXHITS] ;
2885 Int_t NCluster[kRP_MAXSEQ][kRP_MAXCHAIN] ;
2886 Int_t i, j, k, l, m ;
2891 if ( RpsColl->siliconBunch()==0 || RpsColl->siliconBunch()>8 ) {
2893 for ( i=0; i<kRP_MAXSEQ ; i++ ) {
2895 for ( j=0; j<kRP_MAXCHAIN ; j++ ) {
2897 NCluster[i][j] = 0 ;
2899 for ( k=0; k<(Int_t) RpsColl->romanPot(i)->plane(j)->numberOfClusters() ; k++ ) {
2905 POS[i][j][k] = RpsColl->romanPot(i)->plane(j)->cluster(k)->position()/9.74E-5 ;
2908 POS[i][j][k] = RpsColl->romanPot(i)->plane(j)->cluster(k)->position()/1.050E-4 ;
2914 for ( l = 0; l<kRP_MAXCHAIN; l+=2 )
2915 for ( m = 1; m<kRP_MAXCHAIN; m+=2 )
2916 for ( k=0; k<NCluster[i][l] && k<MAXHITS ; k++ )
2917 for ( j=0; j<NCluster[i][m] && j<MAXHITS ; j++ )
2918 m_RP_clusters_xy[i]->Fill( POS[i][m][j] , POS[i][l][k]) ;
2927 void StEventQAMaker::MakeHistEPD() {
2930 if (!epdcol)
return;
2933 StSPtrVecEpdHit &epdHits = epdcol->epdHits();
2934 Int_t nEpdHits = epdHits.size();
2936 for(Int_t i=0;i<nEpdHits;i++) {
2939 if(!(aHit->
isGood()))
continue;
2940 short side = aHit->
side();
2942 int tile = aHit->
tile();
2943 int adc = aHit->
adc();
2944 int histId = (position - 1);
2945 if (side == 1) histId += 12;
2947 hists->m_epd_adc[histId]->Fill(tile, adc);
2949 int tac = aHit->
tac();
2950 hists->m_epd_tac[histId]->Fill(tile,tac);
2956 void StEventQAMaker::MakeHistTPC() {
2957 TDataSet* rawDataSet = FindDataSet(
"TpxRaw/.data/Event");
2961 for (
unsigned int sector = 1; sector <= tpcRawData->getNoSectors(); sector++) {
2963 if (digitalSector) {
2965 unsigned int nrows = digitalSector->numberOfRows();
2966 unsigned int innerRows = St_tpcPadConfigC::instance()->numberOfInnerRows(sector);
2967 for (
unsigned int rowi = 1; rowi <= nrows; rowi ++) {
2969 unsigned int npix = tpcRawData->getVecOfPixels(pixV, (
int) sector, rowi);
2970 for (
unsigned int iii = 0; iii<npix; iii++) {
2973 if (rowi < innerRows) {
2975 if((pixV[iii].timebin() > tblow) && (pixV[iii].timebin() < tbhigh)) {
2977 if (pixV[iii].adc() > 3) {
2984 if((pixV[iii].timebin() > tblow) && (pixV[iii].timebin() < tbhigh)) {
2986 if (pixV[iii].adc() > 3) {
3000 void StEventQAMaker::MakeHistiTPC() {
3001 StSPtrVecTrackNode & trackNode =
event->trackNodes();
3002 int nTracks = trackNode.size();
3007 node = trackNode[
track];
3008 if (!node)
continue;
3011 if (!gTrack)
continue;
3012 if (! gTrack->detectorInfo())
continue;
3013 StPtrVecHit ghvec = gTrack->detectorInfo()->hits();
3015 if (!gTrackParams)
continue;
3017 for (
unsigned int hit = 0; hit < ghvec.size(); hit++) {
3023 if (!tpcHit)
continue;
3024 if (tpcHit->flag() != 0)
continue;
3025 int sec_index = tpcHit -> sector() - 1;
3026 hists->m_TPC_ch_nrow[sec_index]-> Fill(tpcHit->padrow(), tpcHit->adc());
3036 if(tpcHit->padrow()>=45)
3038 hists->m_TPC_ch_time_outer[sec_index]-> Fill(tpcHit->timeBucket(), tpcHit->adc());
3039 hists->m_TPC_adc_sec_outer->Fill(tpcHit->sector(), tpcHit->adc());
3043 hists->m_TPC_ch_time_inner[sec_index]-> Fill(tpcHit->timeBucket(), tpcHit->adc());
3044 hists->m_TPC_adc_sec_inner->Fill(tpcHit->sector(), tpcHit->adc());
TH2F * m_glb_xfF
x-coord. of first hit on trk, tpc+svt
Int_t histsSet
event class-dependent histograms
TH2F * m_npoint_lengthTS
tot num points vs length, tpc
TH1F * m_glb_impactrTS
log impact parameter from primary vertex, ftpc
TH1F * m_lengthFE
length of track, ftpc
TH1F * m_glb_yfFW
y-coord. of first hit on trk, ftpc east
TH3F * m_pnt_svtLaserDiff
laser spots in svt
TH1F * m_ndedxFW
dE/dx [0], ftpcE
TH1F * m_plengthFE
length of track, ftpc
TH2F * m_primtrk_meanptTTS
detector id of track
TH1F * m_chisq0T
length of track, ftpc west
virtual void MakeHistTOF()
TH2F * m_pT_eta_recT
overlayed hist of first point - helix point
TH1F * m_primglob_good
tracks in table with iflag>0, ftpc
TH1F * m_glb_xf0TS
x-coord. of first hit - at start of helix
TH2F * m_globtrk_padtimeFE
Y vs X of first hit on trk, ftpc west.
TH2F * m_tpc_adc_numhitsvsrowvssector
charge per sector (TPX)
TH1F * m_vtx_FtpcWestTpc_z
FtpcWest prim vtx - TPC prim vtx, x vs y.
TH1F * m_pv_x
row1-vertex type
TH2F * m_pmom_trklengthT
tanl(dip angle) vs zfirst-zvtx, tpc+svt
TH1F * m_ndedxr
psi vs phi, tpc+svt
TH2F * m_pchisq0_zfTS
chisq0 vs zfirst, tpc
TH2F * m_tof_hit_module
of hits vs tray # (int over modules)
TH1F * m_dcaToBeamZ1
xy-dca to beam axis
TH1F * m_geant_reco_pvtx_z
prim vtx y, diff geant - reco
TH1F * m_prim_zfT
y-coord. of first hit on trk, ftpc west
TH1F * m_global_ist_hit
of hits in IST vs TOF track multiplicity
TH2F * m_glb_impactF
log impact parameter from primary vertex, tpc,tpc+svt
TH1F * m_vtx_FtpcEastTpc_z
FtpcEast prim vtx - TPC prim vtx, x vs y.
TH1F * m_glb_chargeFW
particle charge in units of |e| - ftpc east
TH1F * m_ppsiT
radial (xy) coordinate of first hit, ftpc west
TH2F * m_prim_f0
chi square [1], ftpc west
TH2F * m_primtrk_xf_yfTW
Y vs X of first hit on trk, tpc east.
TH1F * m_glb_xf0
plane of first hit on trk, ftpc
TH1F * m_dedx0FW
number of point to find dE/dx, ftpcW
TH2F * m_pTTTS
pT, tpc+svt
TH1F * m_pnt_tot_med
number of hits total
TH1F * m_petaT
theta - tpc+svt
TH1F * m_pchisq0T
length of track, ftpc west
TH1F * m_pnt_tot_sm
number of hits total, med range
TH2F * m_chisq0_zfTS
chisq0 vs zfirst, tpc
TH2F * m_peta_trklengthT
mom vs. trk length, tpc+svt
TH1F * m_ppointFE
number of points on the track - ftpc
TH2F * m_glb_rzf0
z-coord. of first hit - at start of helix+svt
TH2F * m_primtrk_meanetaTTS
<pT>, ftpc
TH2F * m_petaF
eta, tpc,tpc+svt
TH1F * m_prim_zfFE
z-coord. of first hit on trk, ftpc
TH2F * m_pnt_timeT
z dist. of hits, svt
TH1F * m_pTFW
pT, ftpc east
TH2F * m_ist_nhit_tpc_mult
of hits vs ladder vs sensor
TH1F * m_global_hft_hit
of hits in ITS vs hits in ITS
TH2F * m_pfpoint_lengthTS
num fit points vs length, tpc
TH1F * m_primary_hft_hit
HFT hits per global track.
TH1F * m_glb_yfT
x-coord. of first hit on trk, ftpc west
TH2F * m_pnt_xyFE
barrel dist. of hits, svt
TH1F * m_prim_xfFW
x-coord. of first hit on trk, ftpc east
TH2F * m_chisq0_phiT
chisq0 vs zfirst, tpc+svt
TH2F * m_pmomF
momentum, tpc+svt
TH2F * m_glb_impactT
chi square [1], ftpc west
TH2F * m_chisq0_momTS
chisq0 vs momentum, tpc
TH1F * m_prim_xf0TS
x-coord. of first hit - at start of helix
TH2F * m_primtrk_xf_yfTE
pT versus eta, ftpcW
TH1F * m_prim_radfFE
radial (xy) coordinate of first hit, ftpc
TH1F * m_glb_radfT
transverse & longitudinal helix center of last hit - helix hit+svt
TH2F * m_pT_eta_recTS
pT versus eta, tpc
TH1F * m_primtrk_good_sm
tracks in table with iflag>0
TH1F * m_prim_radfFW
radial (xy) coordinate of first hit, ftpc east
TH1F * m_prim_xfFE
x-coord. of first hit on trk, ftpc
TH2F * m_pT_eta_recFE
pT versus eta, tpc+svt
TH1F * m_pTT
momentum, ftpc west
TH1F * m_prim_radfTS
radial (xy) coordinate of first hit, tpc
TH2F * m_prim_rzf0TS
transverse & longitudinal helix center of last hit - helix hit
TH2F * m_ppTF
pT, tpc,tpc+svt
TH1F * m_global_pxl_hit
of hits in inner vs outer PIXEL layer
TH1F * m_v_z
STAR reference.
TH2F * m_glb_impactTTS
signed impact parameter from primary vertex, tpc+svt
TH1F * m_ppointFW
number of points on the track - ftpc east
TH2F * m_tof_match_module
of matched hits vs tray
TH2F * m_npoint_lengthT
num fit points vs length, tpc,tpc+svt
TH2F * m_tof_hit_tray
of IST hits per primary track
TH1F * m_dcaToBeamZ2
z-dca to beam axis -210 to -105
TH2F * m_ppT_eta_recTS
pT versus eta, tpc
TH2F * m_chisq0_phiTS
chisq0 vs phi, tpc
TH1F * m_prim_z0T
azimuthal angle at start (deg), tpc+svt
TH1F * m_emc_point_sigeta[4]
Point Phi spectra.
TH1F * m_chisq1FE
chi square [1], ftpc
TH2F * m_ppsi_phiT
chisq0 vs zfirst, tpc+svt
TH1F * m_glb_thetaT
tan(dip) =pz/pt at start, tpc+svt
TH2F * m_prim_ratiomF
ratio of n fit pnts over max n pnts - tpc+svt
TH1F * m_pchisq0FW
chi square [0], ftpc east
TH1F * m_v0
z distribution of V0s relative to primVtx
TH1F * m_pmax_pointTS
number of max possible track points - tpc
TH1F * m_v_num_sm
number of vertices
TH1F * m_prim_yf0TS
y-coord. of first hit - at start of helix
TH2F * m_pchisq0_dipTS
chisq0 vs dip angle, tpc
TH2F * m_mom_trklengthTS
mom vs. trk length, tpc
TH1F * m_chisq0FE
chi square [0], ftpc
TH2F * m_ppT_eta_recFW
pT versus eta, ftpcE
TH2F * m_chisq0F
chi square [0], tpc,svt
TH2F * m_eta_trklengthFE
trk length vs. eta, tpc+svt
TH1F * m_dedx1T
dE/dx [0], tpc
TH2F * m_pxl_nhit_Pxl1_Pxl2
of hits in outer PIXEL layer vs TOF track multiplicity
TH2F * m_globtrk_xf_yfTE
pT versus eta, ftpcW
TH2F * m_pchisq1F
chi square [0], ftpc west
TH1F * m_emc_point_delphi[4]
Point DeltaEta spectra.
TH1F * m_ist_hit_ladder
of hits vs phi vs z position
TH1F * m_psiTS
psi reconstructed, tpc
TH1F * m_pnt_tpc
detector ID of the hit
TH1F * m_vtx_phi_dist
radius to primary vertex
TH2F * m_globtrk_padtimeFW
padlength vs timelength of hits on track, ftpcE
TH2F * m_pnt_rpTE
rphi dist. of hits, tpcW
TH1F * m_primtrk_tot_sm
tracks in table
void StoreMapInfo()
A destructor.
short side() const
+1 if tile is on West side; -1 if on East side
TH1F * m_v_y
vertex coordinates in
TH2F * m_pfpoint_lengthTTS
num fit points vs length, tpc+svt
TH2F * m_petaTTS
eta, tpc+svt
TH2F * m_tof_vtx_z
of tof hits vs # of vpd hits
TH2F * m_fit_pointTTS
number of track points used for fitting - tpc+svt
TH2F * m_primtrk_meanptF
<pT>, tpc, tpc+svt
TH2F * m_chisq0_dipT
chisq0 vs eta, tpc+svt
TH2F * m_tpc_clust_statsvsrow[24]
status of clusters
TH1F * m_glb_xfFW
x-coord. of first hit on trk, ftpc east
TH2F * m_ptanl_zfTS
tanl(dip angle) vs zfirst-zvtx, tpc
TH2F * m_geant_reco_vtx_z_z
prim vtx z, diff geant - reco
TH1F * m_pchisq0TS
chi square [0], tpc
TH1F * m_pv_y
row1-vertex coordinates in
TH2F * m_chisq0_dipTS
chisq0 vs dip angle, tpc
TH1F * m_prim_zf0
y-coord. of first hit - at start of helix+svt
TH1F * m_pfit_pointTS
number of track points used for fitting - tpc
TH1F * m_prim_radfT
transverse & longitudinal helix center of last hit - helix hit+svt
TH1F * m_glb_zfFW
z-coord. of first hit on trk, ftpc east
TH2F * m_vtx_FtpcEastTpc_xy
number of kinks
TH1F * m_glb_zf0TS
z-coord. of first hit - at start of helix
TH1F * m_dcaToBeamZ3
z-dca to beam axis -105 to 0
TH2F * m_fpoint_lengthT
trk length vs. eta, ftpc west
TH1F * m_pv_pchi2
x versus y
TH1F * m_glb_phi0TS
azimuthal angle at start (deg), tpc
TH1F * m_pfit_pointT
number of max possible track points - ftpc west
TH1PtrMap mFMShistograms
signed impact parameter from primary vertex vs. time
TH1F * m_max_pointFW
number of max possible track points - ftpc east
const int kIstNumLadders
24 IST Ladders
TH2F * m_glb_radfF
impact parameter from primary vertex, ftpc
TH1F * m_prim_chargeFW
particle charge in units of |e| - ftpc east
TH1F * m_pointFW
number of points on the track - ftpc east
TH1F * m_pnt_zS
z dist. of hits, tpc
TH2F * m_pxl_nhit_Pxl1_tof_mult
of hits in outer PIXEL layer vs TPC track multiplicity
TH2F * m_chisq0_momT
tot num points vs length, ftpc west
TH1F * m_chisq1FW
chi square [1], ftpc east
TH1F * m_glb_ratiomT
ratio of n fit pnts over max n pnts - tpc,tpc+svt
TH2F * m_tpc_clust_pxltb
adc hits vs row vs sector
TH2F * m_p_dedx_rec
psi vs phi, tpc+svt
TH2F * m_tpc_clust_chargevstb[24]
cluster sum over all events
TH1F * m_glb_padfT
z-coord at start (cm), tpc+svt
TH1F * m_ppTT
momentum, ftpc west
int position() const
position of supersector on a wheel [1,12]
TH2F * m_tof_PID
vertex z from vpd vs verex z from TPC
TH2F * m_glb_simpactT
log impact parameter from primary vertex, tpc
TH2F * m_pchisq0_dipT
chisq0 vs eta, tpc+svt
TH1F * m_globtrk_fit_prob
TH2F * m_ppTTTS
pT, tpc+svt
TH2F * m_glb_padfTEW
padrow of first hit on trk, tpc
TH2F * m_glb_impactTS
chi square [0], tpc+svt
TH2F * m_prim_radfF
radial (xy) coordinate of first hit, tpc+svt
TH1F * m_pnt_barrelS
padrow dist. of hits, tpc
TH1F * m_ppsiFW
psi reconstructed, ftpc east
TH2F * m_ist_hit_ladder_sensor
of hits vs x ladder (integrated over ladder, per event)
TH1F * m_prim_yfFE
y-coord. of first hit on trk, ftpc
TH2F * m_pnt_planeF
padlength vs timelength of hits, ftpcW
TH1F * m_prim_curvTS
curvature (1/cm), tpc
TH1F * m_prim_zfTS
z-coord. of first hit on trk, tpc
TH1F * m_prim_zfFW
z-coord. of first hit on trk, ftpc east
TH2F * m_glb_chargeF
particle charge in units of |e| - tpc+svt
TH1F * m_ppointT
<eta>, ftpc
TH1F * m_glb_xfT
curvature (1/cm), tpc+svt
TH1F * m_prim_chargeFE
particle charge in units of |e| - ftpc
TH1F * m_tpc_clust_chargeTPX[24]
charge per cluster (inner)
TH1F * m_glb_phifTS
phi dist. of first point on trk, tpc
TH2F * m_ppT_eta_recFE
pT versus eta, tpc+svt
TH2F * m_vtx_FtpcWestTpc_xy
FtpcEast prim vtx z - TPC prim vtx z.
TH2F * m_glb_rzf0TS
transverse & longitudinal helix center of last hit - helix hit
TH2F * m_glb_impactrTTS
impact parameter from primary vertex, tpc+svt
TH2F * m_glb_zfF
z-coord. of first hit on trk, tpc+svt
TH1F * m_pointFE
number of points on the track - ftpc
TH2F * m_eta_trklengthTS
trk length vs. eta, tpc
TH1F * m_globtrk_goodTTS
tracks in table with iflag>0,small range
int adc() const
ADC value [0,4095].
TH1F * m_psiFE
psi reconstructed, ftpc
TH1F * m_glb_phi0T
radius at start (cm), tpc+svt
TH2F * m_eta_trklengthT
mom vs. trk length, tpc+svt
TH2F * m_tpc_clust_chargevstbTPX[24]
charge vs. time bucket (inner)
TH1F * m_glb_xfFE
x-coord. of first hit on trk, ftpc
TH2F * m_eta_trklengthFW
trk length vs. eta, ftpc east
TH2F * m_pnt_padtimeFW
padlength vs timelength of hits, ftpcE
TH1F * m_prim_ratiomT
ratio of n fit pnts over tot n pnts - ftpc west
TH1F * m_prim_xf0
z-coord. of first hit on trk, ftpc west
TH1F * m_pnt_ssd
SVT drift.
TH2F * m_pchisq0F
chi square [0], tpc,tpc+svt
TH2F * m_pointF
number of points on the track - tpc+svt
TH1F * m_pmax_pointFE
number of max possible track points - ftpc
TH2F * m_glb_f0
impact parameter from primary vertex, tpc
TH2F * m_globtrk_xf_yfFE
Y vs X of first hit on trk, tpc+svt.
pair< double, double > pathLength(double r) const
path length at given r (cylindrical r)
TH1F * m_glb_xfTS
x-coord. of first hit on trk, tpc
TH1F * m_prim_zf0TS
z-coord. of first hit - at start of helix
TH1F * m_dedx0T
number of point to find dE/dx, tpc
TH1F * m_pmomTS
momentum, tpc
TH2F * m_primtrk_goodF
tracks in table with iflag>0, tpc,svt
TH2F * m_ptanl_zfT
Y vs X of first hit on trk, ftpc west.
Accessor to the database for trigger id information.
double ycenter() const
x-center of circle in xy-plane
TH1F * m_pnt_phiS
phi dist. of hits, tpc
TH1F * m_glb_radfFW
radial (xy) coordinate of first hit, ftpc east
TH1F * m_prim_xfTS
x-coord. of first hit on trk, tpc
TH1F * m_glb_yf0
x-coord. of first hit - at start of helix+svt
TH1F * m_glb_impactrT
signed impact parameter from primary vertex, tpc
TH1F * m_ndedxFE
dE/dx [0], ftpc
TH2F * m_prim_f0TS
overlayed hist of first point - helix point
TH1F * m_momT
eta, ftpc west
TH1F * m_glb_chargeTS
particle charge in units of |e| - tpc
TH1F * m_ev0_k0ma_hist
Lambda mass.
TH2F * m_glb_rzl0
transverse & longitudinal helix center of first hit - helix hit
TH2F * m_peta_trklengthTS
trk length vs. eta, tpc
TH2F * m_pxl_nhit_Pxl2_tof_mult
of hits in inner PIXEL layer vs TOF track multiplicity
TH1F * m_chisq0TS
length of track, tpc+svt
TH2F * m_primtrk_xf_yfFW
Y vs X of first hit on trk, ftpc east.
TH2F * m_tpc_adc_chargevsrowvstb[24]
ADC charge vs. time bucket (outer)
TH1F * m_globtrk_iflag
tracks in table with iflag>0, ftpc
TH1F * m_pmomT
eta, ftpc west
Collection of trigger ids as stored in StEvent.
TH2F * m_zDcaZf
z-dca vs tanl
TH1F * m_petaFW
eta, ftpc east
TH1F * m_glb_radfTS
radial (xy) coordinate of first hit, tpc
TH1F * m_emc_points[4]
Point TrMom spectra.
TH2F * m_ppsiTTS
psi reconstructed, tpc+svt
TH1F * m_primtrk_goodTTS
tracks in table with iflag>0, small range
TH2F * m_tpc_clust_pxlp
cluster pixel time bucket size (outer)
TH1F * m_vtx_z_dist
radial distribution of V0s relative to primVtx
TH1F * m_pmax_pointT
number of points on the track - ftpc west
TH2F * m_tof_match_tray
of hits vs module # (int over trays, east side use -32 - -1)
TH1F * m_tanlTS
tan(dip) =pz/pt at start, tpc
TH2F * m_chisq0_etaTS
chisq0 vs eta, tpc
TH2F * m_fpoint_lengthTS
num fit points vs length, tpc
TH2F * m_prim_yfF
y-coord. of first hit on trk, tpc+svt
TH2F * m_pnt_ftpc
number of hits tpc
TH1F * m_prim_thetaT
tan(dip) =pz/pt at start, tpc+svt
TH1F * m_max_pointFE
number of max possible track points - ftpc
TH2F * m_glb_f0TS
overlayed hist of first point - helix point
TH1F * m_glb_zf0
y-coord. of first hit - at start of helix+svt
TH2F * m_glb_impactrF
impact parameter from primary vertex, tpc,tpc+svt
TH1F * m_det_id
iflag value
TH1F * m_pnt_phiSSD
number of hits ssd
TH2F * m_pnt_xyFW
xy dist. of hits, ftpcE
TH1F * m_pv_z
STAR reference.
TH2F * m_prim_rzl0TS
transverse & longitudinal helix center of first hit - helix hit+svt
virtual void MakeHistDE()
histograms filled in MakeHistPID() method
TH2F * m_dcaToBeamXY
detector id of track
TH1F * m_pv_vtxid
radius to vertex
TH1F * m_pointTS
number of points on the track - tpc
TH2F * m_psiTTS
psi reconstructed, tpc+svt
TH1F * m_glb_yfTS
y-coord. of first hit on trk, tpc
TH2F * m_prim_chargeF
particle charge in units of |e| - tpc+svt
TH2F * m_zDcaTanl
z-dca to beam axis 0 to 105
TH1F * m_etaFW
eta, ftpc east
TH2F * m_glb_phifT
radial (xy) coordinate of first hit, tpc+svt
StQABookHist * hists
pointers to the histogram classes for the
TH2F * m_chisq0_zfT
chisq0 vs dip angle, tpc+svt
TH2F * m_pT_eta_recFW
pT versus eta, ftpcE
TH1F * m_pmomFE
momentum, ftpc
TH2F * m_prim_rzl0
transverse & longitudinal helix center of first hit - helix hit
TH1F * m_momTS
momentum, tpc
TH1F * m_pchisq1FE
chi square [1], ftpc
TH1F * m_glb_ratiomFE
ratio of n fit pnts over max n pnts - ftpc
TH2F * m_tpc_clust_pxltbTPX
cluster pixel time bucket size (inner)
TH1F * m_glb_curvTS
curvature (1/cm), tpc
TH1F * m_plengthFW
length of track, ftpc east
TH1F * m_momFW
momentum, ftpc east
TH1F * m_ev0_lama_hist
v0 vertices
TH2F * m_pchisq0_etaTS
chisq0 vs eta, tpc
TH2F * m_primtrk_xf_yfTS
Y vs X of first hit on trk, tpc west.
TH2F * m_pxl_hit_phi_z_Pxl1
HFT hits per primary track.
TH1F * m_plengthTS
length of track, tpc
TH2F * m_pxl_hit_sector_sensor_Pxl1
of hits vs x ladder (integrated over ladder, per event)
TH2F * m_tpc_clust_chargevsrow[24]
charge vs. time bucket (outer)
TH1F * m_lengthFW
length of track, ftpc east
TH1F * m_primary_pxl_hit
of PIXEL hits per global track
TH1F * m_glb_curvT
padrow of first hit on trk, tpc east and west
TH1F * m_pnt_tot
plane dist. of hits, ftpc
TH1F * m_prim_chargeT
ratio of n fit pnts over max n pnts - ftpc west
virtual TObject * GetObject() const
The depricated method (left here for the sake of the backward compatibility)
TH2F * m_globtrk_goodF
tracks in table with iflag>0, tpc, tpc+svt
TH1F * m_primtrk_good
tracks in table, small range
TH2F * m_pnpoint_lengthTS
tot num points vs length, tpc
TH2F * m_nhit_Pxl_Sst
of hits in PIXEL vs hits in IST
TH1F * m_glb_ratiomFW
ratio of n fit pnts over max n pnts - ftpc east
TH1F * m_prim_yfTS
y-coord. of first hit on trk, tpc
TH2F * m_glb_yfF
y-coord. of first hit on trk, tpc+svt
TH2F * m_pnpoint_lengthT
num fit points vs length, tpc
TH2F * m_svt_loc
diff of laser spots in svt
TH2F * m_pnpoint_lengthFE
tot num points vs length, tpc+svt
TH1F * m_pdet_id
iflag value
TH2F * m_glb_rzl0TS
transverse & longitudinal helix center of first hit - helix hit+svt
TH1F * m_ppointTS
number of points on the track - tpc
Stores information for tiles in STAR Event Plane Detector.
TH1F * m_glb_r0TS
radius at start (cm), tpc
TH1F * m_pchisq1FW
chi square [1], ftpc east
TH1F * m_primtrk_tot
dE/dx [0], ftpcW
TH2F * m_nhit_Ist_Sst
of hits in PIXEL vs hits in SST
TH1F * m_prim_r0TS
radius at start (cm), tpc
TH2F * m_pchisq0_etaT
chisq0 vs momentum, tpc+svt
TH1F * m_glb_yfFE
y-coord. of first hit on trk, ftpc
TH2F * m_ppsi_phiTS
psi vs phi, tpc
TH1F * m_emc_point_trmom[4]
Point DeltaPhi spectra.
TH1F * m_pmomFW
momentum, ftpc east
TH1F * m_pointT
z-dca vs phi0
TH1F * m_ptanlTS
tan(dip) =pz/pt at start, tpc
TH1F * m_glb_zfT
y-coord. of first hit on trk, ftpc west
TH2F * m_prim_zfF
z-coord. of first hit on trk, tpc+svt
TH2F * m_pnt_xyS
time dist. of hits, tpc
TH2F * m_glb_planefF
z-coord. of first hit on trk, ftpc west
TH2F * m_pxl_nhit_Pxl2_tpc_mult
of hits in inner PIXEL layer vs TPC track multiplicity
TH2F * m_lengthF
length of track, tpc
TH2F * m_ppsiF
psi reconstructed, tpc,tpc+svt
TH1F * m_glb_thetaTS
theta - tpc
TH2F * m_ppT_eta_recT
overlayed hist of first point - helix point
TH2F * m_tpc_clust_chargesum[24]
charge per cluster (outer)
TH2F * m_chisq0_etaT
chisq0 vs momentum, tpc+svt
int tile() const
tile on the supersector [1,31]
TH2F * m_etaF
eta, tpc,tpc+svt
TH1F * m_tpc_clust_charge[24]
status of clusters vs. row
TH2F * m_etaTTS
eta, tpc+svt
TH2F * m_chisq0TTS
chi square [0], tpc
TH1F * m_xi_ma_hist
number of xi vertices
TH1F * m_tpc_adc_chargepersectorTPX
charge per sector
TH1F * m_prim_yfFW
y-coord. of first hit on trk, ftpc east
TH1F * m_ppTFW
pT, ftpc east
TH2F * m_plengthF
length of track, tpc+svt
TH2F * m_pmax_pointF
number of max possible track points - tpc+svt
TH2F * m_tanl_zfTS
tanl(dip angle) vs zfirst-zvtx, tpc
TH2F * m_pchisq0_momT
tot num points vs length, ftpc west
TH2F * m_pmom_trklengthTS
mom vs. trk length, tpc
virtual Int_t Make()
StEventQAMaker - Make; fill histograms.
TH1F * m_ptanlT
psi reconstructed, ftpc west
TH2F * m_psi_phiT
chisq0 vs phi, tpc+svt
TH1F * m_emc_point_sigphi[4]
Point SigmaEta spectra.
TH2F * m_dedx0F
number of point to find dE/dx, ftpc
TH2F * m_pchisq0_zfT
chisq0 vs dip angle, tpc+svt
TH1F * m_tpc_adc_chargepersector
charge vs. row
TH1F * m_lengthTS
phi dist. of first point on trk, tpc+svt
TH1F * m_prim_phi0TS
azimuthal angle at start (deg), tpc
TH1F * m_pnt_ftpcE
number of hits ftpc
TH1F * m_psiT
radial (xy) coordinate of first hit, ftpc west
TH1F * m_primtrk_iflag
fit points ratio prim/glob, all detectors
TH2F * m_max_pointF
number of max possible track points - tpc+svt
TH1F * m_prim_yf0
x-coord. of first hit - at start of helix+svt
TH1F * m_prim_curvT
z-coord at start (cm), tpc+svt
TH2F * m_glb_ratiomF
ratio of n fit pnts over max n pnts - tpc+svt
TH1F * m_ndedxT
number of tracks with dedx info
TH2F * m_primtrk_meanetaF
<eta>, tpc, tpc+svt
TH1F * m_globtrk_good_sm
tracks in table with iflag>0
TH2F * m_prim_rzf0
z-coord. of first hit - at start of helix+svt
TH2F * m_pnt_svtLaser
number of hits svt
TH2F * m_tof_vpd_hit
of matched hits vs module
TH1F * m_lengthT
pT, ftpc west
TH1F * m_dedxTTS
dE/dx [1], tpc
TH1F * m_tpc_adc_chargevstbTPX[24]
ADC charge vs. time bucket (inner)
TH2F * m_fpoint_lengthTTS
num fit points vs length, tpc+svt
TH1F * m_glb_chargeT
ratio of n fit pnts over max n pnts - ftpc west
TH1F * m_prim_ratiomTS
ratio of n fit pnts over max n pnts - tpc
TH1F * m_plengthT
pT, ftpc west
TH1F * m_prim_ratiomFE
ratio of n fit pnts over max n pnts - ftpc
TH1F * m_dedx0FE
number of point to find dE/dx, ftpcE
TH2F * m_tanl_zfT
padlength vs timelength of hits on track, ftpcW
TH2F * m_ist_hit_phi_z
of PIXEL hits per primary track
TH2F * m_emc_nhit
prim vtx z, diff geant - reco vs reco z
TH1F * m_glb_zfFE
z-coord. of first hit on trk, ftpc
TH2F * m_bbc_adc[4]
Point Flag spectra.
TH1F * m_emc_point_deleta[4]
Point SigmaPhi spectra.
TH1F * m_pmax_pointFW
number of max possible track points - ftpc east
TH1F * m_glb_z0T
azimuthal angle at start (deg), tpc+svt
TH2F * m_glb_ratiomTTS
number of track pnts on svt - tpc+svt
TH2F * m_pxl_hit_sector_sensor_Pxl2
of hits vs sector vs sensor, inner PIXEL layer
TH1F * m_glb_zfTS
z-coord. of first hit on trk, tpc
TH1F * m_glb_r0T
particle charge in units of |e| - ftpc west
TH1F * m_z_hits
FtpcWest prim vtx z - TPC prim vtx z.
TH1F * m_primglob_fit
trks w/ iflag>0, ratio prim/glob, all detectors
TH2F * m_globtrk_xf_yfTW
Y vs X of first hit on trk, tpc east.
TH1F * m_prim_r0T
particle charge in units of |e| - ftpc west
TH1F * m_glb_chargeFE
particle charge in units of |e| - ftpc
TH2F * m_pnt_phiT
rphi dist. of hits, tpcE
TH1F * m_emc_point_phi[4]
Point Eta spectra.
TH1F * m_max_pointT
number of points on the track - ftpc west
TH1F * m_MtdNHits
TOF PID: 1/beta vs p.
TH1F * m_tanlT
psi reconstructed, ftpc west
TH2F * m_mom_trklengthT
tanl(dip angle) vs zfirst-zvtx, tpc+svt
TH2F * m_npoint_lengthFE
tot num points vs length, tpc+svt
TH2F * m_pnt_padrowT
phi dist. of hits, svt
TH1F * m_geant_reco_pvtx_y
prim vtx x, diff geant - reco
TH1F * m_pchisq0FE
chi square [0], ftpc
TH1F * m_momFE
momentum, ftpc
TH1F * m_fit_pointTS
number of track points used for fitting - tpc
TH2F * m_peta_trklengthFE
trk length vs. eta, tpc+svt
TH1F * m_v_vtxid
number of vertices,small range
TH1F * m_glb_radfFE
radial (xy) coordinate of first hit, ftpc
TH2F * m_npoint_lengthFW
tot num points vs length, ftpc east
TH1F * m_fit_pointT
number of max possible track points - ftpc west
TH1F * m_pnt_phiSST
number of hits sst
TH2F * m_globtrk_xf_yfTS
Y vs X of first hit on trk, tpc west.
TH2F * m_pTF
pT, tpc,tpc+svt
TH2F * m_prim_xfF
x-coord. of first hit on trk, tpc+svt
const int kIstNumSensorsPerLadder
6 sensor per one IST Ladder
TH2F * m_ppointF
number of points on the track - tpc+svt
TH1F * m_ppsiFE
psi reconstructed, ftpc
TH2F * m_ist_nhit_tof_mult
of hits in IST vs TPC track multiplicity
TH1F * m_ppsiTS
psi reconstructed, tpc
TH1F * m_max_pointTS
number of max possible track points - tpc
TH1F * m_prim_chargeTS
particle charge in units of |e| - tpc
TH2F * m_tpc_adc_chargesum[24]
charge vs. row vs. time bucket
TH2F * m_zDcaPhi0
z-dca vs psi
TH2F * m_pchisq0_momTS
chisq0 vs momentum, tpc
TH1F * m_prim_thetaTS
theta - tpc
TH2F * m_psiF
psi reconstructed, tpc,tpc+svt
TH1F * m_etaT
theta - tpc+svt
TH1F * m_prim_yfT
x-coord. of first hit on trk, ftpc west
virtual Int_t InitRun(int runnumber)
StEventQAMaker - InitRun; Book histograms, set defaults for member functions.
TH2F * m_glb_simpactTS
log impact parameter from primary vertex, tpc+svt
TH2F * m_pfpoint_lengthT
trk length vs. eta, ftpc west
double xcenter() const
aziumth in xy-plane measured from ring center
Event data structure to hold all information from a Monte Carlo simulation. This class is the interfa...
bool isGood() const
false if tile is bad or missing, according to (time-dependent) database
TH1F * m_pnt_ftpcW
number of hits ftpcE
TH2F * m_psi_phiTS
psi vs phi, tpc
TH2F * m_zDcaPsi
z-dca vs z-first
TH2F * m_pnt_padtimeFE
xy dist. of hits, ftpcW
TH1F * m_tpc_adc_chargevstb[24]
ftpc east cluster radial position
TH1F * m_glb_z0TS
z-coord at start (cm), tpc
TH2F * m_tpc_clust_pxlpTPX
cluster pixel pad size (inner)
TH1F * m_emc_point_eta[4]
Point Energy spectra.
TH2F * m_peta_trklengthFW
trk length vs. eta, ftpc east
TH1F * m_vtx_r_dist
azimuthal distribution of V0s relative to primVtx
TH1F * m_pv_r
row1-chisq per dof of vertex fit
TH1F * m_prim_z0TS
z-coord at start (cm), tpc
TH2F * m_pnpoint_lengthFW
tot num points vs length, ftpc east
TH2F * m_globtrk_xf_yfFW
Y vs X of first hit on trk, ftpc east.
TH1F * m_prim_ratiomFW
ratio of n fit pnts over max n pnts - ftpc east
TH2F * m_pchisq0TTS
chi square [0], tpc+svt
TH1F * m_chisq0FW
chi square [0], ftpc east
TH1F * m_primary_ist_hit
of IST hits per global track
TH1F * m_globtrk_good
tracks in table
TH1F * m_pxl_hit_ladder
of hits vs phi vs z position, outer PIXEL layer
TH1F * m_tpc_clust_stats[24]
ADC sum over all events.
TH1F * m_psiFW
psi reconstructed, ftpc east
TH2F * m_pxl_hit_phi_z_Pxl2
of hits vs phi vs z position, inner PIXEL layer
TH2F * m_ndedxF
<dE/dx>/(Bichsel <dE/dx>), tpc,tpc+svt
TH2F * m_pnt_rpTW
xy dist. of hits, svt
TH1F * m_emc_point_flag
Emc Point multiplicity.
TH1F * m_glb_ratiomTS
ratio of n fit pnts over max n pnts - tpc
TH2F * m_momF
momentum, tpc+svt
TH1F * m_geant_reco_pvtx_x
number of hits ftpcW
int tac() const
TAC value [0,4095].
TH1F * m_glb_yf0TS
y-coord. of first hit - at start of helix
TH1F * m_glb_sptsTS
number of track points used for fitting - tpc,tpc+svt
TH2F * m_pxl_nhit_Pxl1_tpc_mult
of hits vs sector vs sensor, outer PIXEL layer
TH1F * m_prim_phi0T
radius at start (cm), tpc+svt
TH1F * m_prim_xfT
curvature (1/cm), tpc+svt
TH2F * m_chisq1F
chi square [0], ftpc west
TH2F * m_primtrk_xf_yfFE
Y vs X of first hit on trk, tpc+svt.
TH1F * m_v_r
chisq per dof of vertex fit