CbmRoot
Loading...
Searching...
No Matches
CbmAnaConversionPhotons2.cxx
Go to the documentation of this file.
1/* Copyright (C) 2015-2019 Fakultaet fuer Mathematik und Naturwissenschaften, Bergische Universitaet Wuppertal, Wuppertal
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Sascha Reinecke [committer], Florian Uhlig, Andrey Lebedev */
4
16
17#include "CbmDrawHist.h"
18#include "CbmGlobalTrack.h"
19#include "CbmL1PFFitter.h"
20#include "CbmMCTrack.h"
21#include "CbmRichPoint.h"
22#include "CbmRichRing.h"
23#include "CbmStsTrack.h"
24#include "CbmTrackMatchNew.h"
25
26#include "FairRootManager.h"
27#include <Logger.h>
28
32
33#include "TCanvas.h"
34
35#include <algorithm>
36#include <map>
37
38
39using namespace std;
40
41
43 : fRichPoints(NULL)
44 , fRichRings(NULL)
45 , fRichRingMatches(NULL)
46 , fMcTracks(NULL)
47 , fStsTracks(NULL)
48 , fStsTrackMatches(NULL)
49 , fGlobalTracks(NULL)
50 , fPrimVertex(NULL)
51 , fKFVertex()
52 , fHistoList_photons()
53 , fHistoList_photons_withRICH()
54 , fHistoList_photons_withRICH_withChi()
55 , fHistoList_photons_withRICH_fromTarget()
56 , fRecoTracklist_gtIndex()
57 , fRecoTracklist_mcIndex()
58 , fRecoTracklist_momentum()
59 , fRecoTracklist_chi()
60 , fRecoTracklist_mctrack()
61 , fRecoTracklist_withRICH_gtIndex()
62 , fRecoTracklist_withRICH_mcIndex()
63 , fRecoTracklist_withRICH_momentum()
64 , fRecoTracklist_withRICH_chi()
65 , fRecoTracklist_withRICH_mctrack()
66 , fh2Electrons_angle_all(NULL)
67 , fh2Electrons_angle_combBack(NULL)
68 , fh2Electrons_angle_allSameG(NULL)
69 , fh2Electrons_angle_all_cuts(NULL)
70 , fh2Electrons_angle_combBack_cuts(NULL)
71 , fh2Electrons_angle_allSameG_cuts(NULL)
72 , fh2Electrons_angle_CUTcomparison(NULL)
73 , fh2Electrons_angle_CUTcomparison_chi(NULL)
74 , fh2Electrons_angle_CUTcomparison_withRICH(NULL)
75 , fh2Electrons_angle_CUTcomparison_withRICH_chi(NULL)
76 , fh2Electrons_angle_CUTcomparison_withRICH_withChi(NULL)
77 , fh2Electrons_invmass_all(NULL)
78 , fh2Electrons_invmass_combBack(NULL)
79 , fh2Electrons_invmass_allSameG(NULL)
80 , fh2Electrons_invmass_all_cut(NULL)
81 , fh2Electrons_invmass_combBack_cut(NULL)
82 , fh2Electrons_invmass_allSameG_cut(NULL)
83 , fh2Electrons_angleVSpt_all(NULL)
84 , fh2Electrons_angleVSpt_combBack(NULL)
85 , fh2Electrons_angleVSpt_allSameG(NULL)
86 , fh2Electrons_invmassVSpt_all(NULL)
87 , fh2Electrons_invmassVSpt_combBack(NULL)
88 , fh2Electrons_invmassVSpt_allSameG(NULL)
89 , fh2Electrons_angle_withRICH_all(NULL)
90 , fh2Electrons_angle_withRICH_combBack(NULL)
91 , fh2Electrons_angle_withRICH_allSameG(NULL)
92 , fh2Electrons_angleVSpt_withRICH_all(NULL)
93 , fh2Electrons_angleVSpt_withRICH_combBack(NULL)
94 , fh2Electrons_angleVSpt_withRICH_allSameG(NULL)
95 , fh2Electrons_invmass_withRICH_all(NULL)
96 , fh2Electrons_invmass_withRICH_combBack(NULL)
97 , fh2Electrons_invmass_withRICH_allSameG(NULL)
98 , fh2Electrons_invmassVSpt_withRICH_all(NULL)
99 , fh2Electrons_invmassVSpt_withRICH_combBack(NULL)
100 , fh2Electrons_invmassVSpt_withRICH_allSameG(NULL)
101 , fh2Electrons_angle_withRICH_withChi_all(NULL)
102 , fh2Electrons_angle_withRICH_withChi_combBack(NULL)
103 , fh2Electrons_angle_withRICH_withChi_allSameG(NULL)
104 , fh2Electrons_angleVSpt_withRICH_withChi_all(NULL)
105 , fh2Electrons_angleVSpt_withRICH_withChi_combBack(NULL)
106 , fh2Electrons_angleVSpt_withRICH_withChi_allSameG(NULL)
107 , fh2Electrons_invmass_withRICH_withChi_all(NULL)
108 , fh2Electrons_invmass_withRICH_withChi_combBack(NULL)
109 , fh2Electrons_invmass_withRICH_withChi_allSameG(NULL)
110 , fh2Electrons_invmassVSpt_withRICH_withChi_all(NULL)
111 , fh2Electrons_invmassVSpt_withRICH_withChi_combBack(NULL)
112 , fh2Electrons_invmassVSpt_withRICH_withChi_allSameG(NULL)
113 , fh2Electrons_angle_withRICH_fromTarget_all(NULL)
114 , fh2Electrons_angle_withRICH_fromTarget_combBack(NULL)
115 , fh2Electrons_angle_withRICH_fromTarget_allSameG(NULL)
116 , fh2Electrons_angleVSpt_withRICH_fromTarget_all(NULL)
117 , fh2Electrons_angleVSpt_withRICH_fromTarget_combBack(NULL)
118 , fh2Electrons_angleVSpt_withRICH_fromTarget_allSameG(NULL)
119 , fh2Electrons_invmass_withRICH_fromTarget_all(NULL)
120 , fh2Electrons_invmass_withRICH_fromTarget_combBack(NULL)
121 , fh2Electrons_invmass_withRICH_fromTarget_allSameG(NULL)
122 , fh2Electrons_invmassVSpt_withRICH_fromTarget_all(NULL)
123 , fh2Electrons_invmassVSpt_withRICH_fromTarget_combBack(NULL)
124 , fh2Electrons_invmassVSpt_withRICH_fromTarget_allSameG(NULL)
125 , fVector_combinations()
126 , fh2Electrons_fullrecoCheck(NULL)
127 , timer()
128 , fTime(0.)
129{
130}
131
133
134
136{
137 FairRootManager* ioman = FairRootManager::Instance();
138 if (NULL == ioman) { Fatal("CbmAnaConversion::Init", "RootManager not instantised!"); }
139
140 fRichPoints = (TClonesArray*) ioman->GetObject("RichPoint");
141 if (NULL == fRichPoints) { Fatal("CbmAnaConversion::Init", "No RichPoint array!"); }
142
143 fMcTracks = (TClonesArray*) ioman->GetObject("MCTrack");
144 if (NULL == fMcTracks) { Fatal("CbmAnaConversion::Init", "No MCTrack array!"); }
145
146 fStsTracks = (TClonesArray*) ioman->GetObject("StsTrack");
147 if (NULL == fStsTracks) { Fatal("CbmAnaConversion::Init", "No StsTrack array!"); }
148
149 fStsTrackMatches = (TClonesArray*) ioman->GetObject("StsTrackMatch");
150 if (NULL == fStsTrackMatches) { Fatal("CbmAnaConversion::Init", "No StsTrackMatch array!"); }
151
152 fGlobalTracks = (TClonesArray*) ioman->GetObject("GlobalTrack");
153 if (NULL == fGlobalTracks) { Fatal("CbmAnaConversion::Init", "No GlobalTrack array!"); }
154
155 // Get pointer to PrimaryVertex object from IOManager if it exists
156 // The old name for the object is "PrimaryVertex" the new one
157 // "PrimaryVertex." Check first for the new name
158 fPrimVertex = dynamic_cast<CbmVertex*>(ioman->GetObject("PrimaryVertex."));
159 if (nullptr == fPrimVertex) { fPrimVertex = dynamic_cast<CbmVertex*>(ioman->GetObject("PrimaryVertex")); }
160 if (nullptr == fPrimVertex) { LOG(fatal) << "No PrimaryVertex array!"; }
161
162 fRichRings = (TClonesArray*) ioman->GetObject("RichRing");
163 if (NULL == fRichRings) { Fatal("CbmAnaConversion::Init", "No RichRing array!"); }
164
165 fRichRingMatches = (TClonesArray*) ioman->GetObject("RichRingMatch");
166 if (NULL == fRichRingMatches) { Fatal("CbmAnaConversion::Init", "No RichRingMatch array!"); }
167
168
169 InitHistos();
170}
171
172
174{
175 fHistoList_photons.clear();
179
180
181 // opening angles for all photon-energies (RECO)
183 new TH1D("fh2Electrons_angle_all", "fh2Electrons_angle_all; opening angle [deg]; #", 2001, -0.05, 200.05);
185 new TH1D("fh2Electrons_angle_combBack", "fh2Electrons_angle_combBack; opening angle [deg]; #", 2001, -0.05, 200.05);
187 new TH1D("fh2Electrons_angle_allSameG", "fh2Electrons_angle_allSameG; opening angle [deg]; #", 1001, -0.05, 100.05);
191
192
193 // histogram for comparison of different opening angle cuts and their influence on signal and background amounts
195 new TH1I("fh2Electrons_angle_CUTcomparison", "fh2Electrons_angle_CUTcomparison; ; #", 14, 0., 14.);
197 fh2Electrons_angle_CUTcomparison->GetXaxis()->SetBinLabel(1, "true, no cut");
198 fh2Electrons_angle_CUTcomparison->GetXaxis()->SetBinLabel(2, "false, no cut");
199 fh2Electrons_angle_CUTcomparison->GetXaxis()->SetBinLabel(3, "true, cut1");
200 fh2Electrons_angle_CUTcomparison->GetXaxis()->SetBinLabel(4, "false, cut1");
201 fh2Electrons_angle_CUTcomparison->GetXaxis()->SetBinLabel(5, "true, cut2");
202 fh2Electrons_angle_CUTcomparison->GetXaxis()->SetBinLabel(6, "false, cut2");
203 fh2Electrons_angle_CUTcomparison->GetXaxis()->SetBinLabel(7, "true, cut3");
204 fh2Electrons_angle_CUTcomparison->GetXaxis()->SetBinLabel(8, "false, cut3");
205 fh2Electrons_angle_CUTcomparison->GetXaxis()->SetBinLabel(9, "true, cut4");
206 fh2Electrons_angle_CUTcomparison->GetXaxis()->SetBinLabel(10, "false, cut4");
207 fh2Electrons_angle_CUTcomparison->GetXaxis()->SetBinLabel(11, "true, cut5");
208 fh2Electrons_angle_CUTcomparison->GetXaxis()->SetBinLabel(12, "false, cut5");
209 fh2Electrons_angle_CUTcomparison->GetXaxis()->SetBinLabel(13, "true, cut6");
210 fh2Electrons_angle_CUTcomparison->GetXaxis()->SetBinLabel(14, "false, cut6");
211
212
214 new TH1I("fh2Electrons_angle_CUTcomparison_chi", "fh2Electrons_angle_CUTcomparison_chi; ; #", 10, 0., 10.);
216 fh2Electrons_angle_CUTcomparison_chi->GetXaxis()->SetBinLabel(1, "true, no cut");
217 fh2Electrons_angle_CUTcomparison_chi->GetXaxis()->SetBinLabel(2, "false, no cut");
218 fh2Electrons_angle_CUTcomparison_chi->GetXaxis()->SetBinLabel(3, "true, cut1");
219 fh2Electrons_angle_CUTcomparison_chi->GetXaxis()->SetBinLabel(4, "false, cut1");
220 fh2Electrons_angle_CUTcomparison_chi->GetXaxis()->SetBinLabel(5, "true, cut2");
221 fh2Electrons_angle_CUTcomparison_chi->GetXaxis()->SetBinLabel(6, "false, cut2");
222 fh2Electrons_angle_CUTcomparison_chi->GetXaxis()->SetBinLabel(7, "true, cut3");
223 fh2Electrons_angle_CUTcomparison_chi->GetXaxis()->SetBinLabel(8, "false, cut3");
224 fh2Electrons_angle_CUTcomparison_chi->GetXaxis()->SetBinLabel(9, "true, cut4");
225 fh2Electrons_angle_CUTcomparison_chi->GetXaxis()->SetBinLabel(10, "false, cut4");
226
227
228 fh2Electrons_angle_CUTcomparison_withRICH = new TH1I("fh2Electrons_angle_CUTcomparison_withRICH",
229 "fh2Electrons_angle_CUTcomparison_withRICH; ; #", 14, 0., 14.);
231 fh2Electrons_angle_CUTcomparison_withRICH->GetXaxis()->SetBinLabel(1, "true, no cut");
232 fh2Electrons_angle_CUTcomparison_withRICH->GetXaxis()->SetBinLabel(2, "false, no cut");
233 fh2Electrons_angle_CUTcomparison_withRICH->GetXaxis()->SetBinLabel(3, "true, cut1");
234 fh2Electrons_angle_CUTcomparison_withRICH->GetXaxis()->SetBinLabel(4, "false, cut1");
235 fh2Electrons_angle_CUTcomparison_withRICH->GetXaxis()->SetBinLabel(5, "true, cut2");
236 fh2Electrons_angle_CUTcomparison_withRICH->GetXaxis()->SetBinLabel(6, "false, cut2");
237 fh2Electrons_angle_CUTcomparison_withRICH->GetXaxis()->SetBinLabel(7, "true, cut3");
238 fh2Electrons_angle_CUTcomparison_withRICH->GetXaxis()->SetBinLabel(8, "false, cut3");
239 fh2Electrons_angle_CUTcomparison_withRICH->GetXaxis()->SetBinLabel(9, "true, cut4");
240 fh2Electrons_angle_CUTcomparison_withRICH->GetXaxis()->SetBinLabel(10, "false, cut4");
241 fh2Electrons_angle_CUTcomparison_withRICH->GetXaxis()->SetBinLabel(11, "true, cut5");
242 fh2Electrons_angle_CUTcomparison_withRICH->GetXaxis()->SetBinLabel(12, "false, cut5");
243 fh2Electrons_angle_CUTcomparison_withRICH->GetXaxis()->SetBinLabel(13, "true, cut6");
244 fh2Electrons_angle_CUTcomparison_withRICH->GetXaxis()->SetBinLabel(14, "false, cut6");
245
246
248 "fh2Electrons_angle_CUTcomparison_withRICH_chi", "fh2Electrons_angle_CUTcomparison_withRICH_chi; ; #", 10, 0., 10.);
250 fh2Electrons_angle_CUTcomparison_withRICH_chi->GetXaxis()->SetBinLabel(1, "true, no cut");
251 fh2Electrons_angle_CUTcomparison_withRICH_chi->GetXaxis()->SetBinLabel(2, "false, no cut");
252 fh2Electrons_angle_CUTcomparison_withRICH_chi->GetXaxis()->SetBinLabel(3, "true, cut1");
253 fh2Electrons_angle_CUTcomparison_withRICH_chi->GetXaxis()->SetBinLabel(4, "false, cut1");
254 fh2Electrons_angle_CUTcomparison_withRICH_chi->GetXaxis()->SetBinLabel(5, "true, cut2");
255 fh2Electrons_angle_CUTcomparison_withRICH_chi->GetXaxis()->SetBinLabel(6, "false, cut2");
256 fh2Electrons_angle_CUTcomparison_withRICH_chi->GetXaxis()->SetBinLabel(7, "true, cut3");
257 fh2Electrons_angle_CUTcomparison_withRICH_chi->GetXaxis()->SetBinLabel(8, "false, cut3");
258 fh2Electrons_angle_CUTcomparison_withRICH_chi->GetXaxis()->SetBinLabel(9, "true, cut4");
259 fh2Electrons_angle_CUTcomparison_withRICH_chi->GetXaxis()->SetBinLabel(10, "false, cut4");
260
261
263 new TH1I("fh2Electrons_angle_CUTcomparison_withRICH_withChi",
264 "fh2Electrons_angle_CUTcomparison_withRICH_withChi; ; #", 14, 0., 14.);
266 fh2Electrons_angle_CUTcomparison_withRICH_withChi->GetXaxis()->SetBinLabel(1, "true, no cut");
267 fh2Electrons_angle_CUTcomparison_withRICH_withChi->GetXaxis()->SetBinLabel(2, "false, no cut");
268 fh2Electrons_angle_CUTcomparison_withRICH_withChi->GetXaxis()->SetBinLabel(3, "true, cut1");
269 fh2Electrons_angle_CUTcomparison_withRICH_withChi->GetXaxis()->SetBinLabel(4, "false, cut1");
270 fh2Electrons_angle_CUTcomparison_withRICH_withChi->GetXaxis()->SetBinLabel(5, "true, cut2");
271 fh2Electrons_angle_CUTcomparison_withRICH_withChi->GetXaxis()->SetBinLabel(6, "false, cut2");
272 fh2Electrons_angle_CUTcomparison_withRICH_withChi->GetXaxis()->SetBinLabel(7, "true, cut3");
273 fh2Electrons_angle_CUTcomparison_withRICH_withChi->GetXaxis()->SetBinLabel(8, "false, cut3");
274 fh2Electrons_angle_CUTcomparison_withRICH_withChi->GetXaxis()->SetBinLabel(9, "true, cut4");
275 fh2Electrons_angle_CUTcomparison_withRICH_withChi->GetXaxis()->SetBinLabel(10, "false, cut4");
276 fh2Electrons_angle_CUTcomparison_withRICH_withChi->GetXaxis()->SetBinLabel(11, "true, cut5");
277 fh2Electrons_angle_CUTcomparison_withRICH_withChi->GetXaxis()->SetBinLabel(12, "false, cut5");
278 fh2Electrons_angle_CUTcomparison_withRICH_withChi->GetXaxis()->SetBinLabel(13, "true, cut6");
279 fh2Electrons_angle_CUTcomparison_withRICH_withChi->GetXaxis()->SetBinLabel(14, "false, cut6");
280
281
282 // opening angles for all photon-energies (RECO) with application of opening angle cuts
284 new TH1D("fh2Electrons_angle_all_cuts", "fh2Electrons_angle_all_cuts; opening angle [deg]; #", 101, -0.05, 10.05);
286 "fh2Electrons_angle_combBack_cuts", "fh2Electrons_angle_combBack_cuts; opening angle [deg]; #", 101, -0.05, 10.05);
288 "fh2Electrons_angle_allSameG_cuts", "fh2Electrons_angle_allSameG_cuts; opening angle [deg]; #", 101, -0.05, 10.05);
292
293
295 new TH1D("fh2Electrons_invmass_all", "fh2Electrons_invmass_all; invmass [GeV/c^2]; #", 5000, 0., 5.);
297 new TH1D("fh2Electrons_invmass_combBack", "fh2Electrons_invmass_combBack; invmass [GeV/c^2]; #", 5000, 0., 5.);
299 new TH1D("fh2Electrons_invmass_allSameG", "fh2Electrons_invmass_allSameG; invmass [GeV/c^2]; #", 5000, 0., 5);
303
305 new TH1D("fh2Electrons_invmass_all_cut", "fh2Electrons_invmass_all_cut; invmass [GeV/c^2]; #", 5000, 0., 5.);
306 fh2Electrons_invmass_combBack_cut = new TH1D("fh2Electrons_invmass_combBack_cut",
307 "fh2Electrons_invmass_combBack_cut; invmass [GeV/c^2]; #", 5000, 0., 5.);
308 fh2Electrons_invmass_allSameG_cut = new TH1D("fh2Electrons_invmass_allSameG_cut",
309 "fh2Electrons_invmass_allSameG_cut; invmass [GeV/c^2]; #", 5000, 0., 5);
313
314
315 // opening angle vs pt (reco)
317 new TH2D("fh2Electrons_angleVSpt_all", "fh2Electrons_angleVSpt_all;pt [GeV/c];opening angle [deg]", 500, 0., 5.,
318 400, 0., 20.);
320 new TH2D("fh2Electrons_angleVSpt_combBack", "fh2Electrons_angleVSpt_combBack;pt [GeV/c];opening angle [deg]", 500,
321 0., 5., 400, 0., 20.);
323 new TH2D("fh2Electrons_angleVSpt_allSameG", "fh2Electrons_angleVSpt_allSameG;pt [GeV/c];opening angle [deg]", 500,
324 0., 5., 400, 0., 20.);
328
329
330 // invariant mass vs pt (reco)
332 "fh2Electrons_invmassVSpt_all", "fh2Electrons_invmassVSpt_all;pt [GeV/c];invmass [GeV]", 500, 0., 5., 5000, 0., 5.);
334 new TH2D("fh2Electrons_invmassVSpt_combBack", "fh2Electrons_invmassVSpt_combBack;pt [GeV/c];invmass [GeV]", 500, 0.,
335 5., 5000, 0., 5.);
337 new TH2D("fh2Electrons_invmassVSpt_allSameG", "fh2Electrons_invmassVSpt_allSameG;pt [GeV/c];invmass [GeV]", 500, 0.,
338 5., 5000, 0., 5.);
342
343
344 // ##############################################################################
345 // ##############################################################################
346 // ##############################################################################
347
348
349 // opening angles for all photon-energies (RECO) with RICH
351 "fh2Electrons_angle_withRICH_all", "fh2Electrons_angle_withRICH_all; opening angle [deg]; #", 2001, -0.05, 200.05);
353 new TH1D("fh2Electrons_angle_withRICH_combBack", "fh2Electrons_angle_withRICH_combBack; opening angle [deg]; #",
354 2001, -0.05, 200.05);
356 new TH1D("fh2Electrons_angle_withRICH_allSameG", "fh2Electrons_angle_withRICH_allSameG; opening angle [deg]; #",
357 1001, -0.05, 100.05);
361
362 // opening angle vs pt (reco), with RICH
364 new TH2D("fh2Electrons_angleVSpt_withRICH_all",
365 "fh2Electrons_angleVSpt_withRICH_all;pt [GeV/c];opening angle [deg]", 500, 0., 5., 400, 0., 20.);
367 new TH2D("fh2Electrons_angleVSpt_withRICH_combBack",
368 "fh2Electrons_angleVSpt_withRICH_combBack;pt [GeV/c];opening angle [deg]", 500, 0., 5., 400, 0., 20.);
370 new TH2D("fh2Electrons_angleVSpt_withRICH_allSameG",
371 "fh2Electrons_angleVSpt_withRICH_allSameG;pt [GeV/c];opening angle [deg]", 500, 0., 5., 400, 0., 20.);
375
376 // invmass for all photon-energies (RECO) with RICH
377 fh2Electrons_invmass_withRICH_all = new TH1D("fh2Electrons_invmass_withRICH_all",
378 "fh2Electrons_invmass_withRICH_all; invmass [GeV/c^2]; #", 5000, 0., 5.);
380 new TH1D("fh2Electrons_invmass_withRICH_combBack", "fh2Electrons_invmass_withRICH_combBack; invmass [GeV/c^2]; #",
381 5000, 0., 5.);
383 new TH1D("fh2Electrons_invmass_withRICH_allSameG", "fh2Electrons_invmass_withRICH_allSameG; invmass [GeV/c^2]; #",
384 5000, 0., 5.);
388
389 // invmass vs pt (reco), with RICH
391 new TH2D("fh2Electrons_invmassVSpt_withRICH_all", "fh2Electrons_invmassVSpt_withRICH_all;pt [GeV/c];invmass [GeV]",
392 500, 0., 5., 5000, 0., 5.);
394 new TH2D("fh2Electrons_invmassVSpt_withRICH_combBack",
395 "fh2Electrons_invmassVSpt_withRICH_combBack;pt [GeV/c];invmass [GeV]", 500, 0., 5., 5000, 0., 5.);
397 new TH2D("fh2Electrons_invmassVSpt_withRICH_allSameG",
398 "fh2Electrons_invmassVSpt_withRICH_allSameG;pt [GeV/c];invmass [GeV]", 500, 0., 5., 5000, 0., 5.);
402
403
404 fh2Electrons_fullrecoCheck = new TH1I("fh2Electrons_fullrecoCheck", "fh2Electrons_fullrecoCheck;; #", 5, 0., 5.);
406
407
408 // ##############################################################################
409 // ##############################################################################
410 // ##############################################################################
411
412
413 // opening angles for all photon-energies (RECO) with RICH, with standard chi-cut of refitted momentum
415 new TH1D("fh2Electrons_angle_withRICH_withChi_all",
416 "fh2Electrons_angle_withRICH_withChi_all; opening angle [deg]; #", 2001, -0.05, 200.05);
418 new TH1D("fh2Electrons_angle_withRICH_withChi_combBack",
419 "fh2Electrons_angle_withRICH_withChi_combBack; opening angle [deg]; #", 2001, -0.05, 200.05);
421 new TH1D("fh2Electrons_angle_withRICH_withChi_allSameG",
422 "fh2Electrons_angle_withRICH_withChi_allSameG; opening angle [deg]; #", 1001, -0.05, 100.05);
426
427 // opening angle vs pt (reco), with RICH
429 new TH2D("fh2Electrons_angleVSpt_withRICH_withChi_all",
430 "fh2Electrons_angleVSpt_withRICH_withChi_all;pt [GeV/c];opening "
431 "angle [deg]",
432 500, 0., 5., 400, 0., 20.);
433 fh2Electrons_angleVSpt_withRICH_withChi_combBack = new TH2D("fh2Electrons_angleVSpt_withRICH_withChi_combBack",
434 "fh2Electrons_angleVSpt_withRICH_withChi_combBack;pt "
435 "[GeV/c];opening angle [deg]",
436 500, 0., 5., 400, 0., 20.);
437 fh2Electrons_angleVSpt_withRICH_withChi_allSameG = new TH2D("fh2Electrons_angleVSpt_withRICH_withChi_allSameG",
438 "fh2Electrons_angleVSpt_withRICH_withChi_allSameG;pt "
439 "[GeV/c];opening angle [deg]",
440 500, 0., 5., 400, 0., 20.);
444
445 // invmass for all photon-energies (RECO) with RICH
447 new TH1D("fh2Electrons_invmass_withRICH_withChi_all",
448 "fh2Electrons_invmass_withRICH_withChi_all; invmass [GeV/c^2]; #", 5000, 0., 5.);
450 new TH1D("fh2Electrons_invmass_withRICH_withChi_combBack",
451 "fh2Electrons_invmass_withRICH_withChi_combBack; invmass [GeV/c^2]; #", 5000, 0., 5.);
453 new TH1D("fh2Electrons_invmass_withRICH_withChi_allSameG",
454 "fh2Electrons_invmass_withRICH_withChi_allSameG; invmass [GeV/c^2]; #", 5000, 0., 5.);
458
459 // invmass vs pt (reco), with RICH
461 new TH2D("fh2Electrons_invmassVSpt_withRICH_withChi_all",
462 "fh2Electrons_invmassVSpt_withRICH_withChi_all;pt [GeV/c];invmass [GeV]", 500, 0., 5., 5000, 0., 5.);
463 fh2Electrons_invmassVSpt_withRICH_withChi_combBack = new TH2D("fh2Electrons_invmassVSpt_withRICH_withChi_combBack",
464 "fh2Electrons_invmassVSpt_withRICH_withChi_combBack;pt "
465 "[GeV/c];invmass [GeV]",
466 500, 0., 5., 5000, 0., 5.);
467 fh2Electrons_invmassVSpt_withRICH_withChi_allSameG = new TH2D("fh2Electrons_invmassVSpt_withRICH_withChi_allSameG",
468 "fh2Electrons_invmassVSpt_withRICH_withChi_allSameG;pt "
469 "[GeV/c];invmass [GeV]",
470 500, 0., 5., 5000, 0., 5.);
474
475
476 // ##############################################################################
477 // ##############################################################################
478 // ##############################################################################
479
480
481 // opening angles for all photon-energies (RECO) with RICH, from target (z>1, selection from MC-true)
483 new TH1D("fh2Electrons_angle_withRICH_fromTarget_all",
484 "fh2Electrons_angle_withRICH_fromTarget_all; opening angle [deg]; #", 2001, -0.05, 200.05);
486 new TH1D("fh2Electrons_angle_withRICH_fromTarget_combBack",
487 "fh2Electrons_angle_withRICH_fromTarget_combBack; opening angle [deg]; #", 2001, -0.05, 200.05);
489 new TH1D("fh2Electrons_angle_withRICH_fromTarget_allSameG",
490 "fh2Electrons_angle_withRICH_fromTarget_allSameG; opening angle [deg]; #", 1001, -0.05, 100.05);
494
495 // opening angle vs pt (reco), with RICH
496 fh2Electrons_angleVSpt_withRICH_fromTarget_all = new TH2D("fh2Electrons_angleVSpt_withRICH_fromTarget_all",
497 "fh2Electrons_angleVSpt_withRICH_fromTarget_all;pt "
498 "[GeV/c];opening angle [deg]",
499 500, 0., 5., 400, 0., 20.);
501 new TH2D("fh2Electrons_angleVSpt_withRICH_fromTarget_combBack",
502 "fh2Electrons_angleVSpt_withRICH_fromTarget_combBack;pt "
503 "[GeV/c];opening angle [deg]",
504 500, 0., 5., 400, 0., 20.);
506 new TH2D("fh2Electrons_angleVSpt_withRICH_fromTarget_allSameG",
507 "fh2Electrons_angleVSpt_withRICH_fromTarget_allSameG;pt "
508 "[GeV/c];opening angle [deg]",
509 500, 0., 5., 400, 0., 20.);
513
514 // invmass for all photon-energies (RECO) with RICH
516 new TH1D("fh2Electrons_invmass_withRICH_fromTarget_all",
517 "fh2Electrons_invmass_withRICH_fromTarget_all; invmass [GeV/c^2]; #", 5000, 0., 5.);
519 new TH1D("fh2Electrons_invmass_withRICH_fromTarget_combBack",
520 "fh2Electrons_invmass_withRICH_fromTarget_combBack; invmass [GeV/c^2]; #", 5000, 0., 5.);
522 new TH1D("fh2Electrons_invmass_withRICH_fromTarget_allSameG",
523 "fh2Electrons_invmass_withRICH_fromTarget_allSameG; invmass [GeV/c^2]; #", 5000, 0., 5.);
527
528 // invmass vs pt (reco), with RICH
530 new TH2D("fh2Electrons_invmassVSpt_withRICH_fromTarget_all",
531 "fh2Electrons_invmassVSpt_withRICH_fromTarget_all;pt [GeV/c];invmass [GeV]", 500, 0., 5., 5000, 0., 5.);
533 new TH2D("fh2Electrons_invmassVSpt_withRICH_fromTarget_combBack",
534 "fh2Electrons_invmassVSpt_withRICH_fromTarget_combBack;pt "
535 "[GeV/c];invmass [GeV]",
536 500, 0., 5., 5000, 0., 5.);
538 new TH2D("fh2Electrons_invmassVSpt_withRICH_fromTarget_allSameG",
539 "fh2Electrons_invmassVSpt_withRICH_fromTarget_allSameG;pt "
540 "[GeV/c];invmass [GeV]",
541 500, 0., 5., 5000, 0., 5.);
545}
546
547
549{
550 //gDirectory->cd("analysis-conversion");
551 gDirectory->mkdir("Photons2");
552 gDirectory->cd("Photons2");
553
554 gDirectory->mkdir("With RICH");
555 gDirectory->cd("With RICH");
556
557 for (UInt_t i = 0; i < fHistoList_photons_withRICH.size(); i++) {
558 fHistoList_photons_withRICH[i]->Write();
559 }
560 gDirectory->cd("..");
561
562 gDirectory->mkdir("With RICH, with Chi");
563 gDirectory->cd("With RICH, with Chi");
564
565 for (UInt_t i = 0; i < fHistoList_photons_withRICH_withChi.size(); i++) {
567 }
568 gDirectory->cd("..");
569
570 gDirectory->mkdir("With RICH, from target");
571 gDirectory->cd("With RICH, from target");
572
573 for (UInt_t i = 0; i < fHistoList_photons_withRICH_fromTarget.size(); i++) {
575 }
576 gDirectory->cd("..");
577
578 for (UInt_t i = 0; i < fHistoList_photons.size(); i++) {
579 fHistoList_photons[i]->Write();
580 }
581 gDirectory->cd("..");
582}
583
584
586{
587 if (fPrimVertex != NULL) { fKFVertex = CbmKFVertex(*fPrimVertex); }
588 else {
589 Fatal("CbmAnaConversionPhotons2::Exec", "No PrimaryVertex array!");
590 }
591
592
596 fRecoTracklist_chi.clear();
598
604
605 fVector_combinations.clear();
606
607
608 // everything related to reconstructed data
609 Int_t nofGlobalTracks = fGlobalTracks->GetEntriesFast();
610 for (int iG = 0; iG < nofGlobalTracks; iG++) {
611 CbmGlobalTrack* gTrack = (CbmGlobalTrack*) fGlobalTracks->At(iG);
612 if (NULL == gTrack) continue;
613 int stsInd = gTrack->GetStsTrackIndex();
614 int richInd = gTrack->GetRichRingIndex();
615 if (stsInd < 0) continue;
616
617 CbmStsTrack* stsTrack = (CbmStsTrack*) fStsTracks->At(stsInd);
618 if (stsTrack == NULL) continue;
619
620 CbmTrackMatchNew* stsMatch = (CbmTrackMatchNew*) fStsTrackMatches->At(stsInd);
621 if (stsMatch == NULL) continue;
622 if (stsMatch->GetNofLinks() <= 0) continue;
623 int stsMcTrackId = stsMatch->GetMatchedLink().GetIndex();
624 if (stsMcTrackId < 0) continue;
625 CbmMCTrack* mcTrack1 = (CbmMCTrack*) fMcTracks->At(stsMcTrackId);
626 if (mcTrack1 == NULL) continue;
627
628
629 int pdg = TMath::Abs(mcTrack1->GetPdgCode());
630
631
632 // calculate refitted momenta at primary vertex
633 TVector3 refittedMomentum;
634 CbmL1PFFitter fPFFitter;
635 vector<CbmStsTrack> stsTracks;
636 stsTracks.resize(1);
637 stsTracks[0] = *stsTrack;
638 vector<CbmL1PFFitter::PFFieldRegion> vField;
639 vector<float> chiPrim;
640 fPFFitter.GetChiToVertex(stsTracks, vField, chiPrim, fKFVertex, 3e6);
641 //cand.chi2sts = stsTracks[0].GetChiSq() / stsTracks[0].GetNDF();
642 //cand.chi2Prim = chiPrim[0];
643 const FairTrackParam* vtxTrack = stsTracks[0].GetParamFirst();
644 vtxTrack->Momentum(refittedMomentum);
645 float result_chi = chiPrim[0];
646
647
648 // Doing refit of momenta with electron assumption
649 CbmL1PFFitter fPFFitter_electron;
650 vector<CbmStsTrack> stsTracks_electron;
651 stsTracks_electron.resize(1);
652 stsTracks_electron[0] = *stsTrack;
653 vector<CbmL1PFFitter::PFFieldRegion> vField_electron;
654 vector<float> chiPrim_electron;
655 vector<int> pidHypo_electron;
656 pidHypo_electron.push_back(11);
657 fPFFitter_electron.Fit(stsTracks_electron, pidHypo_electron);
658 fPFFitter_electron.GetChiToVertex(stsTracks_electron, vField_electron, chiPrim_electron, fKFVertex, 3e6);
659
660 TVector3 refittedMomentum_electron;
661 const FairTrackParam* vtxTrack_electron = stsTracks_electron[0].GetParamFirst();
662 vtxTrack_electron->Momentum(refittedMomentum_electron);
663 float result_chi_electron = chiPrim_electron[0];
664
665 refittedMomentum = refittedMomentum_electron;
666 result_chi = result_chi_electron;
667
668
669 if (pdg == 11) {
670 fRecoTracklist_gtIndex.push_back(iG);
671 fRecoTracklist_mcIndex.push_back(stsMcTrackId);
672 fRecoTracklist_momentum.push_back(refittedMomentum);
673 fRecoTracklist_chi.push_back(result_chi);
674 fRecoTracklist_mctrack.push_back(mcTrack1);
675 }
676
677
678 if (richInd < 0) continue;
679 CbmTrackMatchNew* richMatch = (CbmTrackMatchNew*) fRichRingMatches->At(richInd);
680 if (richMatch == NULL) continue;
681 int richMcTrackId = richMatch->GetMatchedLink().GetIndex();
682 if (richMcTrackId < 0) continue;
683 CbmMCTrack* mcTrack2 = (CbmMCTrack*) fMcTracks->At(richMcTrackId);
684 if (mcTrack2 == NULL) continue;
685
686
687 if (pdg == 11) {
689 fRecoTracklist_withRICH_mcIndex.push_back(stsMcTrackId);
690 fRecoTracklist_withRICH_momentum.push_back(refittedMomentum);
691 fRecoTracklist_withRICH_chi.push_back(result_chi);
692 fRecoTracklist_withRICH_mctrack.push_back(mcTrack1);
693 }
694 }
695
698}
699
700
702{
703 int electronnumber = fRecoTracklist_gtIndex.size();
704
705 cout << "CbmAnaConversionPhotons: array size in AnalyseElectronsReco(): " << electronnumber << endl;
706 for (int i = 0; i < electronnumber - 1; i++) {
707 for (int j = i + 1; j < electronnumber; j++) {
708 if (fRecoTracklist_mctrack[i]->GetPdgCode() + fRecoTracklist_mctrack[j]->GetPdgCode() != 0)
709 continue; // only 1 electron and 1 positron allowed
710
711
714 Double_t OpeningAngleCut = CbmAnaConversionCutSettings::CalcOpeningAngleCut(paramSet.fPt);
715
716
717 int motherID_i = fRecoTracklist_mctrack[i]->GetMotherId();
718 int motherID_j = fRecoTracklist_mctrack[j]->GetMotherId();
719
720
721 // first all possible combinations are considered
722
723 fh2Electrons_angle_all->Fill(paramSet.fAngle);
724 fh2Electrons_angleVSpt_all->Fill(paramSet.fPt, paramSet.fAngle);
725 fh2Electrons_invmass_all->Fill(paramSet.fMinv);
726 fh2Electrons_invmassVSpt_all->Fill(paramSet.fPt, paramSet.fMinv);
727
728 if (paramSet.fAngle < OpeningAngleCut) {
729 fh2Electrons_invmass_all_cut->Fill(paramSet.fMinv);
730 fh2Electrons_angle_all_cuts->Fill(paramSet.fAngle);
731 }
732
733
734 // then all false combinations are analysed, after that "continue" of loop, i.e. break
735 if (motherID_i != motherID_j) {
736 fh2Electrons_angle_combBack->Fill(paramSet.fAngle);
737 fh2Electrons_angleVSpt_combBack->Fill(paramSet.fPt, paramSet.fAngle);
738 fh2Electrons_invmass_combBack->Fill(paramSet.fMinv);
739 fh2Electrons_invmassVSpt_combBack->Fill(paramSet.fPt, paramSet.fMinv);
740
741 if (paramSet.fAngle < OpeningAngleCut) {
744 }
745
746 // study of different opening angle cuts
747 fh2Electrons_angle_CUTcomparison->Fill(1); // no cuts applied
760
761
762 fh2Electrons_angle_CUTcomparison_chi->Fill(1); // no cuts applied
763 Double_t pt_e1 = fRecoTracklist_momentum[i].Perp();
764 Double_t pt_e2 = fRecoTracklist_momentum[j].Perp();
768 }
772 }
776 }
780 }
781
782 continue;
783 }
784
785
786 // everything, that is not a false combination, will be further analysed
787
788 fh2Electrons_angle_allSameG->Fill(paramSet.fAngle);
789 fh2Electrons_angleVSpt_allSameG->Fill(paramSet.fPt, paramSet.fAngle);
790 fh2Electrons_invmass_allSameG->Fill(paramSet.fMinv);
791 fh2Electrons_invmassVSpt_allSameG->Fill(paramSet.fPt, paramSet.fMinv);
792
793 if (paramSet.fAngle < OpeningAngleCut) {
796 }
797
798
799 // study of different opening angle cuts
800 fh2Electrons_angle_CUTcomparison->Fill(0); // no cuts applied
813
814
815 fh2Electrons_angle_CUTcomparison_chi->Fill(0); // no cuts applied
816 Double_t pt_e1 = fRecoTracklist_momentum[i].Perp();
817 Double_t pt_e2 = fRecoTracklist_momentum[j].Perp();
821 }
825 }
829 }
833 }
834 }
835 }
836}
837
838
840{
841 int electronnumber = fRecoTracklist_withRICH_gtIndex.size();
842
843 cout << "CbmAnaConversionPhotons: array size in AnalyseElectronsReco(): " << electronnumber << endl;
844 for (int i = 0; i < electronnumber - 1; i++) {
845 for (int j = i + 1; j < electronnumber; j++) {
846 if (fRecoTracklist_withRICH_mctrack[i]->GetPdgCode() + fRecoTracklist_withRICH_mctrack[j]->GetPdgCode() != 0)
847 continue; // only 1 electron and 1 positron allowed
848
849
852
853
856 fh2Electrons_angleVSpt_withRICH_all->Fill(paramSet.fPt, paramSet.fAngle);
857 fh2Electrons_invmassVSpt_withRICH_all->Fill(paramSet.fPt, paramSet.fMinv);
858
859 Double_t pt_e1 = fRecoTracklist_withRICH_momentum[i].Perp();
860 Double_t pt_e2 = fRecoTracklist_withRICH_momentum[j].Perp();
861
868 }
869
870
871 TVector3 startvertex1;
872 fRecoTracklist_withRICH_mctrack[i]->GetStartVertex(startvertex1);
873 TVector3 startvertex2;
874 fRecoTracklist_withRICH_mctrack[j]->GetStartVertex(startvertex2);
875
876
877 if (startvertex1.Z() < 1 && startvertex2.Z() < 1) {
882 }
883
884 int motherID_i = fRecoTracklist_withRICH_mctrack[i]->GetMotherId();
885 int motherID_j = fRecoTracklist_withRICH_mctrack[j]->GetMotherId();
886
887
888 Bool_t electron_rich1 = CbmLitGlobalElectronId::GetInstance().IsRichElectron(
890 Bool_t electron_rich2 = CbmLitGlobalElectronId::GetInstance().IsRichElectron(
892
893
894 // then all false combinations are analysed, after that "continue" of loop, i.e. break
895 if (motherID_i != motherID_j) {
898 fh2Electrons_angleVSpt_withRICH_combBack->Fill(paramSet.fPt, paramSet.fAngle);
899 fh2Electrons_invmassVSpt_withRICH_combBack->Fill(paramSet.fPt, paramSet.fMinv);
900
901
902 // study of different opening angle cuts
903 fh2Electrons_angle_CUTcomparison_withRICH->Fill(1); // no cuts applied
916
917
918 fh2Electrons_angle_CUTcomparison_withRICH_chi->Fill(1); // no cuts applied
919 //Double_t pt_e1 = fRecoTracklist_withRICH_momentum[i].Perp();
920 //Double_t pt_e2 = fRecoTracklist_withRICH_momentum[j].Perp();
924
929
930 // study of different opening angle cuts
931 fh2Electrons_angle_CUTcomparison_withRICH_withChi->Fill(1); // no cuts applied
944 }
948 }
952 }
956 }
957
958
959 if (startvertex1.Z() < 1 && startvertex2.Z() < 1) {
964 }
965
966
969 Bool_t WithinAngleCut = (paramSet.fAngle < CbmAnaConversionCutSettings::CalcOpeningAngleCutAlt1(paramSet.fPt));
970 Bool_t WithinMassCut = (paramSet.fMinv < 0.03);
971 Bool_t WithElectronId = (electron_rich1 && electron_rich2);
972
973 if (WithinChiCut && WithinAngleCut && WithinMassCut && WithElectronId) {
974 vector<int> pair; // = {a, b};
975 pair.push_back(i);
976 pair.push_back(j);
977 fVector_combinations.push_back(pair);
978 }
979
980 continue;
981 }
982
983
986 fh2Electrons_angleVSpt_withRICH_allSameG->Fill(paramSet.fPt, paramSet.fAngle);
987 fh2Electrons_invmassVSpt_withRICH_allSameG->Fill(paramSet.fPt, paramSet.fMinv);
988
989 // study of different opening angle cuts
990 fh2Electrons_angle_CUTcomparison_withRICH->Fill(0); // no cuts applied
1003
1004
1005 fh2Electrons_angle_CUTcomparison_withRICH_chi->Fill(0); // no cuts applied
1006 //Double_t pt_e1 = fRecoTracklist_withRICH_momentum[i].Perp();
1007 //Double_t pt_e2 = fRecoTracklist_withRICH_momentum[j].Perp();
1011
1016
1017 // study of different opening angle cuts
1018 fh2Electrons_angle_CUTcomparison_withRICH_withChi->Fill(0); // no cuts applied
1031 }
1035 }
1039 }
1043 }
1044
1045
1046 if (startvertex1.Z() < 1 && startvertex2.Z() < 1) {
1051 }
1052
1053
1056 Bool_t WithinAngleCut = (paramSet.fAngle < CbmAnaConversionCutSettings::CalcOpeningAngleCutAlt1(paramSet.fPt));
1057 Bool_t WithinMassCut = (paramSet.fMinv < 0.03);
1058 Bool_t WithElectronId = (electron_rich1 && electron_rich2);
1059
1060 if (WithinChiCut && WithinAngleCut && WithinMassCut && WithElectronId) {
1061 vector<int> pair; // = {a, b};
1062 pair.push_back(i);
1063 pair.push_back(j);
1064 fVector_combinations.push_back(pair);
1065 }
1066 }
1067 }
1069}
1070
1071
1073{
1074 Int_t nof = fVector_combinations.size();
1075 if (nof < 2) return;
1076
1077 for (int i = 0; i < nof - 1; i++) {
1078 for (int j = i + 1; j < nof; j++) {
1079 Int_t electron11 = fVector_combinations[i][0];
1080 Int_t electron12 = fVector_combinations[i][1];
1081 Int_t electron21 = fVector_combinations[j][0];
1082 Int_t electron22 = fVector_combinations[j][1];
1083
1084 Int_t motherID_11 = fRecoTracklist_withRICH_mctrack[electron11]->GetMotherId();
1085 Int_t motherID_12 = fRecoTracklist_withRICH_mctrack[electron12]->GetMotherId();
1086 Int_t motherID_21 = fRecoTracklist_withRICH_mctrack[electron21]->GetMotherId();
1087 Int_t motherID_22 = fRecoTracklist_withRICH_mctrack[electron22]->GetMotherId();
1088
1089 CbmMCTrack* mothertrack_11 = (CbmMCTrack*) fMcTracks->At(motherID_11);
1090 CbmMCTrack* mothertrack_12 = (CbmMCTrack*) fMcTracks->At(motherID_12);
1091 CbmMCTrack* mothertrack_21 = (CbmMCTrack*) fMcTracks->At(motherID_21);
1092 CbmMCTrack* mothertrack_22 = (CbmMCTrack*) fMcTracks->At(motherID_22);
1093
1094 Int_t grandmotherID_11 = mothertrack_11->GetMotherId();
1095 Int_t grandmotherID_12 = mothertrack_12->GetMotherId();
1096 Int_t grandmotherID_21 = mothertrack_21->GetMotherId();
1097 Int_t grandmotherID_22 = mothertrack_22->GetMotherId();
1098
1099 if (grandmotherID_11 == grandmotherID_12 && grandmotherID_11 == grandmotherID_21
1100 && grandmotherID_11 == grandmotherID_22) {
1102 }
1103 else {
1105 }
1106 }
1107 }
1108}
Helper functions for drawing 1D and 2D histograms and graphs.
Data class for STS tracks.
static Double_t CalcOpeningAngleCutAlt5(Double_t pt)
static Double_t CalcOpeningAngleCutAlt3(Double_t)
static Double_t CalcChiCutAlt3(Double_t)
static Double_t CalcChiCutAlt2(Double_t pt)
static Double_t CalcOpeningAngleCutAlt1(Double_t pt)
static Double_t CalcOpeningAngleCutAlt2(Double_t)
static Double_t CalcOpeningAngleCutAlt4(Double_t pt)
static Double_t CalcOpeningAngleCut(Double_t pt)
static Double_t CalcChiCutAlt1(Double_t)
static Double_t CalcChiCut(Double_t pt)
static CbmAnaConversionKinematicParams KinematicParams_2particles_Reco(const TVector3 electron1, const TVector3 electron2)
std::vector< TH1 * > fHistoList_photons_withRICH
std::vector< Int_t > fRecoTracklist_mcIndex
std::vector< CbmMCTrack * > fRecoTracklist_withRICH_mctrack
std::vector< Double_t > fRecoTracklist_withRICH_chi
std::vector< TVector3 > fRecoTracklist_withRICH_momentum
std::vector< CbmMCTrack * > fRecoTracklist_mctrack
std::vector< TH1 * > fHistoList_photons_withRICH_withChi
std::vector< std::vector< int > > fVector_combinations
std::vector< Int_t > fRecoTracklist_gtIndex
std::vector< Double_t > fRecoTracklist_chi
std::vector< TH1 * > fHistoList_photons_withRICH_fromTarget
std::vector< TH1 * > fHistoList_photons
std::vector< TVector3 > fRecoTracklist_momentum
std::vector< Int_t > fRecoTracklist_withRICH_mcIndex
std::vector< Int_t > fRecoTracklist_withRICH_gtIndex
int32_t GetStsTrackIndex() const
int32_t GetRichRingIndex() const
void GetChiToVertex(std::vector< CbmStsTrack > &Tracks, std::vector< PFFieldRegion > &field, std::vector< float > &chiToVtx, CbmKFVertex &primVtx, float chiPrim=-1)
void Fit(std::vector< CbmStsTrack > &Tracks, const std::vector< CbmMvdHit > &vMvdHits, const std::vector< CbmStsHit > &vStsHits, const std::vector< int > &pidHypo)
Bool_t IsRichElectron(Int_t globalTrackIndex, Double_t momentum)
Identify electron in RICH detector.
static CbmLitGlobalElectronId & GetInstance()
int32_t GetMotherId() const
Definition CbmMCTrack.h:69
int32_t GetPdgCode() const
Definition CbmMCTrack.h:68
int32_t GetNofLinks() const
Definition CbmMatch.h:42
const CbmLink & GetMatchedLink() const
Definition CbmMatch.h:41
Hash for CbmL1LinkKey.