22 #include "TObjArray.h"
32 #include "StEventTypes.h"
34 #include "StMeasuredPoint.h"
35 #include "StEvent/StTriggerData.h"
36 #include "StEvent/StL0Trigger.h"
39 #include "StMuDSTMaker/COMMON/StMuDst.h"
40 #include "StMuDSTMaker/COMMON/StMuEvent.h"
41 #include "StMuDSTMaker/COMMON/StMuDstMaker.h"
42 #include "StMuDSTMaker/COMMON/StMuEmcCollection.h"
43 #include "StMuDSTMaker/COMMON/StMuDst.h"
44 #include "StMuDSTMaker/COMMON/StMuEmcUtil.h"
45 #include "StMuDSTMaker/COMMON/StMuTrack.h"
48 #include "StEmcUtil/geometry/StEmcGeom.h"
49 #include "StEmcUtil/projection/StEmcPosition.h"
52 #include "StSpinPool/StSpinDbMaker/StSpinDbMaker.h"
55 #include "StPrimaryVertex.h"
56 #include "StPrimaryTrack.h"
57 #include "StDedxPidTraits.h"
58 #include "StTrackFitTraits.h"
59 #include "StTrackDetectorInfo.h"
60 #include "StTrackGeometry.h"
61 #include "StTpcDedxPidAlgorithm.h"
62 #include "StTriggerDetectorCollection.h"
63 #include "StCtbTriggerDetector.h"
64 #include "StZdcTriggerDetector.h"
65 #include "StEventTypes.h"
66 #include "StMemoryInfo.hh"
73 #include "StDetectorDbMaker/StDetectorDbTriggerID.h"
80 #include "StEmcUtil/projection/StEmcPosition.h"
83 #include "StTriggerUtilities/StTriggerSimuMaker.h"
84 #include "StTriggerUtilities/Bbc/StBbcTriggerSimu.h"
85 #include "StTriggerUtilities/Bemc/StBemcTriggerSimu.h"
86 #include "StTriggerUtilities/L2Emulator/StL2TriggerSimu.h"
91 #include "StThreeVectorF.hh"
92 #include "StSkimPionMaker.h"
95 #include "StBbcTriggerDetector.h"
98 #include "TSkimPionEvent.h"
103 StSkimPionMaker::StSkimPionMaker(
const char *name, Bool_t doTracks,
const char *outfile):
StMaker(name)
106 mDoTracks = doTracks;
130 StSkimPionMaker::~StSkimPionMaker()
136 Int_t StSkimPionMaker::Init()
140 if (debug) cout <<
"++++++++++++ StSkimPionMaker::Init()" << endl;
144 mFile =
new TFile(mFileName,
"RECREATE");
150 pi0Tree =
new TTree(
"pi0Tree",
"Pi0 Event Tree");
152 pi0Tree->Branch(
"EventBranch",
"TSkimPionEvent", &pi0Event);
156 if (debug) cout <<
"StSkimPionMaker: Init done..." << endl;
158 return StMaker::Init();
162 Int_t StSkimPionMaker::InitRun(
int runnumber)
164 return StMaker::InitRun(runnumber);
175 cout <<
"+++++++++++++++++++++++++++++++++++++++++ event: "<<ievtot<<endl;
189 if (debug) cout <<
"++++++++++++ StSkimPionMaker::Make() Cannot get the event pointer"<<endl;
193 runN =
event->runNumber();
194 eventN =
event->eventNumber();
195 fillN = (Int_t)event->runInfo().beamFillNumber(yellow);
197 pi0Event->SetRunNo((Int_t)runN);
198 pi0Event->SetEventNo((Int_t)eventN);
199 pi0Event->SetFillNo((Int_t)fillN);
202 mField =
event->magneticField()/10.;
206 if (fabs(mField)<0.01)
208 if (debug) cout <<
"BField read back as 0, setting default." << endl;
221 mBBCTrig = (trigSim->bbc)->triggerDecision(137611);
225 if (debug) cout <<
"StFranksPi0Maker::Make() could not find SimuTrig \n";
229 pi0Event->SetBBCTrig(mBBCTrig);
234 Int_t mubx48=trig->bunchCrossingId();
235 Int_t mubx7=trig->bunchCrossingId7bit(runN);
236 pi0Event->SetSpinBit(trig->spinBits(runN));
237 pi0Event->SetBunchX48(mubx48);
238 pi0Event->SetBunchX7(mubx7);
244 if ((spDb->offsetBX48minusBX7(mubx48,mubx7)==0)&&(spDb->
isValid())) val = 1;
245 pi0Event->SetValidSpin(val);
247 pi0Event->SetMaskedXing(spDb->isMaskedUsingBX48(mubx48));
251 pi0Event->SetValidSpin(0);
254 int softwaretrigs[2] = {0,0};
257 if ((trigSim->bbc)->triggerDecision(137611)) mcMB = 1;
260 if ((trigSim->isTrigger(137611)) || (trigSim->isTrigger(127611))) mcHTTPL2 = 1;
264 if (debug) cout<<
"SkimPionMaker::Make() could not find the trigger emulator"<<endl;
268 softwaretrigs[0] = mcMB;
269 softwaretrigs[1] = mcHTTPL2;
271 pi0Event->SetHiTowerAdc6Bit(mHiTowerAdc6Bit);
278 int startriggers[4] = {117001, 137611, 5};
280 int trigs[3] = {0,0,0};
281 int prescales[3] = {0,0,0};
285 for (
int i=0; i<3; ++i) {
286 if (event->triggerIdCollection().nominal().isTrigger(startriggers[i])) {
288 if (debug) cout <<
"Trigger condition " << i <<
" satisfied..." << endl;
291 if (event->triggerIdCollection().nominal().isTrigger(127611)) trigs[1] = 1;
296 for (
int i=0;i<3;++i) {
304 httpl2_test = trigs[2];
306 pi0Event->SetTriggers(trigs);
307 pi0Event->SetPrescales(prescales);
308 pi0Event->SetSoftTriggers(softwaretrigs);
313 if (!((mb)||(httpl2)||(httpl2_test)||(mcHTTPL2))) {
321 vPos =
event->primaryVertexPosition();
330 pi0Event->SetBBCVertexZ(mBBCVertexZ);
333 pi0Event->SetBBCTimeBin(bbc.onlineTimeDifference());
336 if((vPos.z() == 0)||(TMath::Abs(vPos.z()) > 300)) {
337 if (mBBCVertexZ == 0) mBBCVertexZ = 0.001;
338 vPos.setZ(mBBCVertexZ);
341 pi0Event->SetOnlyBBCVertex();
346 if (debug) cout <<
"++++++++++++ StSkimPionMaker::Make: Can't get StEvent pointer" << endl;
352 if (debug) cout <<
"++++++++++++ StSkimPionMaker::Make() No EMC Collection"<<endl;
354 if ((mb)||(httpl2)||(httpl2_test)||(mcHTTPL2)) {
364 if (debug) cout <<
"++++++++++++ StSkimPionMaker::Make() No BEMC detector"<<endl;
366 if ((mb)||(httpl2)||(httpl2_test)||(mcHTTPL2)) {
374 StSPtrVecEmcPoint& bEmcPoints = emccol->barrelPoints();
377 StEmcGeom* emcGeom = StEmcGeom::getEmcGeom(
"bemc");
384 pi0Event->SetVertex(vPos.x(),vPos.y(),vPos.z());
387 if (debug) cout <<
"++++++++++++ StSkimPionMaker::Make() z_vertex==0"<<endl;
388 if ((mb)||(httpl2)||(httpl2_test)||(mcHTTPL2)) {
396 if (!(vPos.z()>-100. && vPos.z()<100.))
398 if (debug) cout <<
"++++++++++++ StSkimPionMaker::Make() z_vertex out of range!"<<endl;
399 if ((mb)||(httpl2)||(httpl2_test)||(mcHTTPL2)) {
409 Float_t chargedPtSum = 0;
411 for (
int i = 0; i < numberOfPrimaryTracks; i++) {
413 if ((t->
nHits() > 15)&&(t->
dca().mag() < 3.0)&&(t->
eta() > -1.)&&(t->
eta() < 1.))
414 chargedPtSum += t->
pt();
417 pi0Event->SetChargedPtSum(chargedPtSum);
425 if (bEmcPoints.size()==0)
427 if (debug) cout <<
"++++++++++++ StSkimPionMaker::Make() No BEMC points"<<endl;
428 if ((mb)||(httpl2)||(httpl2_test)||(mcHTTPL2)) {
437 if (debug) cout <<
"--- Number of primary tracks in this event: "<<numberOfPrimaryTracks<<endl;
439 Int_t runnm = runN-5000000;
440 if (debug) cout <<
"--- event accepted... RUN_ID: "<<runN<<
" ("<<runnm<<
")"<<endl;
443 if (!readPointList())
445 if (debug) cout <<
"+++ ERROR read readPointList()"<<endl;
446 if ((mb)||(httpl2)||(httpl2_test)||(mcHTTPL2)) {
460 if (mDoTracks) associateTracksWithEmcPoints(
this);
463 Float_t neutralEnergy = getNeutralEnergySum(
photonlist);
465 pi0Event->SetNeutralEnergy(neutralEnergy);
472 if (
photonlist->GetEntries()>0 && bEmcPoints.size()<=100 && vPos.z()>-100 && vPos.z()<100) {
473 if (debug) cout<<
"--- new photon " <<
photonlist->GetEntries() << endl;
480 if ((mb)||(httpl2)||(httpl2_test)||(mcHTTPL2)) {
489 if (debug) cout <<
"--- reset photon/charged_pion list done"<<endl;
498 cout <<
"Events written to tree: " << iWrittenEvents << endl;
506 StThreeVectorF StSkimPionMaker::getPoint(
StEmcPoint *p, Int_t &
id, Float_t &e, Float_t &pt, Int_t &n, Int_t &t, Float_t &eSMDe, Float_t &eSMDp, Float_t &eTower, Float_t &sSMDe, Float_t &sSMDp, Float_t &sTower)
514 cout <<
"++++++++++++ StSkimPionMaker::getPoint: Can't get Event pointer" << endl;
522 MainVertexPosition =
event->primaryVertexPosition();
527 StEmcGeom* emcGeom = StEmcGeom::getEmcGeom(
"bemc");
529 emcGeom->
getBin(pointVector.phi(), pointVector.pseudoRapidity(), mod, eta, sub);
530 emcGeom->getId(mod, eta, sub,
id);
533 StPtrVecEmcCluster& towerClus=p->cluster(kBarrelEmcTowerId);
534 StPtrVecEmcCluster& etaClus=p->cluster(kBarrelSmdEtaStripId);
535 StPtrVecEmcCluster& phiClus=p->cluster(kBarrelSmdPhiStripId);
538 Int_t nTowerHits = 0;
539 Float_t towerEnergy = 0;
540 Float_t etaEnergy=0.;
541 Float_t phiEnergy=0.;
546 for (
int k=0;k<5;k++) {
550 Float_t fraction = 0;
552 if(towerClus.size() > 0) {
554 StPtrVecEmcRawHit& hT=clT->hit();
555 nTowerHits=hT.size();
556 if (debug) cout<<
"the number of towers is "<<nTowerHits<<endl;
557 for (Int_t j=0; j<nTowerHits; j++) {
560 tId[j] = rawHit->softId(emcGeom->Detector());
562 if (tId[j] == 0)
continue;
563 tEnergy[j] = rawHit->energy();
567 towerEnergy = tEnergy[0];
570 if(etaClus.size()>0){
572 StPtrVecEmcRawHit& hE=clE->hit();
574 etaEnergy=clE->energy();
575 etaWidth=clE->sigmaEta();
577 if(phiClus.size()>0){
579 StPtrVecEmcRawHit& hP=clP->hit();
581 phiEnergy=clP->energy();
582 phiWidth=clP->sigmaPhi();
589 fraction = e/(tEnergy[0]+tEnergy[1]+tEnergy[2]+tEnergy[3]+tEnergy[4]);
596 emcGeom->getTheta(mod, eta, theta);
604 if (p->energyInDetector(StDetectorId(kBarrelEmcTowerId+2)))
606 if (p->energyInDetector(StDetectorId(kBarrelEmcTowerId+3)))
611 eTower = towerEnergy;
615 if (debug) cout <<
"++++++++++++ StSkimPionMaker::getPoint: tower, t, n, e, pt ---> "<<
id<<
" "<<t<<
" "<<n<<
" "<<e<<
" "<<pt<< endl;
623 Int_t StSkimPionMaker::doTrackPtHist(
float eT,
float threshold, TObjArray *photonlist)
625 if (debug) cout <<
"++++++++++++ StSkimPionMaker::doTrackPtHist: entered"<<endl;
630 if (debug) cout <<
"StSkimPionMaker::doTrackPtHist: Can't get Event pointer" << endl;
641 for (
int i = 0; i < numberOfGlobals; i++)
644 if (track && track->
flag()>=0) {
645 trackMomentum = track->
p();
650 if (debug) cout <<
"++++++++++++ StSkimPionMaker::doTrackPtHist: got tracks, try to get points"<<endl;
653 for (Int_t i=0; i<photonlist->GetEntries(); i++)
658 StEmcGeom* emcGeom = StEmcGeom::getEmcGeom(
"bemc");
661 emcGeom->
getBin(pointVector.phi(), pointVector.pseudoRapidity(), mod, eta, sub);
664 Float_t e = p->energy();
668 emcGeom->getTheta(mod, eta, theta);
669 Float_t pt = e * sin(theta);
680 if (debug) cout <<
"++++++++++++ StSkimPionMaker::getHiTowerEt: entered"<<endl;
688 if (debug) cout <<
"++++++++++ StSkimPionMaker::getHiTowerEt(): No BEMC detector"<<endl;
692 StEmcGeom* emcGeom = StEmcGeom::getEmcGeom(
"bemc");
693 Float_t hiTowerEt = 0;
694 Float_t e, eT, theta;
696 for (UInt_t i=1; i<=bemc->numberOfModules(); i++)
699 StSPtrVecEmcRawHit& hits = module->hits();
700 StSPtrVecEmcRawHitIterator hIter;
702 for (hIter=hits.begin(); hIter!=hits.end(); hIter++)
705 e = (*hIter)->energy();
706 emcGeom->getTheta((*hIter)->module(),(*hIter)->eta(), theta);
709 if (eT > hiTowerEt) hiTowerEt = eT;
718 Int_t StSkimPionMaker::associateTracksWithEmcPoints(
StMaker* anyMaker)
730 if (debug) cout <<
"++++++++++++ StSkimPionMaker::associateTracksWithEmcPoints: ENTERED"<<endl;
735 if (debug) cout <<
"++++++++++++ StSkimPionMaker::associateTracksWithEmcPoints: Can't get Event pointer" << endl;
741 if (debug) cout <<
"++++++++++++ StSkimPionMaker::associateTracksWithEmcPoints: No EMC Collection" << endl;
744 StSPtrVecEmcPoint& bEmcPoints = emccol->barrelPoints();
745 if (bEmcPoints.size()==0)
752 for (StSPtrVecEmcPointIterator it=bEmcPoints.begin(); it!=bEmcPoints.end(); it++)
753 (*it)->track().clear();
758 Double_t bFld = mField;
763 StEmcGeom* emcGeom = StEmcGeom::getEmcGeom(
"bemc");
772 for (
int i = 0; i < numberOfGlobals; i++)
775 if (track && track->
flag()>=0) {
776 Bool_t ok = pos->
trackOnEmc(&position, &momentum, track, bFld);
780 emcGeom->
getBin(position.phi(), position.pseudoRapidity(), mod, eta, sub);
782 for (StSPtrVecEmcPointIterator it=bEmcPoints.begin(); it!=bEmcPoints.end(); it++)
784 StPtrVecEmcCluster bEmcClusters = (*it)->cluster(kBarrelEmcTowerId);
786 for (StPtrVecEmcClusterIterator cIter=bEmcClusters.begin(); cIter!=bEmcClusters.end(); cIter++)
788 StPtrVecEmcRawHit& bEmcHits = (*cIter)->hit();
790 for (StPtrVecEmcRawHitIterator hIter=bEmcHits.begin(); hIter!=bEmcHits.end(); hIter++)
793 if (mod == (Int_t)(*hIter)->module() &&
794 eta == (Int_t)(*hIter)->eta() &&
795 sub == (Int_t)(*hIter)->sub())
798 (*it)->addTrack(dummyTrack);
813 Float_t StSkimPionMaker::getNeutralEnergySum(TObjArray *photonlist)
819 Float_t eSMDe1, eSMDp1;
821 Float_t sSMDe1, sSMDp1, sTower1;
823 for (Int_t i=0; i<photonlist->GetEntries(); i++)
826 StThreeVectorF v1 = getPoint(p1, id1,e1,pt1,n1,t1, eSMDe1, eSMDp1, eTower1,sSMDe1, sSMDp1, sTower1);
827 if ((n1 == 0)&&(id1 < 4801))
829 if (v1(0) == -10000.)
837 void StSkimPionMaker::getPhotonSpectra(TObjArray *photonlist,
int runnm,
float vertex_z,
int bemc_hits)
841 if (debug) cout <<
"++++++++++ StSkimPionMaker::GetPhotonSpectra: entered"<<endl;
846 Float_t eSMDe1, eSMDp1;
848 Float_t sSMDe1, sSMDp1, sTower1;
853 for (Int_t i=0; i<photonlist->GetEntries(); i++)
858 StThreeVectorF v1 = getPoint(p1, id1,e1,pt1,n1,t1, eSMDe1, eSMDp1, eTower1,sSMDe1, sSMDp1, sTower1);
859 if (v1(0) == -10000.)
863 if (debug) cout <<
"Photon track association: " << n1 << endl;
881 void StSkimPionMaker::getInvMass(
int mode, TObjArray *photonlist1, TObjArray *photonlist2,
882 float vertex_z,
StThreeVectorF primaryVertex,
int triggers[3],
int prescales[3])
884 if (debug) cout <<
"++++++++++ StSkimPionMaker::getInvMass: list1 "<<photonlist1->GetEntries()<<endl;
885 if (debug) cout <<
"++++++++++ StSkimPionMaker::getInvMass: list2 "<<photonlist2->GetEntries()<<endl;
887 Float_t chargedAssociation1 = 0;
888 Float_t chargedAssociation2 = 0;
891 for (Int_t i=0; i<photonlist1->GetEntries(); i++)
893 if (debug) cout <<
"++++++++++ StSkimPionMaker::getInvMass: first loop (mode "<<mode<<
")"<<endl;
902 Float_t sSMDe1, sSMDp1, sTower1;
904 StThreeVectorF v1 = getPoint(p1, id1,e1,pt1,n1,t1, eSMDe1, eSMDp1, eTower1,sSMDe1, sSMDp1, sTower1);
905 if (v1(0) == -10000.)
907 chargedAssociation1 = n1;
921 hitdat[10] = eTower1;
924 hitdat[13] = sTower1;
925 hitdat[14] = v1.phi();
926 hitdat[15] = v1.pseudoRapidity();
929 hitCand.SetAll(hitdat);
930 pi0Event->AddHit(hitCand);
935 if (debug) cout <<
"++++++++++ StSkimPionMaker::getInvMass: second loop (mode "<<mode<<
")"<<endl;
941 for (Int_t k=j; k<photonlist2->GetEntries(); k++)
951 Float_t sSMDe2, sSMDp2, sTower2;
953 StThreeVectorF v2 = getPoint(p2, id2,e2,pt2,n2,t2, eSMDe2, eSMDp2, eTower2,sSMDe2, sSMDp2, sTower2);
956 chargedAssociation2 = n2;
960 if (t1>-99 && t2>-99)
962 if (debug) cout <<
"++++++++++ StSkimPionMaker::getInvMass: get invariant mass for photon pair"<<endl;
974 v1rel = v1 - primaryVertex;
975 v2rel = v2 - primaryVertex;
982 Float_t dist = vdist.mag();
990 if (debug) cout <<
"Pi0 candidate: tower1: " << id1 <<
" tower2: " << id2 <<
" triggerTower: " << triggerTower << endl;
991 getMass(v1rel,v2rel,e1,e2, mInvPi0,pPi0,asym,cosAng, phi1,phi2);
998 cdat[0]= pPi0.perp();
1000 cdat[2] = pPi0.pseudoRapidity();
1001 cdat[3] = pPi0.phi();
1006 cdat[8] = chargedAssociation1;
1007 cdat[9] = chargedAssociation2;
1018 cdat[20] = v1.pseudoRapidity();
1019 cdat[21] = v1.phi();
1020 cdat[22] = v2.pseudoRapidity();
1021 cdat[23] = v2.phi();
1023 if ((mode==0)&&(cdat[0] > 0.5)) {
1025 piCand.SetAll(cdat);
1026 pi0Event->AddSkimPionCandidate(piCand);
1039 if (debug) cout <<
"++++++++++++ StSkimPionMaker::getMass(): enter pi0 minv calcualtion..." << endl;
1041 Double_t VecProd = P1.x()*P2.x() + P1.y()*P2.y() + P1.z()*P2.z();
1042 cosAng = VecProd/(P1.magnitude()*P2.magnitude());
1044 double mInv2 = 2*e1*e2*(1-cosAng);
1047 mInv = TMath::Sqrt(mInv2);
1052 asym = fabs(e1-e2)/(e1+e2);
1058 pPi0 = e1*P1/P1.mag() + e2*P2/P2.mag();
1060 if (debug) cout <<
"++++++++++++ StSkimPionMaker::getMass(): mInv, asym, pPi0: "<<mInv<<
" "<<asym<<
" "<<pPi0<<endl;
1068 void StSkimPionMaker::getTowerHitInfo()
1073 if (debug) cout <<
"++++++++++++ StSkimPionMaker::getTowerHitInfo(): Can't get Event pointer" << endl;
1079 if (debug) cout <<
"++++++++++++ StSkimPionMaker::getTowerHitInfo(): No EMC Collection" << endl;
1082 StSPtrVecEmcPoint& bEmcPoints = emccol->barrelPoints();
1083 if (bEmcPoints.size()==0)
1089 StEmcGeom* emcGeom = StEmcGeom::getEmcGeom(
"bemc");
1092 StDetectorId
id =
static_cast<StDetectorId
>(0+kBarrelEmcTowerId);
1096 for (UInt_t j=1; j<=120; j++)
1101 StSPtrVecEmcRawHit& rawHit = module->hits();
1102 for (Int_t k=0; k<(Int_t)rawHit.size(); k++)
1105 emcGeom->getId(rawHit[k]->module(),rawHit[k]->eta(),rawHit[k]->sub(),tid);
1111 if (debug) cout <<
"++++++++++ StSkimPionMaker::getTowerHitInfo(): no detector" << endl;
1117 Bool_t StSkimPionMaker::readPointList()
1125 if (debug) cout <<
"++++++++++++ StSkimPionMaker::readPointList(): Can't get Event pointer" << endl;
1131 if (debug) cout <<
"++++++++++++ StSkimPionMaker::readPointList(): No EMC Collection" << endl;
1134 StSPtrVecEmcPoint& bEmcPoints = emccol->barrelPoints();
1135 if (bEmcPoints.size()==0)
1140 if (debug) cout <<
"++++++++++++ StSkimPionMaker::readPointList(): Number of BEMC points: " << bEmcPoints.size() << endl;
1145 for (StSPtrVecEmcPointIterator it=bEmcPoints.begin(); it!=bEmcPoints.end(); it++)
1148 photonlist->Add(point);
1153 if (debug) cout <<
"++++++++++++ StSkimPionMaker::readPointList(): StEmcPoint point list: "<< photonlist->GetEntries() << endl;
1156 if (photonlist->GetEntries()<=0)
1158 photonlist->Clear();
Bool_t trackOnEmc(StThreeVectorD *position, StThreeVectorD *momentum, const StTrack *const track, Double_t magField, Double_t emcRadius=225.405) const
Track projection utility.
static TObjArray * globalTracks()
returns pointer to the global tracks list
bool isValid()
dump spinDb content for current time stamp
Double_t pt() const
Returns pT at point of dca to primary vertex.
TObjArray * photonlist
used for MC trigger selection and offline trig definition
int spin4usingBX48(int bx48)
8bit spin information
Accessor to the database for trigger id information.
short flag() const
Returns flag, (see StEvent manual for type information)
StMuDst * mMuDst
Pointer to the StMuDst class, which holds all the events information. Will be updated in the event lo...
const StThreeVectorF & p() const
Returns 3-momentum at dca to primary vertex.
Double_t eta() const
Returns pseudo rapidity at point of dca to primary vertex.
static TObjArray * primaryTracks()
returns pointer to a list of tracks belonging to the selected primary vertex
static StMuEvent * event()
returns pointer to current StMuEvent (class holding the event wise information, e.g. event number, run number)
UShort_t nHits() const
Bingchu.
StThreeVectorF dca(Int_t vtx_id=-1) const
Returns 3D distance of closest approach to primary vertex.
Int_t getBin(const Float_t phi, const Float_t eta, Int_t &m, Int_t &e, Int_t &s) const
Float_t getTotalPrescaleByTrgId(Int_t trgId)
bool isPolDirLong()
Returns true if beams are transversely polarized, false otherwise.