27#include <FairRootManager.h>
38 : FairTask(
"CbmAnaJpsiTask")
44 , fStsTrackMatches(NULL)
48 , fRichRingMatches(NULL)
52 , fTrdTrackMatches(NULL)
55 , fTofHitsMatches(NULL)
57 , fJpsiCandidates(NULL)
80 FairRootManager* ioman = FairRootManager::Instance();
81 if (NULL == ioman) { Fatal(
"CbmAnaJpsiTask::Init",
"RootManager not instantised!"); }
83 fMcTracks = (TClonesArray*) ioman->GetObject(
"MCTrack");
84 if (NULL ==
fMcTracks) { Fatal(
"CbmAnaJpsiTask::Init",
"No MCtrack Array! "); }
86 fStsPoints = (TClonesArray*) ioman->GetObject(
"StsPoint");
87 if (NULL ==
fStsPoints) { Fatal(
"CbmAnaJpsiTask::Init",
"No StsPoint Array! "); }
89 fStsHits = (TClonesArray*) ioman->GetObject(
"StsHit");
90 if (NULL ==
fStsHits) { Fatal(
"CbmAnaJpsiTask::Init",
"No StsHit Array! "); }
92 fStsTracks = (TClonesArray*) ioman->GetObject(
"StsTrack");
93 if (NULL ==
fStsTracks) { Fatal(
"CbmAnaJpsiTask::Init",
"No StsTracks Array! "); }
96 if (NULL ==
fStsTrackMatches) { Fatal(
"CbmAnaJpsiTask::Init",
"No StsTrackMatches Array!"); }
98 fRichHits = (TClonesArray*) ioman->GetObject(
"RichHit");
99 if (NULL ==
fRichHits) { Fatal(
"CbmAnaJpsiTask::Init",
"No RichHits Array! "); }
101 fRichPoints = (TClonesArray*) ioman->GetObject(
"RichPoint");
102 if (NULL ==
fRichPoints) { Fatal(
"CbmAnaJpsiTask::Init",
"No RichPoint Array! "); }
104 fRichRings = (TClonesArray*) ioman->GetObject(
"RichRing");
105 if (NULL ==
fRichRings) { Fatal(
"CbmAnaJpsiTask::Init",
"No RichRings Array! "); }
108 if (NULL ==
fRichRingMatches) { Fatal(
"CbmAnaJpsiTask::Init",
"No RichRingMatch array!"); }
111 fTrdHits = (TClonesArray*) ioman->GetObject(
"TrdHit");
112 if (NULL ==
fTrdHits) { Fatal(
"CbmAnaJpsiTask::Init",
"No TrdHits Array! "); }
114 fTrdPoints = (TClonesArray*) ioman->GetObject(
"TrdPoint");
115 if (NULL ==
fTrdPoints) { Fatal(
"CbmAnaJpsiTask::Init",
"No TrdPoint Array! "); }
118 if (NULL ==
fTrdTrackMatches) { Fatal(
"CbmAnaDielectronTask::Init",
"No TrdTrackMatch array!"); }
120 fTrdTracks = (TClonesArray*) ioman->GetObject(
"TrdTrack");
121 if (NULL ==
fTrdTracks) { Fatal(
"CbmAnaJpsiTask::Init",
"No TrdTracks Array!"); }
124 fTofHits = (TClonesArray*) ioman->GetObject(
"TofHit");
125 if (NULL ==
fTofHits) { Fatal(
"CbmAnaJpsiTask::Init",
"No TofHits Array! "); }
128 if (NULL ==
fTofHitsMatches) { Fatal(
"CbmAnaJpsiTask::Init",
"No TofHitMatch Array! "); }
130 fTofPoints = (TClonesArray*) ioman->GetObject(
"TofPoint");
131 if (NULL ==
fTofPoints) { Fatal(
"CbmAnaJpsiTask::Init",
"No TofPoint Array! "); }
133 fGlobalTracks = (TClonesArray*) ioman->GetObject(
"GlobalTrack");
134 if (NULL ==
fGlobalTracks) { Fatal(
"CbmAnaJpsiTask::Init",
"No GlobalTracks Array!"); }
142 if (
nullptr ==
fPrimVertex) { LOG(fatal) <<
"No PrimaryVertex array!"; }
145 ioman->Register(
"JpsiCandidates",
"Jpsi",
fJpsiCandidates, IsOutputBranchPersistent(
"JpsiCandidates"));
154 double min,
double max)
158 fHM->
Create1<TH1D>(hname, hname +
";" + axisX +
";" + axisY, nBins,
min,
max);
163 const string& axisZ,
double nBinsX,
double minX,
double maxX,
double nBinsY,
164 double minY,
double maxY)
168 fHM->
Create2<TH2D>(hname, hname +
";" + axisX +
";" + axisY +
";" + axisZ, nBinsX, minX, maxX, nBinsY, minY, maxY);
173 double min,
double max)
177 fHM->
Create1<TH1D>(hname, hname +
";" + axisX +
";" + axisY, nBins,
min,
max);
182 const string& axisZ,
double nBinsX,
double minX,
double maxX,
double nBinsY,
183 double minY,
double maxY)
188 fHM->
Create2<TH2D>(hname, hname +
";" + axisX +
";" + axisY +
";" + axisZ, nBinsX, minX, maxX, nBinsY, minY, maxY);
193 double nBins,
double min,
double max)
197 fHM->
Create1<TH1D>(hname1, hname1 +
";" + axisX +
";" + axisY, nBins,
min,
max);
199 fHM->
Create1<TH1D>(hname2, hname2 +
";" + axisX +
";" + axisY, nBins,
min,
max);
201 fHM->
Create1<TH1D>(hname3, hname3 +
";" + axisX +
";" + axisY, nBins,
min,
max);
203 fHM->
Create1<TH1D>(hname4, hname4 +
";" + axisX +
";" + axisY, nBins,
min,
max);
205 fHM->
Create1<TH1D>(hname5, hname5 +
";" + axisX +
";" + axisY, nBins,
min,
max);
207 fHM->
Create1<TH1D>(hname6, hname6 +
";" + axisX +
";" + axisY, nBins,
min,
max);
209 fHM->
Create1<TH1D>(hname7, hname7 +
";" + axisX +
";" + axisY, nBins,
min,
max);
211 fHM->
Create1<TH1D>(hname8, hname8 +
";" + axisX +
";" + axisY, nBins,
min,
max);
213 fHM->
Create1<TH1D>(hname9, hname9 +
";" + axisX +
";" + axisY, nBins,
min,
max);
222 fHM->
Create1<TH1D>(
"fh_event_number",
"fh_event_number;a.u.;Number of events", 1, 0, 1.);
225 CreateSourceTypesH2(
"fh_rich_pmt_xy",
"X [cm]",
"Y [cm]",
"Hits/cm^{2}/event", 220, -110, 110, 400, -200, 200);
228 CreateSourceTypesH1(
"fh_track_chi2prim",
"#chi^{2}_{prim}",
"particles/event", 200, 0., 20.);
233 CreateSourceTypesH1(
"fh_track_rich_ann",
"RICH ANN output",
"particles/event", 120, -1.2, 1.2);
234 CreateSourceTypesH1(
"fh_track_trd_ann",
"TRD ANN output",
"particles/event", 120, -1.2, 1.2);
235 CreateSourceTypesH2(
"fh_track_tof_m2",
"P [GeV/c]",
"m^{2} [GeV/c^{2}]^{2}",
"particles/event", 900, 0., 9., 360,
239 fHM->
Create2<TH2D>(
"fh_vertex_el_gamma_xz",
"fh_vertex_el_gamma_xz;Z [cm];X [cm];Counter per event", 200, -10., 190.,
241 fHM->
Create2<TH2D>(
"fh_vertex_el_gamma_yz",
"fh_vertex_el_gamma_yz;Z [cm];Y [cm];Counter per event", 200, -10., 190.,
243 fHM->
Create2<TH2D>(
"fh_vertex_el_gamma_xy",
"fh_vertex_el_gamma_xy;X [cm];Y [cm];Counter per event", 400, -130., 130.,
245 fHM->
Create2<TH2D>(
"fh_vertex_el_gamma_rz",
"fh_vertex_el_gamma_rz;Z [cm];#sqrt{X^{2}+Y^{2}} [cm];Counter per event",
246 300, -10., 190., 300, 0., 150.);
249 fHM->
Create1<TH1D>(
"fh_nof_bg_tracks",
"fh_nof_bg_tracks;Analysis steps;Number of BG particles/event",
251 fHM->
Create1<TH1D>(
"fh_nof_el_tracks",
"fh_nof_el_tracks;Analysis steps;Number of signal particles/event",
263 CreateAnalysisStepsH1(
"fh_bg_truematch_minv",
"M_{ee} [GeV/c^{2}]",
"particles/event", 4000, 0., 4.);
264 CreateAnalysisStepsH1(
"fh_bg_truematch_el_minv",
"M_{ee} [GeV/c^{2}]",
"particles/event", 4000, 0., 4.);
265 CreateAnalysisStepsH1(
"fh_bg_truematch_notel_minv",
"M_{ee} [GeV/c^{2}]",
"particles/event", 4000, 0., 4.);
269 CreateAnalysisStepsH2(
"fh_signal_minv_pt",
"M_{ee} [GeV/c^{2}]",
"P_{t} [GeV/c]",
"particles/event", 100, 0., 4., 20,
275 CreateAnalysisStepsH2(
"fh_signal_pty",
"Rapidity",
"P_{t} [GeV/c]",
"particles/event", 80, 0., 4., 80, 0., 4.);
278 fHM->
Create1<TH1D>(
"fh_nof_mismatches",
"fh_nof_mismatches;Analysis steps;particles/event",
280 fHM->
Create1<TH1D>(
"fh_nof_mismatches_rich",
"fh_nof_mismatches_rich;Analysis steps;particles/event",
282 fHM->
Create1<TH1D>(
"fh_nof_mismatches_trd",
"fh_nof_mismatches_trd;Analysis steps;particles/event",
284 fHM->
Create1<TH1D>(
"fh_nof_mismatches_tof",
"fh_nof_mismatches_tof;Analysis steps;particles/event",
289 fHM->
Create2<TH2D>(
"fh_track_el_mom_mc_rec",
"fh_track_el_mom_mc_rec;P_{mc};P_{rec};Entries", 250, 0., 25., 250, 0.,
296 fHM->
Create1<TH1D>(
"fh_ee_signal_minv_diff_ptcuts_0",
297 "fh_ee_signal_minv_diff_ptcuts_0;M_{ee} [GeV/c^{2}];particles/event", 4000, 0., 4.);
298 fHM->
Create1<TH1D>(
"fh_ee_signal_minv_diff_ptcuts_1",
299 "fh_ee_signal_minv_diff_ptcuts_1;M_{ee} [GeV/c^{2}];particles/event", 4000, 0., 4.);
300 fHM->
Create1<TH1D>(
"fh_ee_signal_minv_diff_ptcuts_2",
301 "fh_ee_signal_minv_diff_ptcuts_2;M_{ee} [GeV/c^{2}];particles/event", 4000, 0., 4.);
302 fHM->
Create1<TH1D>(
"fh_ee_signal_minv_diff_ptcuts_3",
303 "fh_ee_signal_minv_diff_ptcuts_3;M_{ee} [GeV/c^{2}];particles/event", 4000, 0., 4.);
304 fHM->
Create1<TH1D>(
"fh_ee_signal_minv_diff_ptcuts_4",
305 "fh_ee_signal_minv_diff_ptcuts_4;M_{ee} [GeV/c^{2}];particles/event", 4000, 0., 4.);
306 fHM->
Create1<TH1D>(
"fh_ee_signal_minv_diff_ptcuts_5",
307 "fh_ee_signal_minv_diff_ptcuts_5;M_{ee} [GeV/c^{2}];particles/event", 4000, 0., 4.);
308 fHM->
Create1<TH1D>(
"fh_ee_signal_minv_diff_ptcuts_6",
309 "fh_ee_signal_minv_diff_ptcuts_6;M_{ee} [GeV/c^{2}];particles/event", 4000, 0., 4.);
310 fHM->
Create1<TH1D>(
"fh_ee_signal_minv_diff_ptcuts_7",
311 "fh_ee_signal_minv_diff_ptcuts_7;M_{ee} [GeV/c^{2}];particles/event", 4000, 0., 4.);
319 fHM->
H1(
"fh_event_number")->Fill(0.5);
322 cout <<
"CbmAnaJpsiTask, event No. " <<
fEventNum << endl;
326 Fatal(
"CbmAnaJpsiTask::Exec",
"No PrimaryVertex array!");
331 Fatal(
"CbmAnaDielectronTask::Exec",
"No PrimaryVertex array!");
358 Int_t nofRichHits =
fRichHits->GetEntriesFast();
359 for (Int_t iHit = 0; iHit < nofRichHits; iHit++) {
361 if (NULL == hit)
continue;
364 if (iPoint < 0)
continue;
366 FairMCPoint* point =
static_cast<FairMCPoint*
>(
fRichPoints->At(iPoint));
367 if (NULL == point)
continue;
369 Int_t iMCTrack = point->GetTrackID();
371 if (NULL == track)
continue;
374 if (iMother == -1)
continue;
382 Int_t nMcTracks =
fMcTracks->GetEntriesFast();
383 for (Int_t i = 0; i < nMcTracks; i++) {
386 if (isMcGammaElectron) {
389 fHM->
H2(
"fh_vertex_el_gamma_xz")->Fill(
v.Z(),
v.X());
390 fHM->
H2(
"fh_vertex_el_gamma_yz")->Fill(
v.Z(),
v.Y());
391 fHM->
H2(
"fh_vertex_el_gamma_xy")->Fill(
v.X(),
v.Y());
392 fHM->
H2(
"fh_vertex_el_gamma_rz")->Fill(
v.Z(), sqrt(
v.X() *
v.X() +
v.Y() *
v.Y()));
402 for (Int_t iGTrack = 0; iGTrack < nofGlobalTracks; iGTrack++) {
408 if (NULL == globalTrack)
continue;
412 if (cand.
fStsInd < 0)
continue;
414 if (NULL == stsTrack)
continue;
423 if (NULL == richRing)
continue;
429 if (cand.
fTrdInd < 0)
continue;
431 if (trdTrack == NULL)
continue;
436 if (cand.
fTofInd < 0)
continue;
438 if (tofHit == NULL)
continue;
452 for (
int i = 0; i < nCand; i++) {
460 if (stsMatch == NULL)
continue;
464 if (mcTrack1 == NULL)
continue;
474 if (richMatch == NULL)
continue;
482 if (trdMatch == NULL)
continue;
488 if (tofInd < 0)
continue;
490 if (tofHit == NULL)
continue;
492 if (tofHitMatch == NULL) {
continue; }
494 if (tofPointIndex < 0)
continue;
495 FairMCPoint* tofPoint = (FairMCPoint*)
fTofPoints->At(tofPointIndex);
496 if (tofPoint == NULL)
continue;
497 fCandidates[i].fTofMcTrackId = tofPoint->GetTrackID();
507 for (Int_t i = 0; i < nCand; i++) {
586 for (Int_t i = 0; i < nCand; i++) {
615 if (tr == NULL)
return false;
638 bool nTofHitsGreaterZero =
false;
641 nTofHitsGreaterZero =
true;
643 if ((nMvdHits +
nStsHits) >= 4 && nRichHits >= 7 && nTrdHits >= 6 && nTofHitsGreaterZero)
649 Int_t nMcTracks =
fMcTracks->GetEntriesFast();
650 for (Int_t i = 0; i < nMcTracks; i++) {
653 double_t mom = mctrack->
GetP();
666 Int_t nMcTracks =
fMcTracks->GetEntriesFast();
667 for (Int_t iP = 0; iP < nMcTracks; iP++) {
670 if (!isMcSignalElectronP)
continue;
673 for (Int_t iM = 0; iM < nMcTracks; iM++) {
674 if (iP == iM)
continue;
677 if (!isMcSignalElectronM)
continue;
682 if (isMcSignalElectronM && isMcSignalElectronP) {
688 if (isAccP && isAccM) {
705 Double_t weight = 1.;
711 ->Fill(parRec->
fMinv, weight);
715 ->Fill(parRec->
fMinv, weight);
719 ->Fill(parRec->
fMinv, weight);
726 ->Fill(parRec->
fMinv, weight);
730 ->Fill(parRec->
fMinv, weight);
734 ->Fill(parRec->
fMinv, weight);
742 ->Fill(parRec->
fMinv, weight);
746 ->Fill(parRec->
fMinv, weight);
750 ->Fill(parRec->
fMinv, weight);
760 int binNum = (double) step + 0.5;
769 if (mcCand != NULL) {
775 fHM->
H1(
"fh_nof_bg_tracks")->Fill(binNum);
785 fHM->
H2(
"fh_source_tracks")->Fill(binNum, 1.5);
787 else if (pdg == 211 || pdg == -211) {
788 fHM->
H2(
"fh_source_tracks")->Fill(binNum, 2.5);
790 else if (pdg == 2212) {
791 fHM->
H2(
"fh_source_tracks")->Fill(binNum, 3.5);
793 else if (pdg == 321 || pdg == -321) {
794 fHM->
H2(
"fh_source_tracks")->Fill(binNum, 4.5);
798 fHM->
H2(
"fh_source_tracks")->Fill(binNum, 5.5);
801 fHM->
H2(
"fh_source_tracks")->Fill(binNum, 6.5);
815 Bool_t isBG = !isSignal;
836 if (isBG && !isMismatch) {
850 for (Int_t i = 0; i < ncand; i++) {
854 if (NULL != mcTrack) pdg = mcTrack->
GetPdgCode();
867 for (Int_t iM = 0; iM < ncand; iM++) {
872 for (Int_t iP = 0; iP < ncand; iP++) {
876 if (iM == iP)
continue;
879 if (mctrackP != NULL && mctrackM != NULL)
885 Bool_t isChiPrimary =
895 if (isChiPrimary && isEl && isPtCut) {
899 if (isSignal && isChiPrimary && isEl && pRec.
fPt < 0.4) {
902 if (isSignal && isChiPrimary && isEl && pRec.
fPt >= 0.4 && pRec.
fPt < 0.8) {
905 if (isSignal && isChiPrimary && isEl && pRec.
fPt >= 0.8 && pRec.
fPt < 1.2) {
908 if (isSignal && isChiPrimary && isEl && pRec.
fPt >= 1.2 && pRec.
fPt < 1.6) {
911 if (isSignal && isChiPrimary && isEl && pRec.
fPt >= 1.6 && pRec.
fPt < 2.0) {
914 if (isSignal && isChiPrimary && isEl && pRec.
fPt >= 2.0 && pRec.
fPt < 2.4) {
917 if (isSignal && isChiPrimary && isEl && pRec.
fPt >= 2.4 && pRec.
fPt < 3.0) {
920 if (isSignal && isChiPrimary && isEl && pRec.
fPt >= 3.0 && pRec.
fPt < 6.0) {
959 Int_t nofRichHits =
fRichHits->GetEntriesFast();
960 for (Int_t i = 0; i < nofRichHits; i++) {
963 if (NULL == richHit)
continue;
964 Int_t PointInd = richHit->
GetRefId();
965 if (PointInd < 0)
continue;
969 if (NULL == richMcPoint)
continue;
972 Int_t photonMcTrackId = richMcPoint->GetTrackID();
973 if (photonMcTrackId == -1)
continue;
975 if (NULL == photonMcTrack)
continue;
978 Int_t photonMotherId = photonMcTrack->
GetMotherId();
979 if (photonMotherId == -1)
continue;
981 if (NULL == photonMotherMcTrack)
continue;
986 if (isMcSignalElectron) {
993 if (isMcGammaElectron)
1010 TDirectory* oldir = gDirectory;
1011 TFile* outFile = FairRootManager::Instance()->GetOutFile();
1012 if (outFile != NULL) {
1016 gDirectory->cd(oldir->GetPath());
ClassImp(CbmConverterManager)
@ kMvd
Micro-Vertex Detector.
@ kTrd
Transition Radiation Detector.
@ kTof
Time-of-flight Detector.
@ kSts
Silicon Tracking System.
Helper functions for drawing 1D and 2D histograms and graphs.
Data class for a reconstructed hit in the STS.
Data class for STS tracks.
Class for hits in TRD detector.
friend fscal max(fscal x, fscal y)
friend fscal min(fscal x, fscal y)
Bool_t fIsMcGammaElectron
Bool_t fIsMcSignalElectron
Bool_t fIsRecoTrackAccepted
static const std::vector< std::string > fSourceTypes
static const int fNofAnaSteps
static const std::vector< std::string > fAnaSteps
static const int fNofSourceTypes
static CbmAnaJpsiKinematicParams KinematicParamsWithCandidates(const CbmAnaJpsiCandidate *candP, const CbmAnaJpsiCandidate *candM)
static CbmAnaJpsiKinematicParams KinematicParamsWithMcTracks(const CbmMCTrack *mctrackP, const CbmMCTrack *mctrackM)
TClonesArray * fGlobalTracks
void CreateAnalysisStepsH1(const string &name, const string &axisX, const string &axisY, double nBins, double min, double max)
TClonesArray * fTrdTrackMatches
TClonesArray * fStsPoints
virtual void Exec(Option_t *option)
Inherited from FairTask.
std::vector< CbmAnaJpsiCandidate > fCandidates
void AssignMcToCandidates()
Assign MC info to the candidates.
TClonesArray * fTrdTracks
void CreateSourceTypesH2(const string &name, const string &axisX, const string &axisY, const string &axisZ, double nBinsX, double minX, double maxX, double nBinsY, double minY, double maxY)
TClonesArray * fRichRingMatches
void FillPairHists(CbmAnaJpsiCandidate *candP, CbmAnaJpsiCandidate *candM, CbmAnaJpsiKinematicParams *parMc, CbmAnaJpsiKinematicParams *parRec, CbmAnaJpsiAnalysisSteps step)
void CreateAnaStepsPairSourceH1(const string &name, const string &axisX, const string &axisY, double nBins, double min, double max)
void CopyCandidatesToOutputArray()
virtual void Finish()
Inherited from FairTask.
void FillRichRingNofHits()
TClonesArray * fRichPoints
void PairMcAndAcceptance()
Fill histograms for MC and Acc pairs.
TClonesArray * fStsTracks
virtual ~CbmAnaJpsiTask()
Standard destructor.
CbmAnaJpsiTask()
Standard constructor.
Bool_t IsMcTrackAccepted(Int_t mcTrackInd)
Return true if MC track is in detector acceptance.
void SingleParticleAcceptance()
TClonesArray * fTrdPoints
void PairSource(CbmAnaJpsiCandidate *candP, CbmAnaJpsiCandidate *candM, CbmAnaJpsiAnalysisSteps step, CbmAnaJpsiKinematicParams *parRec)
void DifferenceSignalAndBg()
Fill histograms for signal and BG electrons.
void CreateSourceTypesH1(const string &name, const string &axisX, const string &axisY, double nBins, double min, double max)
TClonesArray * fTofHitsMatches
TClonesArray * fJpsiCandidates
void IsRecoTrackAccepted(CbmAnaJpsiCandidate *cand)
void FillCandidates()
Fill fCandidates array with JPsiCandidates. Candidate should have STS, RICH, TRD, TOF local segments.
virtual InitStatus Init()
Inherited from FairTask.
std::map< Int_t, Int_t > fNofHitsInRingMap
void TrackSource(CbmAnaJpsiCandidate *cand, CbmAnaJpsiAnalysisSteps step, Int_t pdg)
void IsMismatch(CbmAnaJpsiCandidate *cand)
void IsElectron(Int_t globalTrackIndex, Double_t momentum, CbmAnaJpsiCandidate *cand)
Identifies particle as Electron (or not)
TClonesArray * fStsTrackMatches
TClonesArray * fTofPoints
TClonesArray * fRichRings
void CreateAnalysisStepsH2(const string &name, const string &axisX, const string &axisY, const string &axisZ, double nBinsX, double minX, double maxX, double nBinsY, double minY, double maxY)
static Bool_t IsMcSignalElectron(CbmMCTrack *mctrack)
static void CalculateAndSetTrackParamsToCandidate(CbmAnaJpsiCandidate *cand, CbmStsTrack *stsTrack, CbmKFVertex &kfVertex)
static Bool_t IsMcPi0Electron(CbmMCTrack *mctrack, TClonesArray *mcTracks)
static Bool_t IsMcGammaElectron(CbmMCTrack *mctrack, TClonesArray *mcTracks)
int32_t GetStsTrackIndex() const
int32_t GetRichRingIndex() const
int32_t GetTofHitIndex() const
int32_t GetTrdTrackIndex() const
TH2 * H2(const std::string &name) const
Return pointer to TH2 histogram.
void Create2(const std::string &name, const std::string &title, Int_t nofBinsX, Double_t minBinX, Double_t maxBinX, Int_t nofBinsY, Double_t minBinY, Double_t maxBinY)
Helper function for creation of 2-dimensional histograms and profiles. Template argument is a real ob...
void WriteToFile()
Write all objects to current opened file.
void Create1(const std::string &name, const std::string &title, Int_t nofBins, Double_t minBin, Double_t maxBin)
Helper function for creation of 1-dimensional histograms and profiles. Template argument is a real ob...
TH1 * H1(const std::string &name) const
Return pointer to TH1 histogram.
Bool_t IsTrdElectron(Int_t globalTrackindex, Double_t momentum)
Identify electron in RICH detector.
Double_t GetTrdAnn(Int_t globalTrackindex, Double_t momentum)
Return ANN value for electron Identification in the TRD detector.
Double_t GetRichAnn(Int_t globalTrackIndex, Double_t momentum)
Identify electron in RICH detector.
Bool_t IsTofElectron(Int_t globalTrackIndex, Double_t momentum, Double_t eventTime=1000.)
Identify electron in RICH detector.
Bool_t IsRichElectron(Int_t globalTrackIndex, Double_t momentum)
Identify electron in RICH detector.
static CbmLitGlobalElectronId & GetInstance()
int32_t GetMotherId() const
int32_t GetPdgCode() const
void GetStartVertex(TVector3 &vertex) const
int32_t GetNPoints(ECbmModuleId detId) const
const CbmLink & GetMatchedLink() const
int32_t GetNofHits() const
int32_t GetNofMvdHits() const
int32_t GetNofStsHits() const
virtual int32_t GetNofHits() const