CbmRoot
CbmAnaConversionRich.cxx
Go to the documentation of this file.
1 
8 #include "CbmAnaConversionRich.h"
9 
10 #include "CbmGlobalTrack.h"
11 #include "CbmMCTrack.h"
12 #include "CbmRichPoint.h"
13 #include "CbmRichRing.h"
14 #include "CbmRichUtil.h"
15 #include "CbmStsTrack.h"
16 #include "CbmTrackMatchNew.h"
17 #include "FairRootManager.h"
18 
19 #include <algorithm>
20 #include <map>
21 
22 
23 using namespace std;
24 
25 
27  : fRichPoints(NULL)
28  , fRichRings(NULL)
29  , fRichRingMatches(NULL)
30  , fMcTracks(NULL)
31  , fStsTracks(NULL)
32  , fStsTrackMatches(NULL)
33  , fGlobalTracks(NULL)
34  , fPrimVertex(NULL)
35  , fHistoList_richrings()
36  , fTest(NULL)
37  , fRichRings_nofRings(NULL)
38  , fRichRings_motherpdg(NULL)
39  , fRichRings_richpdg(NULL)
40  , fRichRings_electronspE(NULL)
41  , fRichRings_sourcePI0(NULL)
42  , fRichRings_test(NULL)
43  , fRichRings_detectedParticles(NULL)
44  , fRichRings_detParticlesMother(NULL)
45  , fRichRings_Aaxis(NULL)
46  , fRichRings_Aaxis_part1(NULL)
47  , fRichRings_Aaxis_part2(NULL)
48  , fRichRings_Aaxis_part3(NULL)
49  , fRichRings_Aaxis_electrons(NULL)
50  , fRichRings_Baxis(NULL)
51  , fRichRings_Baxis_part1(NULL)
52  , fRichRings_Baxis_part2(NULL)
53  , fRichRings_Baxis_part3(NULL)
54  , fRichRings_Baxis_electrons(NULL)
55  , fRichRings_radius(NULL)
56  , fRichRings_radius_electrons(NULL)
57  , fRichRings_radius_vs_momentum(NULL)
58  , fRichRings_radius_vs_pt(NULL)
59  , fRichRings_distance(NULL)
60  , fRichRings_distance_electrons(NULL)
61  , fhRingtest(NULL)
62  , fhRichRings_AaxisVSmom(NULL)
63  , fhRichRings_BaxisVSmom(NULL)
64  , fhRichRings_test1(NULL)
65  , fhRichRings_test2(NULL)
66  , fhRichRings_test3(NULL)
67  , fhRichRings_test4(NULL)
68  , fhRichRings_test5(NULL)
69  , fhRichRings_test6(NULL)
70  , fhRichRings_pos(NULL)
71  , fhRichRings_protons(NULL)
72  , fhRichRings_protons2(NULL)
73  , fhRichRings_start(NULL)
74  , timer()
75  , fTime(0.) {}
76 
78 
79 
81  FairRootManager* ioman = FairRootManager::Instance();
82  if (NULL == ioman) {
83  Fatal("CbmAnaConversion::Init", "RootManager not instantised!");
84  }
85 
86  fRichPoints = (TClonesArray*) ioman->GetObject("RichPoint");
87  if (NULL == fRichPoints) {
88  Fatal("CbmAnaConversion::Init", "No RichPoint array!");
89  }
90 
91  fMcTracks = (TClonesArray*) ioman->GetObject("MCTrack");
92  if (NULL == fMcTracks) {
93  Fatal("CbmAnaConversion::Init", "No MCTrack array!");
94  }
95 
96  fStsTracks = (TClonesArray*) ioman->GetObject("StsTrack");
97  if (NULL == fStsTracks) {
98  Fatal("CbmAnaConversion::Init", "No StsTrack array!");
99  }
100 
101  fStsTrackMatches = (TClonesArray*) ioman->GetObject("StsTrackMatch");
102  if (NULL == fStsTrackMatches) {
103  Fatal("CbmAnaConversion::Init", "No StsTrackMatch array!");
104  }
105 
106  fGlobalTracks = (TClonesArray*) ioman->GetObject("GlobalTrack");
107  if (NULL == fGlobalTracks) {
108  Fatal("CbmAnaConversion::Init", "No GlobalTrack array!");
109  }
110 
111  // Get pointer to PrimaryVertex object from IOManager if it exists
112  // The old name for the object is "PrimaryVertex" the new one
113  // "PrimaryVertex." Check first for the new name
114  fPrimVertex = dynamic_cast<CbmVertex*>(ioman->GetObject("PrimaryVertex."));
115  if (nullptr == fPrimVertex) {
116  fPrimVertex = dynamic_cast<CbmVertex*>(ioman->GetObject("PrimaryVertex"));
117  }
118  if (nullptr == fPrimVertex) { LOG(fatal) << "No PrimaryVertex array!"; }
119 
120  fRichRings = (TClonesArray*) ioman->GetObject("RichRing");
121  if (NULL == fRichRings) {
122  Fatal("CbmAnaConversion::Init", "No RichRing array!");
123  }
124 
125  fRichRingMatches = (TClonesArray*) ioman->GetObject("RichRingMatch");
126  if (NULL == fRichRingMatches) {
127  Fatal("CbmAnaConversion::Init", "No RichRingMatch array!");
128  }
129 
130  InitHistos();
131 }
132 
133 
135  fHistoList_richrings.clear();
136 
137  fTest = new TH2D("fTest", "fTest; X; Y", 200, -100, 100, 400, -200, 200);
138  fHistoList_richrings.push_back(fTest);
139 
140 
141  // #############################################
142  // Histograms related to rich rings
143  fRichRings_nofRings = new TH1D("fRichRings_nofRings",
144  "fRichRings_nofRings;nof rings per Event;#",
145  101,
146  -0.5,
147  100.5);
148  fRichRings_motherpdg = new TH1D("fRichRings_motherpdg",
149  "fRichRings_motherpdg;pdg code;#",
150  5002,
151  -1.5,
152  5000.5);
153  fRichRings_richpdg = new TH1D(
154  "fRichRings_richpdg", "fRichRings_richpdg;pdg code;#", 5001, -0.5, 5000.5);
156  new TH1D("fRichRings_electronspE",
157  "fRichRings_electronspE;nof electrons per event;#",
158  60,
159  -0.5,
160  59.5);
162  new TH1D("fRichRings_sourcePI0",
163  "fRichRings_sourcePI0;nof electrons from pi0;#",
164  60,
165  -0.5,
166  59.5);
167  fRichRings_test = new TH1D("fRichRings_test",
168  "fRichRings_test;nof electrons from pi0;#",
169  20,
170  -0.5,
171  19.5);
178 
179  fRichRings_detectedParticles = new TH1D("fRichRings_detectedParticles",
180  "fRichRings_detectedParticles;;#",
181  9,
182  0.,
183  9.);
184  fRichRings_detectedParticles->SetLabelSize(0.06);
186  fRichRings_detectedParticles->GetXaxis()->SetBinLabel(
187  1, "e^{+}/e^{-}"); // pdg code 11
188  fRichRings_detectedParticles->GetXaxis()->SetBinLabel(
189  2, "\\mu^{+}/\\mu^{-}"); // pdg code 13
190  fRichRings_detectedParticles->GetXaxis()->SetBinLabel(
191  3, "\\pi^{+}/\\pi^{-}"); // pdg code 211
192  fRichRings_detectedParticles->GetXaxis()->SetBinLabel(
193  4, "K^{+}/K^{-}"); // pdg code 321
194  fRichRings_detectedParticles->GetXaxis()->SetBinLabel(5,
195  "p"); // pdg code 2212
196  fRichRings_detectedParticles->GetXaxis()->SetBinLabel(
197  6, "\\Sigma^-"); // pdg code 3112
198  fRichRings_detectedParticles->GetXaxis()->SetBinLabel(
199  7, "\\Sigma^+"); // pdg code 3222
200  fRichRings_detectedParticles->GetXaxis()->SetBinLabel(
201  8, "\\Xi^-"); // pdg code 3312
202  fRichRings_detectedParticles->GetXaxis()->SetBinLabel(
203  9, "else"); // everything else
204 
205  fRichRings_detParticlesMother = new TH1D("fRichRings_detParticlesMother",
206  "fRichRings_detParticlesMother;;#",
207  22,
208  0.,
209  22.);
210  fRichRings_detParticlesMother->SetLabelSize(0.04);
212  fRichRings_detParticlesMother->GetXaxis()->SetBinLabel(
213  1, "e^{+}/e^{-}"); // pdg code 11
214  fRichRings_detParticlesMother->GetXaxis()->SetBinLabel(
215  2, "\\mu^{+}/\\mu^{-}"); // pdg code 13
216  fRichRings_detParticlesMother->GetXaxis()->SetBinLabel(
217  3, "\\gamma"); // pdg code 22
218  fRichRings_detParticlesMother->GetXaxis()->SetBinLabel(
219  4, "\\pi^{0}"); // pdg code 111
220  fRichRings_detParticlesMother->GetXaxis()->SetBinLabel(
221  5, "K_{L}^{0}"); // pdg code 130
222  fRichRings_detParticlesMother->GetXaxis()->SetBinLabel(
223  6, "\\pi^{+}/\\pi^{-}"); // pdg code 211
224  fRichRings_detParticlesMother->GetXaxis()->SetBinLabel(
225  7, "\\eta"); // pdg code 221
226  fRichRings_detParticlesMother->GetXaxis()->SetBinLabel(
227  8, "K_{S}^{0}"); // pdg code 310
228  fRichRings_detParticlesMother->GetXaxis()->SetBinLabel(
229  9, "K^{+}/K^{-}"); // pdg code 321
230  fRichRings_detParticlesMother->GetXaxis()->SetBinLabel(10,
231  "n"); // pdg code 2112
232  fRichRings_detParticlesMother->GetXaxis()->SetBinLabel(11,
233  "p"); // pdg code 2212
234  fRichRings_detParticlesMother->GetXaxis()->SetBinLabel(
235  12, "\\Sigma^-"); // pdg code 3112
236  fRichRings_detParticlesMother->GetXaxis()->SetBinLabel(
237  13, "\\Lambda^0"); // pdg code 3122
238  fRichRings_detParticlesMother->GetXaxis()->SetBinLabel(
239  14, "\\Sigma^+"); // pdg code 3222
240  fRichRings_detParticlesMother->GetXaxis()->SetBinLabel(
241  15, "\\Xi^-"); // pdg code 3312
242  fRichRings_detParticlesMother->GetXaxis()->SetBinLabel(
243  16, "\\Omega^-"); // pdg code 3334
244  fRichRings_detParticlesMother->GetXaxis()->SetBinLabel(
245  17, "prim."); // no mother particle, i.e. comes from primary vertex
246  fRichRings_detParticlesMother->GetXaxis()->SetBinLabel(
247  18,
248  "prim. E"); // no mother particle, i.e. comes from primary vertex (e+/e-)
249  fRichRings_detParticlesMother->GetXaxis()->SetBinLabel(
250  19,
251  "prim. M"); // no mother particle, i.e. comes from primary vertex (mu+/mu-)
252  fRichRings_detParticlesMother->GetXaxis()->SetBinLabel(
253  20,
254  "prim. P"); // no mother particle, i.e. comes from primary vertex (pi+/pi-)
255  fRichRings_detParticlesMother->GetXaxis()->SetBinLabel(
256  21,
257  "prim. K"); // no mother particle, i.e. comes from primary vertex (K+/K-)
258  fRichRings_detParticlesMother->GetXaxis()->SetBinLabel(
259  22,
260  "prim. else"); // no mother particle, i.e. comes from primary vertex (K+/K-)
261 
262 
264  new TH1D("fRichRings_Aaxis", "fRichRings_Aaxis;A-axis;#", 300, 0., 30.);
265  fRichRings_Aaxis_part1 = new TH1D(
266  "fRichRings_Aaxis_part1", "fRichRings_Aaxis_part1;A-axis;#", 300, 0., 30.);
267  fRichRings_Aaxis_part2 = new TH1D(
268  "fRichRings_Aaxis_part2", "fRichRings_Aaxis_part2;A-axis;#", 300, 0., 30.);
269  fRichRings_Aaxis_part3 = new TH1D(
270  "fRichRings_Aaxis_part3", "fRichRings_Aaxis_part3;A-axis;#", 300, 0., 30.);
271  fRichRings_Aaxis_electrons = new TH1D("fRichRings_Aaxis_electrons",
272  "fRichRings_Aaxis_electrons;A-axis;#",
273  300,
274  0.,
275  30.);
277  new TH1D("fRichRings_Baxis", "fRichRings_Baxis;B-axis;#", 300, 0., 30.);
278  fRichRings_Baxis_part1 = new TH1D(
279  "fRichRings_Baxis_part1", "fRichRings_Baxis_part1;B-axis;#", 300, 0., 30.);
280  fRichRings_Baxis_part2 = new TH1D(
281  "fRichRings_Baxis_part2", "fRichRings_Baxis_part2;B-axis;#", 300, 0., 30.);
282  fRichRings_Baxis_part3 = new TH1D(
283  "fRichRings_Baxis_part3", "fRichRings_Baxis_part3;B-axis;#", 300, 0., 30.);
284  fRichRings_Baxis_electrons = new TH1D("fRichRings_Baxis_electrons",
285  "fRichRings_Baxis_electrons;B-axis;#",
286  300,
287  0.,
288  30.);
290  new TH1D("fRichRings_radius", "fRichRings_radius;radius;#", 300, 0., 30.);
291  fRichRings_radius_electrons = new TH1D("fRichRings_radius_electrons",
292  "fRichRings_radius_electrons;radius;#",
293  300,
294  0.,
295  30.);
297  new TH2D("fRichRings_radius_vs_momentum",
298  "fRichRings_radius_vs_momentum;momentum;radius",
299  100,
300  0.,
301  10.,
302  300,
303  0.,
304  30.);
305  fRichRings_radius_vs_pt = new TH2D("fRichRings_radius_vs_pt",
306  "fRichRings_radius_vs_pt;pt;radius",
307  100,
308  0.,
309  10.,
310  300,
311  0.,
312  30.);
313  fRichRings_distance = new TH1D(
314  "fRichRings_distance", "fRichRings_distance;distance;#", 500, 0., 5.);
316  new TH1D("fRichRings_distance_electrons",
317  "fRichRings_distance_electrons;distance;#",
318  500,
319  0.,
320  5.);
321  fhRingtest = new TH2D("fhRingtest",
322  "fhRingtest;momentum [GeV/c];radius [cm]",
323  200,
324  0.,
325  10.,
326  200,
327  0.,
328  10.);
330  new TH2D("fhRichRings_AaxisVSmom",
331  "fhRichRings_AaxisVSmom;momentum [GeV/c];a-axis [cm]",
332  200,
333  0.,
334  10.,
335  200,
336  0.,
337  10.);
339  new TH2D("fhRichRings_BaxisVSmom",
340  "fhRichRings_BaxisVSmom;momentum [GeV/c];b-axis [cm]",
341  200,
342  0.,
343  10.,
344  200,
345  0.,
346  10.);
363  fHistoList_richrings.push_back(fhRingtest);
366 
368  new TH1D("fRichRings_test1", "fRichRings_test1;A-axis;#", 300, 0., 30.);
370  new TH1D("fRichRings_test2", "fRichRings_test2;A-axis;#", 300, 0., 30.);
372  new TH1D("fRichRings_test3", "fRichRings_test3;A-axis;#", 300, 0., 5.);
374  new TH1D("fRichRings_test4", "fRichRings_test4;A-axis;#", 300, 0., 30.);
376  new TH1D("fRichRings_test5", "fRichRings_test5;A-axis;#", 300, 0., 30.);
378  new TH1D("fRichRings_test6", "fRichRings_test6;A-axis;#", 300, 0., 30.);
379  fhRichRings_pos = new TH2D(
380  "fRichRings_pos", "fRichRings_pos;x;y", 400, -200., 200., 400, -200., 200.);
388 
389 
390  // for proton analysis
391  fhRichRings_protons = new TH2D("fhRichRings_protons",
392  "fhRichRings_protons;px;py",
393  1000,
394  -10,
395  10,
396  1000,
397  -10,
398  10);
400  fhRichRings_protons2 = new TH1D(
401  "fhRichRings_protons2", "fhRichRings_protons2;nof hits;#", 40, -0.5, 39.5);
403 
404 
406  new TH1D("fhRichRings_start", "fhRichRings_start;z;#", 1000, 0, 100);
408 }
409 
410 
412  //gDirectory->cd("analysis-conversion");
413  gDirectory->mkdir("RichRings");
414  gDirectory->cd("RichRings");
415  for (UInt_t i = 0; i < fHistoList_richrings.size(); i++) {
416  fHistoList_richrings[i]->Write();
417  }
418  gDirectory->cd("..");
419 
420  cout << "CbmAnaConversionRich: Realtime - " << fTime << endl;
421  //timer.Print();
422 }
423 
424 
426  timer.Start();
427 
428  Int_t nofMC = fMcTracks->GetEntriesFast();
429  cout << "CbmAnaConversionRich: nof mc tracks " << nofMC << endl;
430 
431  // analyse RICH points
432  Int_t nofPoints = fRichPoints->GetEntriesFast();
433  for (int i = 0; i < nofPoints; i++) {
434  CbmRichPoint* point = (CbmRichPoint*) fRichPoints->At(i);
435  if (point == NULL) continue;
436  //cout << point->GetX() << "\t" << point->GetY() << endl;
437  fTest->Fill(point->GetX(), point->GetY());
438  }
439 
440  // analyse RICH rings
441  if (fRichRings != NULL) {
442  // Bool_t testbool = true;
443  Int_t nofElectrons = 0;
444  Int_t sourcePI0 = 0;
445  vector<int> pi0ids;
446  pi0ids.clear();
447 
448  Int_t primEl = 0;
449  Int_t primMu = 0;
450  Int_t primPi = 0;
451  Int_t primK = 0;
452 
453  Int_t nofRings = fRichRings->GetEntriesFast();
454  fRichRings_nofRings->Fill(nofRings);
455  for (int i = 0; i < nofRings; i++) {
456  CbmRichRing* richRing = (CbmRichRing*) fRichRings->At(i);
457  if (richRing == NULL) continue;
458  fRichRings_Aaxis->Fill(richRing->GetAaxis());
459  fRichRings_Baxis->Fill(richRing->GetBaxis());
460  // CbmRichRing::GetDistance() method is no longer supported
461  // If you wan to use cuts update code using CbmRichUtil::GetRingTrackDistance()
462  fRichRings_distance->Fill(1. /*richRing->GetDistance()*/);
463  fRichRings_radius->Fill(richRing->GetRadius());
464  }
465 
466  Int_t nofGlobalTracks = fGlobalTracks->GetEntriesFast();
467  cout << "CbmAnaConversionRich: nof global tracks " << nofGlobalTracks
468  << endl;
469  for (int iG = 0; iG < nofGlobalTracks; iG++) {
470  CbmGlobalTrack* gTrack = (CbmGlobalTrack*) fGlobalTracks->At(iG);
471  if (NULL == gTrack) continue;
472  int stsInd = gTrack->GetStsTrackIndex();
473  int richInd = gTrack->GetRichRingIndex();
474  if (richInd < 0) continue; // no RICH segment -> no ring
475 
476  //int trdInd = gTrack->GetTrdTrackIndex();
477  //int tofInd = gTrack->GetTofHitIndex();
478 
479  if (stsInd < 0) continue;
480  CbmStsTrack* stsTrack = (CbmStsTrack*) fStsTracks->At(stsInd);
481  if (stsTrack == NULL) continue;
482 
483  CbmTrackMatchNew* stsMatch =
484  (CbmTrackMatchNew*) fStsTrackMatches->At(stsInd);
485  if (stsMatch == NULL) continue;
486  int stsMcTrackId = stsMatch->GetMatchedLink().GetIndex();
487  if (stsMcTrackId < 0) continue;
488  CbmMCTrack* mcTrack1 = (CbmMCTrack*) fMcTracks->At(stsMcTrackId);
489  if (mcTrack1 == NULL) continue;
490 
491  CbmTrackMatchNew* richMatch =
492  (CbmTrackMatchNew*) fRichRingMatches->At(richInd);
493  if (richMatch == NULL) continue;
494  int richMcTrackId = richMatch->GetMatchedLink().GetIndex();
495  if (richMcTrackId < 0) continue;
496  CbmMCTrack* mcTrack2 = (CbmMCTrack*) fMcTracks->At(richMcTrackId);
497  if (mcTrack2 == NULL) continue;
498 
499  // stsMcTrackId == richMcTrackId -> track was reconstructed in STS and made a ring in RICH, track matching was correct
500  // in case they are not equal, the ring comes either from a secondary particle or STS track was not reconstructed
501  if (stsMcTrackId != richMcTrackId) continue;
502 
503  CbmRichRing* ring = static_cast<CbmRichRing*>(fRichRings->At(richInd));
504  TVector3 momentum;
505  mcTrack1->GetMomentum(momentum);
506  fRichRings_radius_vs_momentum->Fill(momentum.Mag(), ring->GetRadius());
507  fRichRings_radius_vs_pt->Fill(momentum.Perp(), ring->GetRadius());
508 
509 
510  int pdg = TMath::Abs(
511  mcTrack2
512  ->GetPdgCode()); // extract pdg code of particle directly from rich ring
513 
514  // get start vertex of track
515  TVector3 start;
516  mcTrack2->GetStartVertex(start);
517  fhRichRings_start->Fill(start.Z());
518 
519 
520  /* Int_t index = richRing->GetTrackID();
521  if (index < 0) continue;
522  CbmGlobalTrack* gTrack = (CbmGlobalTrack*) fGlobalTracks->At(index);
523  if(NULL == gTrack) continue;
524  int stsInd = gTrack->GetStsTrackIndex();
525  int richInd = gTrack->GetRichRingIndex();
526  int trdInd = gTrack->GetTrdTrackIndex();
527  int tofInd = gTrack->GetTofHitIndex();
528 
529  if (stsInd < 0) continue;
530  CbmStsTrack* stsTrack = (CbmStsTrack*) fStsTracks->At(stsInd);
531  if (stsTrack == NULL) continue;
532  CbmTrackMatchNew* stsMatch = (CbmTrackMatchNew*) fStsTrackMatches->At(stsInd);
533  if (stsMatch == NULL) continue;
534  int stsMcTrackId = stsMatch->GetMatchedLink().GetIndex();
535  if (stsMcTrackId < 0) continue;
536  CbmMCTrack* mcTrack1 = (CbmMCTrack*) fMcTracks->At(stsMcTrackId);
537  if (mcTrack1 == NULL) continue;
538  int pdg = TMath::Abs(mcTrack1->GetPdgCode());
539 */
540  int motherId = mcTrack2->GetMotherId();
541  int motherpdg = 0;
542  CbmMCTrack* mothermcTrack1;
543 
544  if (motherId != -1) {
545  mothermcTrack1 = (CbmMCTrack*) fMcTracks->At(motherId);
546  motherpdg = TMath::Abs(mothermcTrack1->GetPdgCode());
547  }
548  if (motherId == -1) {
549  motherpdg = -1;
550  if (pdg == 11) primEl++;
551  if (pdg == 13) primMu++;
552  if (pdg == 211) primPi++;
553  if (pdg == 321) primK++;
554  }
555 
556  if (pdg == 2212) {
557  Protons(mcTrack1);
558  //fhRichRings_protons2->Fill(richRing->GetNofHits());
559  }
560 
561  fRichRings_motherpdg->Fill(motherpdg);
562  fRichRings_richpdg->Fill(pdg);
563 
564  if (pdg == 11) { // && stsMcTrackId == richMcTrackId) {
565  nofElectrons++;
566  int grandmotherpdg = 0;
567  int grandmotherId = 0;
568  if (motherpdg == 22) {
569  grandmotherId = mothermcTrack1->GetMotherId();
570  if (grandmotherId != -1) {
571  CbmMCTrack* grandmothermcTrack1 =
572  (CbmMCTrack*) fMcTracks->At(grandmotherId);
573  grandmotherpdg = TMath::Abs(grandmothermcTrack1->GetPdgCode());
574  }
575  if (grandmotherId == -1) { grandmotherpdg = -1; }
576  }
577  if (motherpdg == 111 || grandmotherpdg == 111) {
578  sourcePI0++;
579  if (motherpdg == 111) {
580  pi0ids.push_back(motherId);
581  } else if (grandmotherpdg == 111) {
582  pi0ids.push_back(grandmotherId);
583  }
584  }
585  }
586  FillAdditionalPDGhisto(pdg, motherpdg);
587  }
588 
589  fRichRings_electronspE->Fill(nofElectrons);
590  fRichRings_sourcePI0->Fill(sourcePI0);
591 
592  TH1I* zwischenhisto =
593  new TH1I("zwischenhisto", "zwischenhisto", 1000000, 0, 1000000);
594  for (unsigned int i = 0; i < pi0ids.size(); i++) {
595  zwischenhisto->Fill(pi0ids[i]);
596  }
597  fRichRings_test->Fill(zwischenhisto->GetMaximum());
598  if (zwischenhisto->GetMaximum() >= 4) {
599  CbmMCTrack* mcTrack2 =
600  (CbmMCTrack*) fMcTracks->At(zwischenhisto->GetMaximumBin() - 1);
601  int pdg = mcTrack2->GetPdgCode();
602  cout << "CbmAnaConversionRich: MAXIMUM BIN: "
603  << zwischenhisto->GetMaximum() << "\t"
604  << "bin id: " << zwischenhisto->GetMaximumBin() - 1 << endl;
605  cout << "CbmAnaConversionRich: pdg code: " << pdg << endl;
606  cout << "CbmAnaConversionRich: \t";
607 
608  std::sort(pi0ids.begin(), pi0ids.end());
609  for (unsigned int i = 0; i < pi0ids.size(); i++) {
610  cout << pi0ids[i] << "\t";
611  }
612 
613  cout << endl;
614  cout << "CbmAnaConversionRich: number of electrons: " << nofElectrons
615  << "\t e from pi0: " << sourcePI0
616  << "\t pi0ids size: " << pi0ids.size() << endl;
617  }
618  zwischenhisto->Delete();
619 
620 
621  int photoncounter = 0;
622  std::multimap<int, int> electronMap;
623  for (unsigned int i = 0; i < pi0ids.size(); i++) {
624  electronMap.insert(std::pair<int, int>(pi0ids[i], i));
625  }
626 
627  int check = 0;
628  for (std::map<int, int>::iterator it = electronMap.begin();
629  it != electronMap.end();
630  ++it) {
631  if (it == electronMap.begin()) check = 1;
632  if (it != electronMap.begin()) {
633  std::map<int, int>::iterator zwischen = it;
634  zwischen--;
635  int id = it->first;
636  int id_old = zwischen->first;
637  if (id == id_old) {
638  check++;
639  if (check > 3) {
640  cout << "CbmAnaConversionRich: richmap - photon found " << id
641  << endl;
642  photoncounter++;
643  }
644  } else
645  check = 1;
646  }
647  }
648  }
649 
650 
651  // plot momentum vs ring radius/Axis+Baxis
652  //cout << "CbmAnaConversionRich: further ring analyses..." << endl;
653  Int_t nGTracks = fGlobalTracks->GetEntriesFast();
654  for (Int_t iGTrack = 0; iGTrack < nGTracks; iGTrack++) {
655  CbmGlobalTrack* gTrack = (CbmGlobalTrack*) fGlobalTracks->At(iGTrack);
656  if (NULL == gTrack) continue;
657  int stsInd = gTrack->GetStsTrackIndex();
658  int richInd = gTrack->GetRichRingIndex();
659  if (richInd < 0) continue;
660  if (stsInd < 0) continue;
661  CbmRichRing* richRing = (CbmRichRing*) fRichRings->At(richInd);
662 
663  CbmTrackMatchNew* richMatch =
664  (CbmTrackMatchNew*) fRichRingMatches->At(richInd);
665  if (richMatch == NULL) continue;
666  Int_t richMcTrackId = richMatch->GetMatchedLink().GetIndex();
667 
668  CbmMCTrack* mctrack = (CbmMCTrack*) fMcTracks->At(richMcTrackId);
669  if (mctrack == NULL) continue;
670 
671  int pdg = TMath::Abs(mctrack->GetPdgCode());
672 
673  Double_t momentum = mctrack->GetP();
674  Double_t radius = richRing->GetRadius();
675  Double_t axisA = richRing->GetAaxis();
676  Double_t axisB = richRing->GetBaxis();
677  Double_t distance = CbmRichUtil::GetRingTrackDistance(iGTrack);
678 
679  fhRingtest->Fill(momentum, radius);
680  fhRichRings_AaxisVSmom->Fill(momentum, axisA);
681  fhRichRings_BaxisVSmom->Fill(momentum, axisB);
682 
683  if (richRing->GetPhi() <= 5) { fhRichRings_test1->Fill(axisA); }
684 
685  if (pdg == 11) {
686  fRichRings_Aaxis_electrons->Fill(axisA);
687  fRichRings_Baxis_electrons->Fill(axisB);
688  fRichRings_radius_electrons->Fill(radius);
689  fRichRings_distance_electrons->Fill(distance);
690  }
691 
692  Double_t ringX = richRing->GetCenterX();
693  Double_t ringY = richRing->GetCenterY();
694 
695  if (sqrt(ringX * ringX + (abs(ringY) - 105) * (abs(ringY) - 105)) <= 50) {
696  fhRichRings_test2->Fill(axisA);
697  }
698  fhRichRings_test3->Fill(richRing->GetAngle());
699  fhRichRings_pos->Fill(ringX, ringY);
700 
701  if (abs(ringX) <= 30 && abs(ringY) <= 130) {
702  fRichRings_Aaxis_part1->Fill(axisA);
703  fRichRings_Baxis_part1->Fill(axisB);
704  }
705  if (abs(ringX) > 30 && abs(ringY) > 130 && abs(ringX) <= 70
706  && abs(ringY) <= 155) {
707  fRichRings_Aaxis_part2->Fill(axisA);
708  fRichRings_Baxis_part2->Fill(axisB);
709  }
710  if (abs(ringX) > 70 && abs(ringY) > 155) {
711  fRichRings_Aaxis_part3->Fill(axisA);
712  fRichRings_Baxis_part3->Fill(axisB);
713  }
714  }
715 
716  CheckMC();
717 
718  timer.Stop();
719  fTime += timer.RealTime();
720 }
721 
722 
723 void CbmAnaConversionRich::FillAdditionalPDGhisto(Int_t pdg, Int_t motherpdg) {
724  if (pdg == 11) fRichRings_detectedParticles->Fill(0);
725  if (pdg == 13) fRichRings_detectedParticles->Fill(1);
726  if (pdg == 211) fRichRings_detectedParticles->Fill(2);
727  if (pdg == 321) fRichRings_detectedParticles->Fill(3);
728  if (pdg == 2212) fRichRings_detectedParticles->Fill(4);
729  if (pdg == 3112) fRichRings_detectedParticles->Fill(5);
730  if (pdg == 3222) fRichRings_detectedParticles->Fill(6);
731  if (pdg == 3312) fRichRings_detectedParticles->Fill(7);
732  if (pdg != 11 && pdg != 13 && pdg != 211 && pdg != 321 && pdg != 2212
733  && pdg != 3112 && pdg != 3222 && pdg != 3312)
735 
736  if (motherpdg == 11) fRichRings_detParticlesMother->Fill(0);
737  if (motherpdg == 13) fRichRings_detParticlesMother->Fill(1);
738  if (motherpdg == 22) fRichRings_detParticlesMother->Fill(2);
739  if (motherpdg == 111) fRichRings_detParticlesMother->Fill(3);
740  if (motherpdg == 130) fRichRings_detParticlesMother->Fill(4);
741  if (motherpdg == 211) fRichRings_detParticlesMother->Fill(5);
742  if (motherpdg == 221) fRichRings_detParticlesMother->Fill(6);
743  if (motherpdg == 310) fRichRings_detParticlesMother->Fill(7);
744  if (motherpdg == 321) fRichRings_detParticlesMother->Fill(8);
745  if (motherpdg == 2112) fRichRings_detParticlesMother->Fill(9);
746  if (motherpdg == 2212) fRichRings_detParticlesMother->Fill(10);
747  if (motherpdg == 3112) fRichRings_detParticlesMother->Fill(11);
748  if (motherpdg == 3122) fRichRings_detParticlesMother->Fill(12);
749  if (motherpdg == 3222) fRichRings_detParticlesMother->Fill(13);
750  if (motherpdg == 3312) fRichRings_detParticlesMother->Fill(14);
751  if (motherpdg == 3334) fRichRings_detParticlesMother->Fill(15);
752  if (motherpdg == -1) {
754  if (pdg == 11) fRichRings_detParticlesMother->Fill(17);
755  if (pdg == 13) fRichRings_detParticlesMother->Fill(18);
756  if (pdg == 211) fRichRings_detParticlesMother->Fill(19);
757  if (pdg == 321) fRichRings_detParticlesMother->Fill(20);
758  //if(pdg != 11 && pdg != 13 && pdg != 211 && pdg != 321 && pdg != 2112 && pdg != 2212 && pdg != 3112 && pdg != 3122 && pdg != 3222 && pdg != 3312 && pdg != 3334) fRichRings_detParticlesMother->Fill(21);
759  if (pdg != 11 && pdg != 13 && pdg != 211 && pdg != 321)
761  }
762 }
763 
764 
766  fhRichRings_protons->Fill(mcTrack->GetPx(), mcTrack->GetPy());
767 }
768 
769 
771  vector<int> ids;
772  vector<int> electronids;
773  ids.clear();
774  electronids.clear();
775 
776  Int_t nofGlobalTracks = fGlobalTracks->GetEntriesFast();
777  for (int iG = 0; iG < nofGlobalTracks; iG++) {
778  CbmGlobalTrack* gTrack = (CbmGlobalTrack*) fGlobalTracks->At(iG);
779  if (NULL == gTrack) continue;
780  int stsInd = gTrack->GetStsTrackIndex();
781  // int richInd = gTrack->GetRichRingIndex();
782  // if (richInd < 0) continue; // no RICH segment -> no ring
783  if (stsInd < 0) continue;
784 
785  CbmStsTrack* stsTrack = (CbmStsTrack*) fStsTracks->At(stsInd);
786  if (stsTrack == NULL) continue;
787  CbmTrackMatchNew* stsMatch =
788  (CbmTrackMatchNew*) fStsTrackMatches->At(stsInd);
789  if (stsMatch == NULL) continue;
790  if (stsMatch->GetNofLinks() <= 0) continue;
791  int stsMcTrackId = stsMatch->GetMatchedLink().GetIndex();
792  if (stsMcTrackId < 0) continue;
793  CbmMCTrack* mcTrack1 = (CbmMCTrack*) fMcTracks->At(stsMcTrackId);
794  if (mcTrack1 == NULL) continue;
795 
796  /* CbmTrackMatchNew* richMatch = (CbmTrackMatchNew*)fRichRingMatches->At(richInd);
797  if (richMatch == NULL) continue;
798  int richMcTrackId = richMatch->GetMatchedLink().GetIndex();
799  if (richMcTrackId < 0) continue;
800  CbmMCTrack* mcTrack2 = (CbmMCTrack*) fMcTracks->At(richMcTrackId);
801  if (mcTrack2 == NULL) continue;
802  // stsMcTrackId == richMcTrackId -> track was reconstructed in STS and made a ring in RICH, track matching was correct
803  // in case they are not equal, the ring comes either from a secondary particle or STS track was not reconstructed
804  // if(stsMcTrackId != richMcTrackId) continue;
805 */
806  int pdg = TMath::Abs(
807  mcTrack1
808  ->GetPdgCode()); // extract pdg code of particle directly from rich ring
809  // int pdg2 = TMath::Abs(mcTrack2->GetPdgCode());
810 
811  // if(pdg != pdg2) {
812  // cout << "PDGs not matching!" << endl;
813  // }
814 
815  int motherId = mcTrack1->GetMotherId();
816  // int motherId2 = mcTrack2->GetMotherId();
817 
818  // if(motherId != motherId2) {
819  // cout << "MotherIDs not matching!" << endl;
820  // }
821 
822  int motherpdg = 0;
823  int grandmotherpdg = 0;
824  CbmMCTrack* mothermcTrack1;
825  CbmMCTrack* grandmothermcTrack1;
826  int grandmotherId = 0;
827 
828  if (motherId != -1) {
829  mothermcTrack1 = (CbmMCTrack*) fMcTracks->At(motherId);
830  motherpdg = TMath::Abs(mothermcTrack1->GetPdgCode());
831  } else if (motherId == -1) {
832  motherpdg = -1;
833  }
834 
835  if (pdg == 11) {
836  if (motherpdg == 22) {
837  grandmotherId = mothermcTrack1->GetMotherId();
838  if (grandmotherId != -1) {
839  grandmothermcTrack1 = (CbmMCTrack*) fMcTracks->At(grandmotherId);
840  grandmotherpdg = TMath::Abs(grandmothermcTrack1->GetPdgCode());
841  }
842  if (grandmotherId == -1) { grandmotherpdg = -1; }
843  }
844 
845  if (motherpdg == 111) {
846  ids.push_back(motherId);
847  electronids.push_back(stsMcTrackId);
848  }
849  if (motherpdg == 22 && grandmotherpdg == 111) {
850  ids.push_back(grandmotherId);
851  electronids.push_back(stsMcTrackId);
852  }
853  }
854  }
855 
856  cout << "CbmAnaConversionRich: vector ids contains " << ids.size()
857  << " entries." << endl;
858  cout << "CbmAnaConversionRich: ids entries: ";
859  for (unsigned int i = 0; i < ids.size(); i++) {
860  cout << ids[i] << " / ";
861  }
862  cout << endl;
863  cout << "CbmAnaConversionRich: electronids entries: ";
864  for (unsigned int i = 0; i < electronids.size(); i++) {
865  cout << electronids[i] << " / ";
866  }
867  cout << endl;
868 
869  int photoncounter = 0;
870  std::multimap<int, int> electronMap;
871  for (unsigned int i = 0; i < ids.size(); i++) {
872  electronMap.insert(std::pair<int, int>(ids[i], i));
873  }
874 
875  int check = 0;
876  for (std::map<int, int>::iterator it = electronMap.begin();
877  it != electronMap.end();
878  ++it) {
879  if (it == electronMap.begin()) check = 1;
880  if (it != electronMap.begin()) {
881  std::map<int, int>::iterator zwischen = it;
882  zwischen--;
883  int id = it->first;
884  int id_old = zwischen->first;
885  if (id == id_old) {
886  check++;
887  if (check > 3) {
888  cout << "CbmAnaConversionRich: richmap - photon found " << id << endl;
889  photoncounter++;
890  }
891  } else
892  check = 1;
893  }
894  }
895 }
CbmRichPoint.h
CbmMCTrack::GetMotherId
Int_t GetMotherId() const
Definition: CbmMCTrack.h:71
CbmMatch::GetMatchedLink
const CbmLink & GetMatchedLink() const
Definition: CbmMatch.h:37
CbmMCTrack::GetMomentum
void GetMomentum(TVector3 &momentum) const
Definition: CbmMCTrack.h:172
CbmAnaConversionRich::fhRichRings_AaxisVSmom
TH2D * fhRichRings_AaxisVSmom
Definition: CbmAnaConversionRich.h:86
CbmAnaConversionRich::fhRichRings_test1
TH1D * fhRichRings_test1
Definition: CbmAnaConversionRich.h:89
CbmMatch::GetNofLinks
Int_t GetNofLinks() const
Definition: CbmMatch.h:38
CbmAnaConversionRich::fhRichRings_test6
TH1D * fhRichRings_test6
Definition: CbmAnaConversionRich.h:94
sqrt
friend F32vec4 sqrt(const F32vec4 &a)
Definition: L1/vectors/P4_F32vec4.h:41
CbmAnaConversionRich::CbmAnaConversionRich
CbmAnaConversionRich()
Definition: CbmAnaConversionRich.cxx:26
CbmGlobalTrack::GetRichRingIndex
Int_t GetRichRingIndex() const
Definition: CbmGlobalTrack.h:41
CbmMCTrack::GetPdgCode
Int_t GetPdgCode() const
Definition: CbmMCTrack.h:70
i
int i
Definition: L1/vectors/P4_F32vec4.h:25
CbmAnaConversionRich::fRichRings_Aaxis_part3
TH1D * fRichRings_Aaxis_part3
Definition: CbmAnaConversionRich.h:72
CbmGlobalTrack.h
CbmAnaConversionRich::FillAdditionalPDGhisto
void FillAdditionalPDGhisto(Int_t pdg, Int_t motherpdg)
Definition: CbmAnaConversionRich.cxx:723
CbmAnaConversionRich::fRichRings_radius
TH1D * fRichRings_radius
Definition: CbmAnaConversionRich.h:79
CbmRichRing
Definition: CbmRichRing.h:17
CbmAnaConversionRich::fRichRings_radius_vs_momentum
TH2D * fRichRings_radius_vs_momentum
Definition: CbmAnaConversionRich.h:81
CbmMCTrack::GetPx
Double_t GetPx() const
Definition: CbmMCTrack.h:72
CbmMCTrack::GetPy
Double_t GetPy() const
Definition: CbmMCTrack.h:73
CbmRichRing.h
CbmAnaConversionRich::fRichRings_Baxis_part3
TH1D * fRichRings_Baxis_part3
Definition: CbmAnaConversionRich.h:77
CbmAnaConversionRich::fRichRingMatches
TClonesArray * fRichRingMatches
Definition: CbmAnaConversionRich.h:45
CbmAnaConversionRich::fRichRings_Aaxis
TH1D * fRichRings_Aaxis
Definition: CbmAnaConversionRich.h:69
CbmAnaConversionRich::fhRichRings_test4
TH1D * fhRichRings_test4
Definition: CbmAnaConversionRich.h:92
CbmAnaConversionRich::fhRichRings_test2
TH1D * fhRichRings_test2
Definition: CbmAnaConversionRich.h:90
CbmRichUtil::GetRingTrackDistance
static Double_t GetRingTrackDistance(Int_t globalTrackId)
Definition: alignment/CbmRichUtil.h:20
CbmAnaConversionRich::fRichRings_electronspE
TH1D * fRichRings_electronspE
Definition: CbmAnaConversionRich.h:62
CbmAnaConversionRich::InitHistos
void InitHistos()
Definition: CbmAnaConversionRich.cxx:134
CbmAnaConversionRich::fMcTracks
TClonesArray * fMcTracks
Definition: CbmAnaConversionRich.h:46
CbmStsTrack.h
Data class for STS tracks.
CbmAnaConversionRich::fRichRings_nofRings
TH1D * fRichRings_nofRings
Definition: CbmAnaConversionRich.h:59
CbmGlobalTrack::GetStsTrackIndex
Int_t GetStsTrackIndex() const
Definition: CbmGlobalTrack.h:38
CbmAnaConversionRich::fStsTrackMatches
TClonesArray * fStsTrackMatches
Definition: CbmAnaConversionRich.h:48
CbmAnaConversionRich::fhRingtest
TH2D * fhRingtest
Definition: CbmAnaConversionRich.h:85
CbmAnaConversionRich::fRichRings_Baxis_part1
TH1D * fRichRings_Baxis_part1
Definition: CbmAnaConversionRich.h:75
CbmAnaConversionRich::fTime
Double_t fTime
Definition: CbmAnaConversionRich.h:105
CbmAnaConversionRich::fRichRings_radius_vs_pt
TH2D * fRichRings_radius_vs_pt
Definition: CbmAnaConversionRich.h:82
CbmAnaConversionRich::fRichRings_detParticlesMother
TH1D * fRichRings_detParticlesMother
Definition: CbmAnaConversionRich.h:67
CbmAnaConversionRich::fRichRings_radius_electrons
TH1D * fRichRings_radius_electrons
Definition: CbmAnaConversionRich.h:80
CbmAnaConversionRich::Finish
void Finish()
Definition: CbmAnaConversionRich.cxx:411
CbmAnaConversionRich::Protons
void Protons(CbmMCTrack *mcTrack)
Definition: CbmAnaConversionRich.cxx:765
CbmAnaConversionRich::timer
TStopwatch timer
Definition: CbmAnaConversionRich.h:104
CbmAnaConversionRich::fRichRings_richpdg
TH1D * fRichRings_richpdg
Definition: CbmAnaConversionRich.h:61
CbmAnaConversionRich::fRichRings_Baxis_electrons
TH1D * fRichRings_Baxis_electrons
Definition: CbmAnaConversionRich.h:78
CbmAnaConversionRich::fhRichRings_protons
TH2D * fhRichRings_protons
Definition: CbmAnaConversionRich.h:98
CbmTrackMatchNew.h
CbmVertex
Definition: CbmVertex.h:26
CbmAnaConversionRich::fhRichRings_protons2
TH1D * fhRichRings_protons2
Definition: CbmAnaConversionRich.h:99
CbmAnaConversionRich::fStsTracks
TClonesArray * fStsTracks
Definition: CbmAnaConversionRich.h:47
CbmAnaConversionRich::fhRichRings_test5
TH1D * fhRichRings_test5
Definition: CbmAnaConversionRich.h:93
CbmAnaConversionRich::Init
void Init()
Definition: CbmAnaConversionRich.cxx:80
CbmAnaConversionRich::CheckMC
void CheckMC()
Definition: CbmAnaConversionRich.cxx:770
CbmMCTrack::GetStartVertex
void GetStartVertex(TVector3 &vertex) const
Definition: CbmMCTrack.h:182
CbmRichRing::GetAaxis
Double_t GetAaxis() const
Definition: CbmRichRing.h:83
CbmAnaConversionRich::fRichRings_Aaxis_part1
TH1D * fRichRings_Aaxis_part1
Definition: CbmAnaConversionRich.h:70
CbmAnaConversionRich::fhRichRings_pos
TH2D * fhRichRings_pos
Definition: CbmAnaConversionRich.h:95
CbmAnaConversionRich::fRichRings_test
TH1D * fRichRings_test
Definition: CbmAnaConversionRich.h:64
CbmAnaConversionRich::fRichRings_Baxis_part2
TH1D * fRichRings_Baxis_part2
Definition: CbmAnaConversionRich.h:76
CbmAnaConversionRich::fRichRings_motherpdg
TH1D * fRichRings_motherpdg
Definition: CbmAnaConversionRich.h:60
CbmRichRing::GetBaxis
Double_t GetBaxis() const
Definition: CbmRichRing.h:84
CbmAnaConversionRich::fRichRings_distance
TH1D * fRichRings_distance
Definition: CbmAnaConversionRich.h:83
CbmGlobalTrack
Definition: CbmGlobalTrack.h:26
CbmRichRing::GetPhi
Double_t GetPhi() const
Definition: CbmRichRing.h:87
CbmAnaConversionRich::fhRichRings_test3
TH1D * fhRichRings_test3
Definition: CbmAnaConversionRich.h:91
CbmMCTrack.h
CbmAnaConversionRich::fRichRings_Baxis
TH1D * fRichRings_Baxis
Definition: CbmAnaConversionRich.h:74
CbmAnaConversionRich::AnalyseRICHdata
void AnalyseRICHdata()
Definition: CbmAnaConversionRich.cxx:425
CbmMCTrack
Definition: CbmMCTrack.h:34
CbmAnaConversionRich::fRichRings_distance_electrons
TH1D * fRichRings_distance_electrons
Definition: CbmAnaConversionRich.h:84
CbmAnaConversionRich::fRichRings_Aaxis_part2
TH1D * fRichRings_Aaxis_part2
Definition: CbmAnaConversionRich.h:71
CbmRichRing::GetRadius
Float_t GetRadius() const
Definition: CbmRichRing.h:82
CbmRichRing::GetCenterY
Float_t GetCenterY() const
Definition: CbmRichRing.h:81
CbmTrackMatchNew
Definition: CbmTrackMatchNew.h:19
CbmAnaConversionRich::fhRichRings_start
TH1D * fhRichRings_start
Definition: CbmAnaConversionRich.h:101
CbmAnaConversionRich::fPrimVertex
CbmVertex * fPrimVertex
Definition: CbmAnaConversionRich.h:50
CbmAnaConversionRich::fGlobalTracks
TClonesArray * fGlobalTracks
Definition: CbmAnaConversionRich.h:49
CbmAnaConversionRich::fRichPoints
TClonesArray * fRichPoints
Definition: CbmAnaConversionRich.h:43
CbmAnaConversionRich::~CbmAnaConversionRich
virtual ~CbmAnaConversionRich()
Definition: CbmAnaConversionRich.cxx:77
CbmAnaConversionRich::fRichRings_Aaxis_electrons
TH1D * fRichRings_Aaxis_electrons
Definition: CbmAnaConversionRich.h:73
CbmAnaConversionRich.h
CbmStsTrack
Definition: CbmStsTrack.h:37
CbmRichPoint
Definition: CbmRichPoint.h:24
CbmAnaConversionRich::fRichRings
TClonesArray * fRichRings
Definition: CbmAnaConversionRich.h:44
CbmMCTrack::GetP
Double_t GetP() const
Definition: CbmMCTrack.h:100
CbmAnaConversionRich::fHistoList_richrings
std::vector< TH1 * > fHistoList_richrings
Definition: CbmAnaConversionRich.h:53
CbmRichRing::GetCenterX
Float_t GetCenterX() const
Definition: CbmRichRing.h:80
CbmAnaConversionRich::fRichRings_sourcePI0
TH1D * fRichRings_sourcePI0
Definition: CbmAnaConversionRich.h:63
CbmRichRing::GetAngle
Double_t GetAngle() const
Definition: CbmRichRing.h:98
CbmAnaConversionRich::fhRichRings_BaxisVSmom
TH2D * fhRichRings_BaxisVSmom
Definition: CbmAnaConversionRich.h:87
CbmAnaConversionRich::fRichRings_detectedParticles
TH1D * fRichRings_detectedParticles
Definition: CbmAnaConversionRich.h:66
CbmAnaConversionRich::fTest
TH2D * fTest
Definition: CbmAnaConversionRich.h:56