CbmRoot
CbmKresEtaMCAnalysis.cxx
Go to the documentation of this file.
1 
16 #include "CbmKresEtaMCAnalysis.h"
17 #include "CbmKresFunctions.h"
18 
19 #include "TDirectory.h"
20 #include <iostream>
21 
22 #include "CbmGlobalTrack.h"
23 #include "CbmMCTrack.h"
24 #include "CbmStsTrack.h"
25 #include "CbmTrackMatchNew.h"
26 #include "FairRootManager.h"
27 #include "TH1.h"
28 #include "TH1D.h"
29 #include "TH2D.h"
30 #include "TMath.h"
31 
32 
33 using namespace std;
34 
36  : fMcTracks(nullptr)
37  , fGlobalTracks(nullptr)
38  , fStsTracks(nullptr)
39  , fStsTrackMatches(nullptr)
40  , El_Photon_Eta_refmomentum()
41  , El_Photon_Eta_MCtrack()
42  , El_Photon_Eta_Id()
43  , El_Photon_Pion_Eta_refmomentum()
44  , El_Photon_Pion_Eta_MCtrack()
45  , El_Photon_Pion_Eta_Id()
46  , Pion_Eta_refmomentum()
47  , Pion_Eta_MCtrack()
48  , Pion_Eta_Id()
49  , All_El_refmomentum()
50  , All_El_MCtrack()
51  , All_El_Id()
52  , All_Pion_refmomentum()
53  , All_Pion_MCtrack()
54  , All_Pion_Id()
55  , frefmomenta()
56  , fMCtracks()
57  , fMCId()
58  , EDGA_RefMom()
59  , EDGA_MC()
60  , EDGA_Id()
61  , ECPGA_leptons_RefMom()
62  , ECPGA_leptons_MC()
63  , ECPGA_leptons_Id()
64  , ECPGA_pions_RefMom()
65  , ECPGA_pions_MC()
66  , fHistoList_eta_gg()
67  , InvMass_eta_gg_mc(nullptr)
68  , InvMass_eta_gg_reffited(nullptr)
69  , InvMassPhoton_eta_gg_mc(nullptr)
70  , InvMassPhoton_eta_gg_reffited(nullptr)
71  , OpeningAnglePhoton_eta_gg_mc(nullptr)
72  , OpeningAnglePhoton_eta_gg_reffited(nullptr)
73  , OpeningAngle_eta_gg_between_gg_mc(nullptr)
74  , OpeningAngle_eta_gg_between_gg_reffited(nullptr)
75  , InvMass_eta_gg_allcombinations_mc(nullptr)
76  , InvMass_eta_gg_allcombinations_reffited(nullptr)
77  , EMT_eta_gg(nullptr)
78  , InvMass_eta_gg_reco_aftercuts(nullptr)
79  , rap_vs_pt_eta_gg_reco_aftercuts(nullptr)
80  , rap_vs_pt_NOTeta_gg_reco_aftercuts(nullptr)
81  , fHistoList_eta_ppg()
82  , InvMass_eta_ppg_mc(nullptr)
83  , InvMass_eta_ppg_reffited(nullptr)
84  , InvMassPhoton_eta_ppg_mc(nullptr)
85  , InvMassPhoton_eta_ppg_reffited(nullptr)
86  , OpeningAnglePhoton_eta_ppg_mc(nullptr)
87  , OpeningAnglePhoton_eta_ppg_reffited(nullptr)
88  , InvMass_eta_ppg_allcombinations_mc(nullptr)
89  , InvMass_eta_ppg_allcombinations_reffited(nullptr)
90  , Pion_P_fromEta_reco(nullptr)
91  , Pion_P_elsewhere_reco(nullptr)
92  , Pion_Pt_fromEta_reco(nullptr)
93  , Pion_Pt_elsewhere_reco(nullptr)
94  , OA_betweenPions_fromEta_mc(nullptr)
95  , OA_betweenPions_fromEta_reco(nullptr)
96  , OA_betweenPions_fromEta_reco_wrongcombinations(nullptr)
97  , EMT_eta_ppg(nullptr)
98  , EMT_eta_three_body(nullptr)
99  , InvMass_eta_ppg_reco_aftercuts(nullptr)
100  , rap_vs_pt_eta_ppg_reco_aftercuts(nullptr)
101  , rap_vs_pt_NOTeta_ppg_reco_aftercuts(nullptr)
102  , fHistoList_eta_ppp()
103  , InvMass_eta_ppp_mc(nullptr)
104  , InvMass_eta_ppp_reffited(nullptr)
105  , InvMass_eta_Npion_mc(nullptr)
106  , InvMass_eta_Npion_reffited(nullptr)
107  , InvMass_eta_ppp_allcombinations_mc(nullptr)
108  , InvMass_eta_ppp_allcombinations_reffited(nullptr)
109  , EMT_gg_Event()
110  , EMT_gg_pair_momenta()
111  , EMT_ppg_ee_Event()
112  , EMT_ppg_ee_pair_momenta()
113  , EMT_ppg_pp_Event()
114  , EMT_ppg_pp_pair_momenta()
115  , EMT_ppg_positive_pion_Event()
116  , EMT_ppg_positive_pion_momenta()
117  , EMT_ppg_negative_pion_Event()
118  , EMT_ppg_negative_pion_momenta() {}
119 
121 
123  InitHistograms();
124 
125  FairRootManager* ioman = FairRootManager::Instance();
126  if (nullptr == ioman) {
127  Fatal("CbmKresEtaMCAnalysis::Init", "RootManager not instantised!");
128  }
129 
130  fMcTracks = (TClonesArray*) ioman->GetObject("MCTrack");
131  if (nullptr == fMcTracks) {
132  Fatal("CbmKresEtaMCAnalysis::Init", "No MCTrack array!");
133  }
134 
135  fGlobalTracks = (TClonesArray*) ioman->GetObject("GlobalTrack");
136  if (nullptr == fGlobalTracks) {
137  Fatal("CbmKresEtaMCAnalysis::Init", "No GlobalTrack array!");
138  }
139 
140  fStsTracks = (TClonesArray*) ioman->GetObject("StsTrack");
141  if (nullptr == fStsTracks) {
142  Fatal("CbmKresEtaMCAnalysis::Init", "No StsTrack array!");
143  }
144 
145  fStsTrackMatches = (TClonesArray*) ioman->GetObject("StsTrackMatch");
146  if (nullptr == fStsTrackMatches) {
147  Fatal("CbmKresEtaMCAnalysis::Init", "No StsTrackMatch array!");
148  }
149 }
150 
151 
153  double OpeningAngleCut,
154  double GammaInvMassCut) {
155  // cout << "CbmKresEtaMCAnalysis, event No. " << Event << endl;
156 
157  int counter = 0;
158  Int_t nofMcTracks = fMcTracks->GetEntriesFast();
159  for (int i = 0; i < nofMcTracks; i++) {
160  CbmMCTrack* mctrack = (CbmMCTrack*) fMcTracks->At(i);
161  if (mctrack == nullptr) continue;
162  if (mctrack->GetPdgCode() == 221) counter++;
163 
164  // if (mctrack->GetMotherId() == -1) continue;
165  // CbmMCTrack* mcMotherTrack_1 = (CbmMCTrack*) fMcTracks->At(mctrack->GetMotherId());
166  // if (mcMotherTrack_1 == nullptr) continue;
167  // if (TMath::Abs(mctrack->GetPdgCode()) == 11 && mcMotherTrack_1->GetPdgCode() == 22){
168  // if(mcMotherTrack_1->GetMotherId() == -1) continue;
169  // CbmMCTrack* mcGrTrack = (CbmMCTrack*) fMcTracks->At(mcMotherTrack_1->GetMotherId());
170  // if (mcGrTrack == nullptr) continue;
171  // if (mcGrTrack->GetPdgCode() == 221){
172  // cout<< "Electron: id = " << i << "; motherid = " << mctrack->GetMotherId() << "; GrId = " << mcMotherTrack_1->GetMotherId() << endl;
173  // }
174  // }
175  }
176  // cout << "number of etas in event = " << counter << endl;
177 
179  El_Photon_Eta_MCtrack.clear();
180  El_Photon_Eta_Id.clear();
181 
184  El_Photon_Pion_Eta_Id.clear();
185 
186  Pion_Eta_refmomentum.clear();
187  Pion_Eta_MCtrack.clear();
188  Pion_Eta_Id.clear();
189 
190  All_El_refmomentum.clear();
191  All_El_MCtrack.clear();
192  All_El_Id.clear();
193 
194  All_Pion_refmomentum.clear();
195  All_Pion_MCtrack.clear();
196  All_Pion_Id.clear();
197 
198 
200  // ========================================================================================
201  Int_t ngTracks = fGlobalTracks->GetEntriesFast();
202  for (Int_t iTr = 0; iTr < ngTracks; iTr++) {
203  CbmGlobalTrack* gTrack = (CbmGlobalTrack*) fGlobalTracks->At(iTr);
204  if (nullptr == gTrack) continue;
205  int stsInd = gTrack->GetStsTrackIndex();
206 
207  // ========================================================================================
209  if (stsInd < 0) continue;
210  CbmStsTrack* stsTrack = (CbmStsTrack*) fStsTracks->At(stsInd);
211  if (stsTrack == nullptr) continue;
212  CbmTrackMatchNew* stsMatch =
213  (CbmTrackMatchNew*) fStsTrackMatches->At(stsInd);
214  if (stsMatch == nullptr) continue;
215  if (stsMatch->GetNofLinks() <= 0) continue;
216  int McTrackId = stsMatch->GetMatchedLink().GetIndex();
217  if (McTrackId < 0) continue;
218  CbmMCTrack* mcTrack = (CbmMCTrack*) fMcTracks->At(McTrackId);
219  if (mcTrack == nullptr) continue;
220  int pdg = mcTrack->GetPdgCode();
221  int motherId = mcTrack->GetMotherId();
222  if (TMath::Abs(pdg) != 11 && TMath::Abs(pdg) != 211) continue;
224  // ========================================================================================
225 
226  double chi2 = 0;
227  TVector3 refmomentum =
229  mcTrack->GetStartX(),
230  mcTrack->GetStartY(),
231  mcTrack->GetStartZ(),
232  chi2);
233 
234  // cout << "" << endl;
235  // cout << " pdg = " << mcTrack->GetPdgCode() << endl;
236  // cout << "mc: P = " << mcTrack->GetP() << ";\t Pt = " << mcTrack->GetPt() << "; \t E = " << mcTrack->GetEnergy() << endl;
237  // cout << "reco: P = " << refmomentum.Mag() << ";\t Pt = " << refmomentum.Perp() << "; \t E = " << TMath::Sqrt(refmomentum.Mag2() + mcTrack->GetMass()*mcTrack->GetMass()) << endl;
238  // cout << "chi2 = " << chi2 << endl;
239  // cout << "=========================" << endl;
240 
241  // if (chi2 > 3) continue;
242 
243  if (TMath::Abs(pdg) == 11) {
244  All_El_refmomentum.push_back(refmomentum);
245  All_El_MCtrack.push_back(mcTrack);
246  All_El_Id.push_back(McTrackId);
247  }
248  if (TMath::Abs(pdg) == 211) {
249  All_Pion_refmomentum.push_back(refmomentum);
250  All_Pion_MCtrack.push_back(mcTrack);
251  All_Pion_Id.push_back(McTrackId);
252  Pion_P_elsewhere_reco->Fill(refmomentum.Mag());
253  Pion_Pt_elsewhere_reco->Fill(refmomentum.Perp());
254  }
255 
256  if (motherId == -1) continue;
257  CbmMCTrack* mcMotherTrack = (CbmMCTrack*) fMcTracks->At(motherId);
258  if (mcMotherTrack == nullptr) continue;
259 
260  if (TMath::Abs(pdg) == 11 && mcMotherTrack->GetPdgCode() == 22) {
261  if (mcMotherTrack->GetMotherId() == -1) continue;
262  CbmMCTrack* mcGrTrack =
263  (CbmMCTrack*) fMcTracks->At(mcMotherTrack->GetMotherId());
264  if (mcGrTrack == nullptr) continue;
265  if (mcGrTrack->GetPdgCode() == 221) {
266  El_Photon_Eta_refmomentum.push_back(refmomentum);
267  El_Photon_Eta_MCtrack.push_back(mcTrack);
268  El_Photon_Eta_Id.push_back(McTrackId);
269  }
270  if (mcGrTrack->GetPdgCode() == 111) {
271  if (mcGrTrack->GetMotherId() == -1) continue;
272  CbmMCTrack* mcTopTrack =
273  (CbmMCTrack*) fMcTracks->At(mcGrTrack->GetMotherId());
274  if (mcTopTrack->GetPdgCode() == 221) {
275  El_Photon_Pion_Eta_refmomentum.push_back(refmomentum);
276  El_Photon_Pion_Eta_MCtrack.push_back(mcTrack);
277  El_Photon_Pion_Eta_Id.push_back(McTrackId);
278  }
279  }
280  }
281 
282  if (TMath::Abs(pdg) == 211 && mcMotherTrack->GetPdgCode() == 221) {
283  Pion_Eta_refmomentum.push_back(refmomentum);
284  Pion_Eta_MCtrack.push_back(mcTrack);
285  Pion_Eta_Id.push_back(McTrackId);
286  Pion_P_fromEta_reco->Fill(refmomentum.Mag());
287  Pion_Pt_fromEta_reco->Fill(refmomentum.Perp());
288  }
289  }
291  // ========================================================================================
292 
293 
300  Pion_Eta_Id,
310  Pion_Eta_Id,
312 
313 
314  EtaDoubleGammaAnalysis_plusBG(OpeningAngleCut,
315  GammaInvMassCut,
316  Event,
319  All_El_Id,
321  EtaChargedPionsGammaAnalysis_plusBG(OpeningAngleCut,
322  GammaInvMassCut,
323  Event,
326  All_Pion_Id,
329  All_El_Id,
332 
333  if (Event % 1000 == 0) {
334  // Mixing_gg();
335  EMT_gg_Event.clear();
336  EMT_gg_pair_momenta.clear();
337  }
338 
339  if (Event % 10 == 0) {
340  // Mixing_three_body();
345 
346  // Mixing_ppg();
347  EMT_ppg_ee_Event.clear();
348  EMT_ppg_ee_pair_momenta.clear();
349  EMT_ppg_pp_Event.clear();
350  EMT_ppg_pp_pair_momenta.clear();
351  }
352 }
353 
355  CbmMCTrack* mctrack1,
356  CbmMCTrack* mctrack2,
357  CbmMCTrack* mctrack3,
358  CbmMCTrack* mctrack4) {
359  Double_t openingAngle;
360  TLorentzVector gamma1;
361  TLorentzVector gamma2;
362 
363  if (mctrack1->GetMotherId() == mctrack2->GetMotherId()
364  && mctrack3->GetMotherId() == mctrack4->GetMotherId()) {
365  CbmMCTrack* mother1 = (CbmMCTrack*) fMcTracks->At(mctrack1->GetMotherId());
366  mother1->Get4Momentum(gamma1);
367  CbmMCTrack* mother2 = (CbmMCTrack*) fMcTracks->At(mctrack3->GetMotherId());
368  mother2->Get4Momentum(gamma2);
369  }
370  if (mctrack1->GetMotherId() == mctrack3->GetMotherId()
371  && mctrack2->GetMotherId() == mctrack4->GetMotherId()) {
372  CbmMCTrack* mother1 = (CbmMCTrack*) fMcTracks->At(mctrack1->GetMotherId());
373  mother1->Get4Momentum(gamma1);
374  CbmMCTrack* mother2 = (CbmMCTrack*) fMcTracks->At(mctrack2->GetMotherId());
375  mother2->Get4Momentum(gamma2);
376  }
377  if (mctrack1->GetMotherId() == mctrack4->GetMotherId()
378  && mctrack2->GetMotherId() == mctrack3->GetMotherId()) {
379  CbmMCTrack* mother1 = (CbmMCTrack*) fMcTracks->At(mctrack1->GetMotherId());
380  mother1->Get4Momentum(gamma1);
381  CbmMCTrack* mother2 = (CbmMCTrack*) fMcTracks->At(mctrack2->GetMotherId());
382  mother2->Get4Momentum(gamma2);
383  }
384 
385  Double_t angle = gamma1.Angle(gamma2.Vect());
386  openingAngle = 180. * angle / TMath::Pi();
387 
388  return openingAngle;
389 }
390 
392  TVector3 electron1,
393  TVector3 electron2,
394  TVector3 electron3,
395  TVector3 electron4) {
396  double M2El = 2.6112004954086e-7;
397  Double_t energy1 = TMath::Sqrt(electron1.Mag2() + M2El);
398  TLorentzVector lorVec1(electron1, energy1);
399 
400  Double_t energy2 = TMath::Sqrt(electron2.Mag2() + M2El);
401  TLorentzVector lorVec2(electron2, energy2);
402 
403  Double_t energy3 = TMath::Sqrt(electron3.Mag2() + M2El);
404  TLorentzVector lorVec3(electron3, energy3);
405 
406  Double_t energy4 = TMath::Sqrt(electron4.Mag2() + M2El);
407  TLorentzVector lorVec4(electron4, energy4);
408 
409  TLorentzVector lorPhoton1 = lorVec1 + lorVec2;
410  TLorentzVector lorPhoton2 = lorVec3 + lorVec4;
411 
412  Double_t angleBetweenPhotons = lorPhoton1.Angle(lorPhoton2.Vect());
413  Double_t theta = 180. * angleBetweenPhotons / TMath::Pi();
414 
415  return theta;
416 }
417 
418 
419 void CbmKresEtaMCAnalysis::EtaDoubleGammaAnalysis(vector<TVector3> RefMom,
420  vector<CbmMCTrack*> MC,
421  vector<Int_t> Id,
422  vector<TH1*> gg) {
423  //================================== decay eta -> gamma gamma -> e+e- e+e-
424  // cout << "MC.size() = " << MC.size() << endl;
425  if (MC.size() < 4) return;
426 
427  for (size_t i = 0; i < MC.size(); i++) {
428  for (size_t j = i + 1; j < MC.size(); j++) {
429  for (size_t k = j + 1; k < MC.size(); k++) {
430  for (size_t l = k + 1; l < MC.size(); l++) {
431 
432  int pdg1 = MC.at(i)->GetPdgCode();
433  int pdg2 = MC.at(j)->GetPdgCode();
434  int pdg3 = MC.at(k)->GetPdgCode();
435  int pdg4 = MC.at(l)->GetPdgCode();
436 
437  if (pdg1 + pdg2 + pdg3 + pdg4 != 0) continue;
438  if (TMath::Abs(pdg1) != 11 || TMath::Abs(pdg2) != 11
439  || TMath::Abs(pdg3) != 11 || TMath::Abs(pdg4) != 11)
440  continue;
441 
442  int motherId1 = MC.at(i)->GetMotherId();
443  int motherId2 = MC.at(j)->GetMotherId();
444  int motherId3 = MC.at(k)->GetMotherId();
445  int motherId4 = MC.at(l)->GetMotherId();
446 
447  int mcId1 = Id.at(i);
448  int mcId2 = Id.at(j);
449  int mcId3 = Id.at(k);
450  int mcId4 = Id.at(l);
451 
452  if (mcId1 == mcId2 || mcId1 == mcId3 || mcId1 == mcId4
453  || mcId2 == mcId3 || mcId2 == mcId4 || mcId3 == mcId4)
454  continue; // particle is not used twice
455  if (motherId1 == -1 || motherId2 == -1 || motherId3 == -1
456  || motherId4 == -1)
457  continue;
458 
459  CbmMCTrack* mother1 = (CbmMCTrack*) fMcTracks->At(motherId1);
460  CbmMCTrack* mother2 = (CbmMCTrack*) fMcTracks->At(motherId2);
461  CbmMCTrack* mother3 = (CbmMCTrack*) fMcTracks->At(motherId3);
462  CbmMCTrack* mother4 = (CbmMCTrack*) fMcTracks->At(motherId4);
463 
464  int mcMotherPdg1 = mother1->GetPdgCode();
465  int mcMotherPdg2 = mother2->GetPdgCode();
466  int mcMotherPdg3 = mother3->GetPdgCode();
467  int mcMotherPdg4 = mother4->GetPdgCode();
468 
469  if (mcMotherPdg1 != 22 || mcMotherPdg2 != 22 || mcMotherPdg3 != 22
470  || mcMotherPdg4 != 22)
471  continue;
472 
473  int grandmotherId1 = mother1->GetMotherId();
474  int grandmotherId2 = mother2->GetMotherId();
475  int grandmotherId3 = mother3->GetMotherId();
476  int grandmotherId4 = mother4->GetMotherId();
477 
478  if (grandmotherId1 == -1) continue;
479 
480 
481  if (grandmotherId1 == grandmotherId2
482  && grandmotherId1 == grandmotherId3
483  && grandmotherId1 == grandmotherId4) {
484 
485  CbmMCTrack* GrMother1 = (CbmMCTrack*) fMcTracks->At(grandmotherId1);
486  int mcGrandmotherPdg1 = GrMother1->GetPdgCode();
487  if (mcGrandmotherPdg1 != 221) continue;
488 
489  Double_t InvMass_true = CbmKresFunctions::Invmass_4particles_MC(
490  MC.at(i), MC.at(j), MC.at(k), MC.at(l));
491  Double_t InvMass_reco = CbmKresFunctions::Invmass_4particles_RECO(
492  RefMom.at(i), RefMom.at(j), RefMom.at(k), RefMom.at(l));
493  cout
494  << "Decay eta -> gamma gamma -> e+e- e+e- detected!\t\t mc mass: "
495  << InvMass_true << "\t, reco mass: " << InvMass_reco << endl;
496  cout << "motherids: " << motherId1 << "/" << motherId2 << "/"
497  << motherId3 << "/" << motherId4 << endl;
498  cout << "grandmotherid: " << grandmotherId1 << "/" << grandmotherId2
499  << "/" << grandmotherId3 << "/" << grandmotherId4 << endl;
500  cout << "pdgs: " << mcGrandmotherPdg1 << "-->" << mcMotherPdg1
501  << "/" << mcMotherPdg2 << "/" << mcMotherPdg3 << "/"
502  << mcMotherPdg4 << "-->" << pdg1 << "/" << pdg2 << "/" << pdg3
503  << "/" << pdg4 << endl;
504 
505  gg[0]->Fill(InvMass_true);
506  gg[1]->Fill(InvMass_reco);
507 
508  cout << "\t \t mc true info: " << endl;
509  cout << "particle 1: \t" << MC.at(i)->GetPdgCode()
510  << ";\t pt = " << MC.at(i)->GetPt()
511  << ";\t X = " << MC.at(i)->GetStartX()
512  << ";\t Y = " << MC.at(i)->GetStartY()
513  << ";\t Z = " << MC.at(i)->GetStartZ()
514  << ";\t E = " << MC.at(i)->GetEnergy() << endl;
515  cout << "particle 2: \t" << MC.at(j)->GetPdgCode()
516  << ";\t pt = " << MC.at(j)->GetPt()
517  << ";\t X = " << MC.at(j)->GetStartX()
518  << ";\t Y = " << MC.at(j)->GetStartY()
519  << ";\t Z = " << MC.at(j)->GetStartZ()
520  << ";\t E = " << MC.at(j)->GetEnergy() << endl;
521  cout << "particle 3: \t" << MC.at(k)->GetPdgCode()
522  << ";\t pt = " << MC.at(k)->GetPt()
523  << ";\t X = " << MC.at(k)->GetStartX()
524  << ";\t Y = " << MC.at(k)->GetStartY()
525  << ";\t Z = " << MC.at(k)->GetStartZ()
526  << ";\t E = " << MC.at(k)->GetEnergy() << endl;
527  cout << "particle 4: \t" << MC.at(l)->GetPdgCode()
528  << ";\t pt = " << MC.at(l)->GetPt()
529  << ";\t X = " << MC.at(l)->GetStartX()
530  << ";\t Y = " << MC.at(l)->GetStartY()
531  << ";\t Z = " << MC.at(l)->GetStartZ()
532  << ";\t E = " << MC.at(l)->GetEnergy() << endl;
533 
534  Double_t OpeningAngle1_mc = 0;
535  Double_t OpeningAngle2_mc = 0;
536  Double_t OpeningAngle1_refitted = 0;
537  Double_t OpeningAngle2_refitted = 0;
538  Double_t InvMass_realg1_mc = 0;
539  Double_t InvMass_realg2_mc = 0;
540  Double_t InvMass_realg1_refitted = 0;
541  Double_t InvMass_realg2_refitted = 0;
542 
543  Double_t openingAngleBetweenGammasReco = 0;
544 
545  if (motherId1 == motherId2) {
546  OpeningAngle1_mc =
548  OpeningAngle2_mc =
549  CbmKresFunctions::CalculateOpeningAngle_MC(MC.at(k), MC.at(l));
550  gg[4]->Fill(OpeningAngle1_mc);
551  gg[4]->Fill(OpeningAngle2_mc);
552  OpeningAngle1_refitted =
554  RefMom.at(j));
555  OpeningAngle2_refitted =
557  RefMom.at(l));
558  gg[5]->Fill(OpeningAngle1_refitted);
559  gg[5]->Fill(OpeningAngle2_refitted);
560 
561  InvMass_realg1_mc =
562  CbmKresFunctions::Invmass_2particles_MC(MC.at(i), MC.at(j));
563  InvMass_realg2_mc =
564  CbmKresFunctions::Invmass_2particles_MC(MC.at(k), MC.at(l));
565  gg[2]->Fill(InvMass_realg1_mc);
566  gg[2]->Fill(InvMass_realg2_mc);
567  InvMass_realg1_refitted =
569  RefMom.at(j));
570  InvMass_realg2_refitted =
572  RefMom.at(l));
573  gg[3]->Fill(InvMass_realg1_refitted);
574  gg[3]->Fill(InvMass_realg2_refitted);
575  openingAngleBetweenGammasReco =
577  RefMom.at(i), RefMom.at(j), RefMom.at(k), RefMom.at(l));
578  }
579  if (motherId1 == motherId3) {
580  OpeningAngle1_mc =
582  OpeningAngle2_mc =
583  CbmKresFunctions::CalculateOpeningAngle_MC(MC.at(j), MC.at(l));
584  gg[4]->Fill(OpeningAngle1_mc);
585  gg[4]->Fill(OpeningAngle2_mc);
586  OpeningAngle1_refitted =
588  RefMom.at(k));
589  OpeningAngle2_refitted =
591  RefMom.at(l));
592  gg[5]->Fill(OpeningAngle1_refitted);
593  gg[5]->Fill(OpeningAngle2_refitted);
594 
595  InvMass_realg1_mc =
596  CbmKresFunctions::Invmass_2particles_MC(MC.at(i), MC.at(k));
597  InvMass_realg2_mc =
598  CbmKresFunctions::Invmass_2particles_MC(MC.at(j), MC.at(l));
599  gg[2]->Fill(InvMass_realg1_mc);
600  gg[2]->Fill(InvMass_realg2_mc);
601  InvMass_realg1_refitted =
603  RefMom.at(k));
604  InvMass_realg2_refitted =
606  RefMom.at(l));
607  gg[3]->Fill(InvMass_realg1_refitted);
608  gg[3]->Fill(InvMass_realg2_refitted);
609  openingAngleBetweenGammasReco =
611  RefMom.at(i), RefMom.at(k), RefMom.at(j), RefMom.at(l));
612  }
613  if (motherId1 == motherId4) {
614  OpeningAngle1_mc =
616  OpeningAngle2_mc =
617  CbmKresFunctions::CalculateOpeningAngle_MC(MC.at(j), MC.at(k));
618  gg[4]->Fill(OpeningAngle1_mc);
619  gg[4]->Fill(OpeningAngle2_mc);
620  OpeningAngle1_refitted =
622  RefMom.at(l));
623  OpeningAngle2_refitted =
625  RefMom.at(k));
626  gg[5]->Fill(OpeningAngle1_refitted);
627  gg[5]->Fill(OpeningAngle2_refitted);
628 
629  InvMass_realg1_mc =
630  CbmKresFunctions::Invmass_2particles_MC(MC.at(i), MC.at(l));
631  InvMass_realg2_mc =
632  CbmKresFunctions::Invmass_2particles_MC(MC.at(j), MC.at(k));
633  gg[2]->Fill(InvMass_realg1_mc);
634  gg[2]->Fill(InvMass_realg2_mc);
635  InvMass_realg1_refitted =
637  RefMom.at(l));
638  InvMass_realg2_refitted =
640  RefMom.at(k));
641  gg[3]->Fill(InvMass_realg1_refitted);
642  gg[3]->Fill(InvMass_realg2_refitted);
643  openingAngleBetweenGammasReco =
645  RefMom.at(i), RefMom.at(l), RefMom.at(j), RefMom.at(k));
646  }
647  Double_t openingAngleBetweenGammas =
649  MC.at(i), MC.at(j), MC.at(k), MC.at(l));
650  gg[6]->Fill(openingAngleBetweenGammas);
651  gg[7]->Fill(openingAngleBetweenGammasReco);
652  }
653  }
654  }
655  }
656  }
657 }
658 
659 
661  vector<TVector3> RefMomPion,
662  vector<CbmMCTrack*> MCPion,
663  vector<Int_t> /*IdPion*/,
664  vector<TVector3> RefMomEl,
665  vector<CbmMCTrack*> MCEl,
666  vector<Int_t> /*IdEl*/,
667  vector<TH1*> ppg) {
668  //================================== decay eta -> p+p- gamma -> p+p- e+e-
669  if (MCPion.size() < 2 || MCEl.size() < 2) return;
670 
671  // int fDecayedParticlePdg = 221;
672 
673  for (size_t i = 0; i < MCEl.size(); i++) {
674  for (size_t j = i + 1; j < MCEl.size(); j++) {
675  int pdg1 = MCEl.at(i)->GetPdgCode();
676  int pdg2 = MCEl.at(j)->GetPdgCode();
677 
678  if (pdg1 + pdg2 != 0) continue;
679  if (TMath::Abs(pdg1) != 11 || TMath::Abs(pdg2) != 11) continue;
680 
681  int motherId1 = MCEl.at(i)->GetMotherId();
682  int motherId2 = MCEl.at(j)->GetMotherId();
683 
684  if (motherId1 != motherId2) continue;
685  if (motherId1 == -1 || motherId2 == -1) continue;
686 
687  CbmMCTrack* mother1 = (CbmMCTrack*) fMcTracks->At(motherId1);
688 
689  if (mother1->GetPdgCode() != 22) continue;
690 
691  int grandmotherId1 = mother1->GetMotherId();
692 
693  if (grandmotherId1 == -1) continue;
694 
695  CbmMCTrack* GrMother1 = (CbmMCTrack*) fMcTracks->At(grandmotherId1);
696  int mcGrandmotherPdg1 = GrMother1->GetPdgCode();
697  if (mcGrandmotherPdg1 != 221) continue;
698 
699 
700  for (size_t k = 0; k < MCPion.size(); k++) {
701  for (size_t l = k + 1; l < MCPion.size(); l++) {
702  int pdg3 = MCPion.at(k)->GetPdgCode();
703  int pdg4 = MCPion.at(l)->GetPdgCode();
704 
705  if (pdg3 + pdg4 != 0) continue;
706  if (TMath::Abs(pdg3) != 211 || TMath::Abs(pdg4) != 211) continue;
707 
708  int motherId3 = MCPion.at(k)->GetMotherId();
709  int motherId4 = MCPion.at(l)->GetMotherId();
710 
711  if (motherId3 != motherId4) continue;
712  if (motherId3 == -1 || motherId4 == -1) continue;
713  if (motherId3 != grandmotherId1) continue;
714 
715  Double_t InvMass_true = CbmKresFunctions::Invmass_4particles_MC(
716  MCEl.at(i), MCEl.at(j), MCPion.at(k), MCPion.at(l));
717  Double_t InvMass_reco = CbmKresFunctions::Invmass_2el_2pions_RECO(
718  RefMomEl.at(i), RefMomEl.at(j), RefMomPion.at(k), RefMomPion.at(l));
719  cout << "Decay eta -> p+p- gamma -> p+p- e+e- detected!\t\t mc mass: "
720  << InvMass_true << "\t, reco mass: " << InvMass_reco << endl;
721  cout << "motherids: " << motherId1 << "/" << motherId2 << "/"
722  << motherId3 << "/" << motherId4 << endl;
723  cout << "grandmotherid: " << grandmotherId1 << endl;
724  cout << "pdgs: " << mcGrandmotherPdg1 << "-->"
725  << mother1->GetPdgCode() << "/" << pdg3 << "/" << pdg4 << "-->"
726  << pdg1 << "/" << pdg2 << "/" << pdg3 << "/" << pdg4 << endl;
727 
728  ppg[0]->Fill(InvMass_true);
729  ppg[1]->Fill(InvMass_reco);
730 
731  cout << "\t \t mc true info: " << endl;
732  cout << "particle 1: \t" << MCEl.at(i)->GetPdgCode()
733  << ";\t pt = " << MCEl.at(i)->GetPt()
734  << ";\t X = " << MCEl.at(i)->GetStartX()
735  << ";\t Y = " << MCEl.at(i)->GetStartY()
736  << ";\t Z = " << MCEl.at(i)->GetStartZ()
737  << ";\t E = " << MCEl.at(i)->GetEnergy() << endl;
738  cout << "particle 2: \t" << MCEl.at(j)->GetPdgCode()
739  << ";\t pt = " << MCEl.at(j)->GetPt()
740  << ";\t X = " << MCEl.at(j)->GetStartX()
741  << ";\t Y = " << MCEl.at(j)->GetStartY()
742  << ";\t Z = " << MCEl.at(j)->GetStartZ()
743  << ";\t E = " << MCEl.at(j)->GetEnergy() << endl;
744  cout << "particle 3: \t" << MCPion.at(k)->GetPdgCode()
745  << ";\t pt = " << MCPion.at(k)->GetPt()
746  << ";\t X = " << MCPion.at(k)->GetStartX()
747  << ";\t Y = " << MCPion.at(k)->GetStartY()
748  << ";\t Z = " << MCPion.at(k)->GetStartZ()
749  << ";\t E = " << MCPion.at(k)->GetEnergy() << endl;
750  cout << "particle 4: \t" << MCPion.at(l)->GetPdgCode()
751  << ";\t pt = " << MCPion.at(l)->GetPt()
752  << ";\t X = " << MCPion.at(l)->GetStartX()
753  << ";\t Y = " << MCPion.at(l)->GetStartY()
754  << ";\t Z = " << MCPion.at(l)->GetStartZ()
755  << ";\t E = " << MCPion.at(l)->GetEnergy() << endl;
756 
757  double InvMass_g_mc =
758  CbmKresFunctions::Invmass_2particles_MC(MCEl.at(i), MCEl.at(j));
759  double InvMass_g_reffited = CbmKresFunctions::Invmass_2particles_RECO(
760  RefMomEl.at(i), RefMomEl.at(j));
761  double OpeningAngle_g_mc =
762  CbmKresFunctions::CalculateOpeningAngle_MC(MCEl.at(i), MCEl.at(j));
763  double OpeningAngle_g_refitted =
765  RefMomEl.at(j));
766 
767  ppg[2]->Fill(InvMass_g_mc);
768  ppg[3]->Fill(InvMass_g_reffited);
769  ppg[4]->Fill(OpeningAngle_g_mc);
770  ppg[5]->Fill(OpeningAngle_g_refitted);
771  }
772  }
773  }
774  }
775 }
776 
777 
779  vector<TVector3> RefMomNeutral,
780  vector<CbmMCTrack*> MCNeutral,
781  vector<Int_t> IdNeutral,
782  vector<TVector3> RefMomPion,
783  vector<CbmMCTrack*> MCPion,
784  vector<Int_t> /*IdPion*/,
785  vector<TH1*> ppp) {
786  if (MCNeutral.size() < 4 || MCPion.size() < 2) return;
787 
788  int fDecayedParticlePdg = 221;
789 
790  // cout << "!!!!!!!!!! MCNeutral.size() = " << MCNeutral.size() << endl;
791 
792  for (size_t i = 0; i < MCNeutral.size(); i++) {
793  for (size_t j = i + 1; j < MCNeutral.size(); j++) {
794  for (size_t k = j + 1; k < MCNeutral.size(); k++) {
795  for (size_t l = k + 1; l < MCNeutral.size(); l++) {
796 
797  int pdg1 = MCNeutral.at(i)->GetPdgCode();
798  int pdg2 = MCNeutral.at(j)->GetPdgCode();
799  int pdg3 = MCNeutral.at(k)->GetPdgCode();
800  int pdg4 = MCNeutral.at(l)->GetPdgCode();
801 
802  if (pdg1 + pdg2 + pdg3 + pdg4 != 0) continue;
803  if (TMath::Abs(pdg1) != 11 || TMath::Abs(pdg2) != 11
804  || TMath::Abs(pdg3) != 11 || TMath::Abs(pdg4) != 11)
805  continue;
806 
807  int motherId1 = MCNeutral.at(i)->GetMotherId();
808  int motherId2 = MCNeutral.at(j)->GetMotherId();
809  int motherId3 = MCNeutral.at(k)->GetMotherId();
810  int motherId4 = MCNeutral.at(l)->GetMotherId();
811 
812  int mcId1 = IdNeutral.at(i);
813  int mcId2 = IdNeutral.at(j);
814  int mcId3 = IdNeutral.at(k);
815  int mcId4 = IdNeutral.at(l);
816 
817  if (mcId1 == mcId2 || mcId1 == mcId3 || mcId1 == mcId4
818  || mcId2 == mcId3 || mcId2 == mcId4 || mcId3 == mcId4)
819  continue; // particle is not used twice
820  if (motherId1 == -1 || motherId2 == -1 || motherId3 == -1
821  || motherId4 == -1)
822  continue;
823 
824  CbmMCTrack* mother1 = (CbmMCTrack*) fMcTracks->At(motherId1);
825  CbmMCTrack* mother2 = (CbmMCTrack*) fMcTracks->At(motherId2);
826  CbmMCTrack* mother3 = (CbmMCTrack*) fMcTracks->At(motherId3);
827  CbmMCTrack* mother4 = (CbmMCTrack*) fMcTracks->At(motherId4);
828 
829  int mcMotherPdg1 = mother1->GetPdgCode();
830  int mcMotherPdg2 = mother2->GetPdgCode();
831  int mcMotherPdg3 = mother3->GetPdgCode();
832  int mcMotherPdg4 = mother4->GetPdgCode();
833 
834  if (mcMotherPdg1 != 22 || mcMotherPdg2 != 22 || mcMotherPdg3 != 22
835  || mcMotherPdg4 != 22)
836  continue;
837 
838  int grandmotherId1 = mother1->GetMotherId();
839  int grandmotherId2 = mother2->GetMotherId();
840  int grandmotherId3 = mother3->GetMotherId();
841  int grandmotherId4 = mother4->GetMotherId();
842 
843  if (grandmotherId1 == -1) continue;
844 
845  if (grandmotherId1 == grandmotherId2
846  && grandmotherId1 == grandmotherId3
847  && grandmotherId1 == grandmotherId4) {
848  CbmMCTrack* GrMother1 = (CbmMCTrack*) fMcTracks->At(grandmotherId1);
849  int mcGrandmotherPdg1 = GrMother1->GetPdgCode();
850  if (mcGrandmotherPdg1 != 111) continue;
851  // cout << "***************** 111 ****************" << endl;
852  if (GrMother1->GetMotherId() == -1) continue;
853  CbmMCTrack* TopTrack =
854  (CbmMCTrack*) fMcTracks->At(GrMother1->GetMotherId());
855  if (TopTrack->GetPdgCode() != fDecayedParticlePdg) continue;
856  // cout << "***************** from eta !!!!! ****************" << endl;
857 
858  for (size_t m = 0; m < MCPion.size(); m++) {
859  for (size_t s = m + 1; s < MCPion.size(); s++) {
860  int pdg5 = MCPion.at(m)->GetPdgCode();
861  int pdg6 = MCPion.at(s)->GetPdgCode();
862 
863  if (pdg5 + pdg6 != 0) continue;
864  if (TMath::Abs(pdg5) != 211 || TMath::Abs(pdg6) != 211)
865  continue;
866 
867  int motherId5 = MCPion.at(m)->GetMotherId();
868  int motherId6 = MCPion.at(s)->GetMotherId();
869 
870  if (motherId5 != motherId6) continue;
871  if (motherId5 == -1 || motherId6 == -1) continue;
872  if (motherId5 != GrMother1->GetMotherId()) continue;
873 
874  Double_t InvMass_six_true =
876  MCNeutral.at(j),
877  MCNeutral.at(k),
878  MCNeutral.at(l),
879  MCPion.at(m),
880  MCPion.at(s));
881  Double_t InvMass_six_reco =
883  RefMomNeutral.at(j),
884  RefMomNeutral.at(k),
885  RefMomNeutral.at(l),
886  RefMomPion.at(m),
887  RefMomPion.at(s));
888  cout << "Decay eta -> p+p- p0 -> p+p- e+e-e+e- detected!\t\t "
889  "mc mass: "
890  << InvMass_six_true
891  << "\t, reco mass: " << InvMass_six_reco << endl;
892  cout << "motherids for neutral: " << motherId1 << "/"
893  << motherId2 << "/" << motherId3 << "/" << motherId4
894  << endl;
895  cout << "grandmotherid: " << GrMother1->GetMotherId() << "/"
896  << motherId5 << "/" << motherId6 << endl;
897  cout << "pdgs: " << TopTrack->GetPdgCode() << "-->"
898  << GrMother1->GetPdgCode() << "/" << pdg5 << "/" << pdg6
899  << endl;
900 
901  ppp[0]->Fill(InvMass_six_true);
902  ppp[1]->Fill(InvMass_six_reco);
903 
904  cout << "\t \t mc true info: " << endl;
905  cout << "particle 1: \t" << MCNeutral.at(i)->GetPdgCode()
906  << ";\t pt = " << MCNeutral.at(i)->GetPt()
907  << ";\t X = " << MCNeutral.at(i)->GetStartX()
908  << ";\t Y = " << MCNeutral.at(i)->GetStartY()
909  << ";\t Z = " << MCNeutral.at(i)->GetStartZ()
910  << ";\t E = " << MCNeutral.at(i)->GetEnergy() << endl;
911  cout << "particle 2: \t" << MCNeutral.at(j)->GetPdgCode()
912  << ";\t pt = " << MCNeutral.at(j)->GetPt()
913  << ";\t X = " << MCNeutral.at(j)->GetStartX()
914  << ";\t Y = " << MCNeutral.at(j)->GetStartY()
915  << ";\t Z = " << MCNeutral.at(j)->GetStartZ()
916  << ";\t E = " << MCNeutral.at(j)->GetEnergy() << endl;
917  cout << "particle 3: \t" << MCNeutral.at(k)->GetPdgCode()
918  << ";\t pt = " << MCNeutral.at(k)->GetPt()
919  << ";\t X = " << MCNeutral.at(k)->GetStartX()
920  << ";\t Y = " << MCNeutral.at(k)->GetStartY()
921  << ";\t Z = " << MCNeutral.at(k)->GetStartZ()
922  << ";\t E = " << MCNeutral.at(k)->GetEnergy() << endl;
923  cout << "particle 4: \t" << MCNeutral.at(l)->GetPdgCode()
924  << ";\t pt = " << MCNeutral.at(l)->GetPt()
925  << ";\t X = " << MCNeutral.at(l)->GetStartX()
926  << ";\t Y = " << MCNeutral.at(l)->GetStartY()
927  << ";\t Z = " << MCNeutral.at(l)->GetStartZ()
928  << ";\t E = " << MCNeutral.at(l)->GetEnergy() << endl;
929  cout << "particle 5: \t" << MCPion.at(m)->GetPdgCode()
930  << ";\t pt = " << MCPion.at(m)->GetPt()
931  << ";\t X = " << MCPion.at(m)->GetStartX()
932  << ";\t Y = " << MCPion.at(m)->GetStartY()
933  << ";\t Z = " << MCPion.at(m)->GetStartZ()
934  << ";\t E = " << MCPion.at(m)->GetEnergy() << endl;
935  cout << "particle 6: \t" << MCPion.at(s)->GetPdgCode()
936  << ";\t pt = " << MCPion.at(s)->GetPt()
937  << ";\t X = " << MCPion.at(s)->GetStartX()
938  << ";\t Y = " << MCPion.at(s)->GetStartY()
939  << ";\t Z = " << MCPion.at(s)->GetStartZ()
940  << ";\t E = " << MCPion.at(s)->GetEnergy() << endl;
941 
942  Double_t InvMass_true =
944  MCNeutral.at(j),
945  MCNeutral.at(k),
946  MCNeutral.at(l));
947  Double_t InvMass_reco =
949  RefMomNeutral.at(i),
950  RefMomNeutral.at(j),
951  RefMomNeutral.at(k),
952  RefMomNeutral.at(l));
953  ppp[2]->Fill(InvMass_true);
954  ppp[3]->Fill(InvMass_reco);
955  }
956  }
957  }
958  }
959  }
960  }
961  }
962 }
963 
964 
966  double OpeningAngleCut,
967  double GammaInvMassCut,
968  int Event,
969  vector<TVector3> RefMom,
970  vector<CbmMCTrack*> MC,
971  vector<Int_t> Id,
972  vector<TH1*> gg) {
973  if (MC.size() < 4) return;
974 
975  EDGA_RefMom.clear();
976  EDGA_MC.clear();
977  EDGA_Id.clear();
978 
979  for (size_t i = 0; i < MC.size(); i++) {
980  for (size_t j = i + 1; j < MC.size(); j++) {
981  int pdg1 = MC.at(i)->GetPdgCode();
982  int pdg2 = MC.at(j)->GetPdgCode();
983  if (pdg1 + pdg2 != 0) continue;
984  if (TMath::Abs(pdg1) != 11 || TMath::Abs(pdg2) != 11) continue;
985 
986  double OpeningAngle_g_refitted =
988  RefMom.at(j));
989  double InvMass_g_refitted =
990  CbmKresFunctions::Invmass_2particles_RECO(RefMom.at(i), RefMom.at(j));
991 
992  if (OpeningAngle_g_refitted > OpeningAngleCut
993  || InvMass_g_refitted > GammaInvMassCut)
994  continue;
995 
996  frefmomenta.clear();
997  frefmomenta.push_back(RefMom.at(i));
998  frefmomenta.push_back(RefMom.at(j));
999  fMCtracks.clear();
1000  fMCtracks.push_back(MC.at(i));
1001  fMCtracks.push_back(MC.at(j));
1002  fMCId.clear();
1003  fMCId.push_back(Id.at(i));
1004  fMCId.push_back(Id.at(j));
1005 
1006  EDGA_RefMom.push_back(frefmomenta);
1007  EDGA_MC.push_back(fMCtracks);
1008  EDGA_Id.push_back(fMCId);
1009 
1010  // for event mixing gg channel
1011  EMT_gg_Event.push_back(Event);
1012  EMT_gg_pair_momenta.push_back(frefmomenta);
1013  }
1014  }
1015 
1016  if (EDGA_MC.size() < 2) return; // min 2 gammas to form eta are required
1017  for (size_t gamma1 = 0; gamma1 < EDGA_RefMom.size(); gamma1++) {
1018  for (size_t gamma2 = gamma1 + 1; gamma2 < EDGA_RefMom.size(); gamma2++) {
1019  TVector3 e11 = EDGA_RefMom[gamma1][0];
1020  TVector3 e12 = EDGA_RefMom[gamma1][1];
1021  TVector3 e21 = EDGA_RefMom[gamma2][0];
1022  TVector3 e22 = EDGA_RefMom[gamma2][1];
1023 
1024  // MC true data for this particles
1025  CbmMCTrack* mcTrack1 = EDGA_MC[gamma1][0];
1026  CbmMCTrack* mcTrack2 = EDGA_MC[gamma1][1];
1027  CbmMCTrack* mcTrack3 = EDGA_MC[gamma2][0];
1028  CbmMCTrack* mcTrack4 = EDGA_MC[gamma2][1];
1029 
1030  int mcId1 = EDGA_Id[gamma1][0];
1031  int mcId2 = EDGA_Id[gamma1][1];
1032  int mcId3 = EDGA_Id[gamma2][0];
1033  int mcId4 = EDGA_Id[gamma2][1];
1034 
1035  if (mcId1 == mcId2 || mcId1 == mcId3 || mcId1 == mcId4 || mcId2 == mcId3
1036  || mcId2 == mcId4 || mcId3 == mcId4)
1037  continue; // particle is not used twice
1038 
1039  double openingAngleBetweenGammasReco =
1040  CalculateOpeningAngleBetweenGammas_Reco(e11, e12, e21, e22);
1041  if (openingAngleBetweenGammasReco < 10
1042  || openingAngleBetweenGammasReco > 40)
1043  continue;
1044 
1045  double InvMass_true = CbmKresFunctions::Invmass_4particles_MC(
1046  mcTrack1, mcTrack2, mcTrack3, mcTrack4);
1047  double InvMass_reco =
1048  CbmKresFunctions::Invmass_4particles_RECO(e11, e12, e21, e22);
1049  CbmLmvmKinematicParams params =
1051  e11, e12, e21, e22);
1052 
1053  gg[8]->Fill(InvMass_true);
1054  gg[9]->Fill(InvMass_reco);
1055 
1056  int CorrectEta = 0;
1057  if ((mcTrack1->GetMotherId() == mcTrack2->GetMotherId()
1058  && mcTrack3->GetMotherId() == mcTrack4->GetMotherId())
1059  || (mcTrack1->GetMotherId() == mcTrack3->GetMotherId()
1060  && mcTrack2->GetMotherId() == mcTrack4->GetMotherId())
1061  || (mcTrack1->GetMotherId() == mcTrack4->GetMotherId()
1062  && mcTrack2->GetMotherId() == mcTrack3->GetMotherId())) {
1063  CbmMCTrack* MothTrack1 =
1064  (CbmMCTrack*) fMcTracks->At(mcTrack1->GetMotherId());
1065  CbmMCTrack* MothTrack2 =
1066  (CbmMCTrack*) fMcTracks->At(mcTrack2->GetMotherId());
1067  CbmMCTrack* MothTrack3 =
1068  (CbmMCTrack*) fMcTracks->At(mcTrack3->GetMotherId());
1069  CbmMCTrack* MothTrack4 =
1070  (CbmMCTrack*) fMcTracks->At(mcTrack4->GetMotherId());
1071  if (MothTrack1->GetPdgCode() == 22 && MothTrack2->GetPdgCode() == 22
1072  && MothTrack3->GetPdgCode() == 22 && MothTrack4->GetPdgCode() == 22
1073  && MothTrack1->GetMotherId() != -1
1074  && MothTrack1->GetMotherId() == MothTrack2->GetMotherId()
1075  && MothTrack1->GetMotherId() == MothTrack3->GetMotherId()
1076  && MothTrack1->GetMotherId() == MothTrack4->GetMotherId()) {
1077  CbmMCTrack* GrandMothTrack1 =
1078  (CbmMCTrack*) fMcTracks->At(MothTrack1->GetMotherId());
1079  if (GrandMothTrack1->GetPdgCode() == 221) CorrectEta = 1;
1080  }
1081  }
1082 
1083  if (CorrectEta == 1) {
1084  InvMass_eta_gg_reco_aftercuts->Fill(InvMass_reco);
1085  rap_vs_pt_eta_gg_reco_aftercuts->Fill(params.fRapidity, params.fPt);
1086  } else {
1087  rap_vs_pt_NOTeta_gg_reco_aftercuts->Fill(params.fRapidity, params.fPt);
1088  }
1089  }
1090  }
1091 }
1092 
1094  double OpeningAngleCut,
1095  double GammaInvMassCut,
1096  int Event,
1097  vector<TVector3> RefMomPion,
1098  vector<CbmMCTrack*> MCPion,
1099  vector<Int_t> /*IdPion*/,
1100  vector<TVector3> RefMomEl,
1101  vector<CbmMCTrack*> MCEl,
1102  vector<Int_t> IdEl,
1103  vector<TH1*> ppg,
1104  vector<TH1*> ppp) {
1105  if (MCPion.size() < 2 || MCEl.size() < 2) return;
1106 
1107  ECPGA_leptons_RefMom.clear();
1108  ECPGA_leptons_MC.clear();
1109  ECPGA_leptons_Id.clear();
1110 
1111  for (size_t i = 0; i < MCEl.size(); i++) {
1112  for (size_t j = i + 1; j < MCEl.size(); j++) {
1113  int pdg1 = MCEl.at(i)->GetPdgCode();
1114  int pdg2 = MCEl.at(j)->GetPdgCode();
1115  if (pdg1 + pdg2 != 0) continue;
1116  if (TMath::Abs(pdg1) != 11 || TMath::Abs(pdg2) != 11) continue;
1117 
1118  double OpeningAngle_g_refitted =
1120  RefMomEl.at(j));
1121  double InvMass_g_refitted = CbmKresFunctions::Invmass_2particles_RECO(
1122  RefMomEl.at(i), RefMomEl.at(j));
1123 
1124  if (OpeningAngle_g_refitted > OpeningAngleCut
1125  || InvMass_g_refitted > GammaInvMassCut)
1126  continue;
1127 
1128  frefmomenta.clear();
1129  frefmomenta.push_back(RefMomEl.at(i));
1130  frefmomenta.push_back(RefMomEl.at(j));
1131  fMCtracks.clear();
1132  fMCtracks.push_back(MCEl.at(i));
1133  fMCtracks.push_back(MCEl.at(j));
1134  fMCId.clear();
1135  fMCId.push_back(IdEl.at(i));
1136  fMCId.push_back(IdEl.at(j));
1137 
1138  ECPGA_leptons_RefMom.push_back(frefmomenta);
1139  ECPGA_leptons_MC.push_back(fMCtracks);
1140  ECPGA_leptons_Id.push_back(fMCId);
1141 
1142  // for event mixing ppg channel
1143  EMT_ppg_ee_Event.push_back(Event);
1145  }
1146  }
1147 
1148  ECPGA_pions_RefMom.clear();
1149  ECPGA_pions_MC.clear();
1150  for (size_t k = 0; k < MCPion.size(); k++) {
1151  if (MCPion.at(k)->GetPdgCode() == 211) {
1152  EMT_ppg_positive_pion_Event.push_back(Event);
1153  EMT_ppg_positive_pion_momenta.push_back(RefMomPion.at(k));
1154  } else {
1155  EMT_ppg_negative_pion_Event.push_back(Event);
1156  EMT_ppg_negative_pion_momenta.push_back(RefMomPion.at(k));
1157  }
1158  for (size_t l = k + 1; l < MCPion.size(); l++) {
1159  int pdg3 = MCPion.at(k)->GetPdgCode();
1160  int pdg4 = MCPion.at(l)->GetPdgCode();
1161  if (pdg3 + pdg4 != 0) continue;
1162  if (TMath::Abs(pdg3) != 211 || TMath::Abs(pdg4) != 211) continue;
1163 
1164  double Pions_angle_true =
1166  MCPion.at(l));
1167  double Pions_angle_reco =
1169  RefMomPion.at(k), RefMomPion.at(l));
1170 
1171  if (Pions_angle_reco > 20) continue;
1172 
1173  CbmMCTrack* mcTrack3 = MCPion.at(k);
1174  CbmMCTrack* mcTrack4 = MCPion.at(l);
1175 
1176  frefmomenta.clear();
1177  frefmomenta.push_back(RefMomPion.at(k));
1178  frefmomenta.push_back(RefMomPion.at(l));
1179 
1180  fMCtracks.clear();
1181  fMCtracks.push_back(MCPion.at(k));
1182  fMCtracks.push_back(MCPion.at(l));
1183 
1184  ECPGA_pions_RefMom.push_back(frefmomenta);
1185  ECPGA_pions_MC.push_back(fMCtracks);
1186 
1187  // for event mixing ppg channel
1188  EMT_ppg_pp_Event.push_back(Event);
1190 
1191  // if (pdg3 == 211){
1192  // EMT_ppg_positive_pion_Event.push_back(Event);
1193  // EMT_ppg_positive_pion_momenta.push_back(RefMomPion.at(k));
1194  // EMT_ppg_negative_pion_Event.push_back(Event);
1195  // EMT_ppg_negative_pion_momenta.push_back(RefMomPion.at(l));
1196  // }
1197  // if (pdg4 == 211){
1198  // EMT_ppg_negative_pion_Event.push_back(Event);
1199  // EMT_ppg_negative_pion_momenta.push_back(RefMomPion.at(k));
1200  // EMT_ppg_positive_pion_Event.push_back(Event);
1201  // EMT_ppg_positive_pion_momenta.push_back(RefMomPion.at(l));
1202  // }
1203 
1204  int correctPionspair = 0;
1205  if (mcTrack3->GetMotherId() == mcTrack4->GetMotherId()
1206  && mcTrack4->GetMotherId() != -1) {
1207  CbmMCTrack* EtaTrack =
1208  (CbmMCTrack*) fMcTracks->At(mcTrack4->GetMotherId());
1209  if (EtaTrack->GetPdgCode() == 221) correctPionspair = 1;
1210  }
1211 
1212  if (correctPionspair == 1) {
1213  OA_betweenPions_fromEta_mc->Fill(Pions_angle_true);
1214  OA_betweenPions_fromEta_reco->Fill(Pions_angle_reco);
1215  } else {
1216  OA_betweenPions_fromEta_reco_wrongcombinations->Fill(Pions_angle_reco);
1217  }
1218  }
1219  }
1220 
1221 
1222  if (ECPGA_leptons_MC.size() < 1)
1223  return; // min 1 gamma to form eta is required
1224  for (size_t gamma = 0; gamma < ECPGA_leptons_RefMom.size(); gamma++) {
1225  if (ECPGA_pions_MC.size() < 1)
1226  continue; // min 1 p+p- pair to form eta is required
1227  TVector3 e11 = ECPGA_leptons_RefMom[gamma][0];
1228  TVector3 e12 = ECPGA_leptons_RefMom[gamma][1];
1229 
1230  CbmMCTrack* mcTrack1 = ECPGA_leptons_MC[gamma][0];
1231  CbmMCTrack* mcTrack2 = ECPGA_leptons_MC[gamma][1];
1232 
1233  for (size_t pionpair = 0; pionpair < ECPGA_pions_RefMom.size();
1234  pionpair++) {
1235 
1236  CbmMCTrack* mcTrack3 = ECPGA_pions_MC[pionpair][0];
1237  CbmMCTrack* mcTrack4 = ECPGA_pions_MC[pionpair][1];
1238 
1239  TVector3 e21 = ECPGA_pions_RefMom[pionpair][0];
1240  TVector3 e22 = ECPGA_pions_RefMom[pionpair][1];
1241 
1242  Double_t InvMass_true = CbmKresFunctions::Invmass_4particles_MC(
1243  mcTrack1, mcTrack2, mcTrack3, mcTrack4);
1244  Double_t InvMass_reco =
1245  CbmKresFunctions::Invmass_2el_2pions_RECO(e11, e12, e21, e22);
1246  CbmLmvmKinematicParams params =
1248  e11, e12, e21, e22);
1249 
1250  ppg[6]->Fill(InvMass_true);
1251  ppg[7]->Fill(InvMass_reco);
1252 
1253  int CorrectEta = 0;
1254  if (mcTrack1->GetMotherId() == mcTrack2->GetMotherId()
1255  && mcTrack1->GetMotherId() != -1) {
1256  CbmMCTrack* GammaTrack =
1257  (CbmMCTrack*) fMcTracks->At(mcTrack1->GetMotherId());
1258  if (GammaTrack->GetPdgCode() == 22 && GammaTrack->GetMotherId() != -1
1259  && mcTrack3->GetMotherId() == mcTrack4->GetMotherId()
1260  && mcTrack3->GetMotherId() == GammaTrack->GetMotherId()) {
1261  CbmMCTrack* EtaTrack =
1262  (CbmMCTrack*) fMcTracks->At(GammaTrack->GetMotherId());
1263  if (EtaTrack->GetPdgCode() == 221) CorrectEta = 1;
1264  }
1265  }
1266 
1267  if (CorrectEta == 1) {
1268  InvMass_eta_ppg_reco_aftercuts->Fill(InvMass_reco);
1269  rap_vs_pt_eta_ppg_reco_aftercuts->Fill(params.fRapidity, params.fPt);
1270  } else {
1271  rap_vs_pt_NOTeta_ppg_reco_aftercuts->Fill(params.fRapidity, params.fPt);
1272  }
1273  }
1274  }
1275 
1276 
1278  if (ECPGA_leptons_MC.size() < 2)
1279  return; // min 2 gammas to form pion is required in EtaPosNegNeutralPionsAnalysis_plusBG
1280  for (size_t gamma1 = 0; gamma1 < ECPGA_leptons_RefMom.size(); gamma1++) {
1281  for (size_t gamma2 = gamma1 + 1; gamma2 < ECPGA_leptons_RefMom.size();
1282  gamma2++) {
1283  TVector3 e11 = ECPGA_leptons_RefMom[gamma1][0];
1284  TVector3 e12 = ECPGA_leptons_RefMom[gamma1][1];
1285  TVector3 e21 = ECPGA_leptons_RefMom[gamma2][0];
1286  TVector3 e22 = ECPGA_leptons_RefMom[gamma2][1];
1287 
1288  CbmMCTrack* mcTrack1 = ECPGA_leptons_MC[gamma1][0];
1289  CbmMCTrack* mcTrack2 = ECPGA_leptons_MC[gamma1][1];
1290  CbmMCTrack* mcTrack3 = ECPGA_leptons_MC[gamma2][0];
1291  CbmMCTrack* mcTrack4 = ECPGA_leptons_MC[gamma2][1];
1292 
1293  int mcId1 = ECPGA_leptons_Id[gamma1][0];
1294  int mcId2 = ECPGA_leptons_Id[gamma1][1];
1295  int mcId3 = ECPGA_leptons_Id[gamma2][0];
1296  int mcId4 = ECPGA_leptons_Id[gamma2][1];
1297 
1298  if (mcId1 == mcId2 || mcId1 == mcId3 || mcId1 == mcId4 || mcId2 == mcId3
1299  || mcId2 == mcId4 || mcId3 == mcId4)
1300  continue; // particle is not used twice
1301 
1302  // Double_t InvMass_pi_true = CbmKresFunctions::Invmass_4particles_MC(mcTrack1, mcTrack2, mcTrack3, mcTrack4);
1304  mcTrack1, mcTrack2, mcTrack3, mcTrack4);
1305  Double_t InvMass_pi_reco =
1306  CbmKresFunctions::Invmass_4particles_RECO(e11, e12, e21, e22);
1307 
1308  if (InvMass_pi_reco < 0.12 || InvMass_pi_reco > 0.15) continue;
1309 
1310  for (size_t k = 0; k < MCPion.size(); k++) {
1311  for (size_t l = k + 1; l < MCPion.size(); l++) {
1312  int pdg5 = MCPion.at(k)->GetPdgCode();
1313  int pdg6 = MCPion.at(l)->GetPdgCode();
1314 
1315  if (pdg5 + pdg6 != 0) continue;
1316  if (TMath::Abs(pdg5) != 211 || TMath::Abs(pdg6) != 211) continue;
1317 
1318  double InvMass_six_true = CbmKresFunctions::Invmass_6particles_MC(
1319  mcTrack1, mcTrack2, mcTrack3, mcTrack4, MCPion.at(k), MCPion.at(l));
1320  double InvMass_six_reco = CbmKresFunctions::Invmass_4el_2pions_RECO(
1321  e11, e12, e21, e22, RefMomPion.at(k), RefMomPion.at(l));
1322  double Pions_angle_reco =
1324  RefMomPion.at(k), RefMomPion.at(l));
1325 
1326  if (Pions_angle_reco > 20) continue;
1327 
1328  ppp[4]->Fill(InvMass_six_true);
1329  ppp[5]->Fill(InvMass_six_reco);
1330  }
1331  }
1332  }
1333  }
1334 }
1335 
1336 
1338  int nof = EMT_gg_Event.size();
1339  cout << "Mixing for eta->gg channel - nof entries " << nof << endl;
1340  for (Int_t a = 0; a < nof - 1; a++) {
1341  for (Int_t b = a + 1; b < nof; b++) {
1342  if (EMT_gg_Event[a] == EMT_gg_Event[b])
1343  continue; // to make sure that the photons are from two different events
1344  TVector3 e11 = EMT_gg_pair_momenta[a][0];
1345  TVector3 e12 = EMT_gg_pair_momenta[a][1];
1346  TVector3 e21 = EMT_gg_pair_momenta[b][0];
1347  TVector3 e22 = EMT_gg_pair_momenta[b][1];
1348 
1349  double openingAngleBetweenGammasReco =
1350  CalculateOpeningAngleBetweenGammas_Reco(e11, e12, e21, e22);
1351  if (openingAngleBetweenGammasReco < 10
1352  || openingAngleBetweenGammasReco > 40)
1353  continue;
1354 
1355  CbmLmvmKinematicParams params =
1357  e11, e12, e21, e22);
1358  EMT_eta_gg->Fill(params.fMinv);
1359  }
1360  }
1361 }
1362 
1364  int nof_leptons = EMT_ppg_ee_Event.size();
1365  int nof_pions = EMT_ppg_pp_Event.size();
1366  cout << "Mixing for eta->(pp)g channel - nof lepton pairs = " << nof_leptons
1367  << "; nof pion pairs = " << nof_pions << endl;
1368  for (Int_t a = 0; a < nof_leptons; a++) {
1369  for (Int_t b = 0; b < nof_pions; b++) {
1370  if (EMT_ppg_ee_Event[a] == EMT_ppg_pp_Event[b])
1371  continue; // to make sure that the photons are from two different events
1372  TVector3 e11 = EMT_ppg_ee_pair_momenta[a][0];
1373  TVector3 e12 = EMT_ppg_ee_pair_momenta[a][1];
1374  TVector3 e21 = EMT_ppg_pp_pair_momenta[b][0];
1375  TVector3 e22 = EMT_ppg_pp_pair_momenta[b][1];
1376 
1377  CbmLmvmKinematicParams params =
1379  e11, e12, e21, e22);
1380  EMT_eta_ppg->Fill(params.fMinv);
1381  }
1382  }
1383 }
1384 
1385 
1387  int nof_photons = EMT_ppg_ee_Event.size();
1388  int nof_positive = EMT_ppg_positive_pion_Event.size();
1389  int nof_negative = EMT_ppg_negative_pion_Event.size();
1390  cout << "Mixing 3 bodies for eta-> p p g channel - nof photons = "
1391  << nof_photons << "; nof +pions = " << nof_positive
1392  << "; nof -pions = " << nof_negative << endl;
1393 
1394  for (Int_t p = 0; p < nof_positive; p++) {
1395  for (Int_t m = 0; m < nof_negative; m++) {
1397  continue; // to make sure that the photons are from two different events
1398  TVector3 e21 = EMT_ppg_positive_pion_momenta[p];
1399  TVector3 e22 = EMT_ppg_negative_pion_momenta[m];
1400 
1401  double Pions_angle_reco =
1403  if (Pions_angle_reco > 20) continue;
1404 
1405  for (Int_t a = 0; a < nof_photons; a++) {
1408  continue; // to make sure that the photons are from two different events
1409  TVector3 e11 = EMT_ppg_ee_pair_momenta[a][0];
1410  TVector3 e12 = EMT_ppg_ee_pair_momenta[a][1];
1411 
1412  CbmLmvmKinematicParams params =
1414  e11, e12, e21, e22);
1415  EMT_eta_three_body->Fill(params.fMinv);
1416  }
1417  }
1418  }
1419 }
1420 
1421 
1423  gDirectory->mkdir("EtaMCAnalysis");
1424  gDirectory->cd("EtaMCAnalysis");
1425 
1426  gDirectory->mkdir("eta_gg");
1427  gDirectory->cd("eta_gg");
1428  for (UInt_t i = 0; i < fHistoList_eta_gg.size(); i++) {
1429  fHistoList_eta_gg[i]->Write();
1430  }
1431  gDirectory->cd("..");
1432 
1433  gDirectory->mkdir("eta_ppg");
1434  gDirectory->cd("eta_ppg");
1435  for (UInt_t i = 0; i < fHistoList_eta_ppg.size(); i++) {
1436  fHistoList_eta_ppg[i]->Write();
1437  }
1438  gDirectory->cd("..");
1439 
1440  gDirectory->mkdir("eta_ppp");
1441  gDirectory->cd("eta_ppp");
1442  for (UInt_t i = 0; i < fHistoList_eta_ppp.size(); i++) {
1443  fHistoList_eta_ppp[i]->Write();
1444  }
1445  gDirectory->cd("..");
1446 
1447 
1448  gDirectory->cd("..");
1449 }
1450 
1454  new TH1D("InvMass_eta_gg_mc",
1455  "InvMass_eta_gg_mc; invariant mass in GeV/c^{2};#",
1456  50,
1457  0.3,
1458  0.8);
1461  new TH1D("InvMass_eta_gg_reffited",
1462  "InvMass_eta_gg_reffited; invariant mass in GeV/c^{2};#",
1463  50,
1464  0.3,
1465  0.8);
1468  new TH1D("InvMassPhoton_eta_gg_mc",
1469  "InvMassPhoton_eta_gg_mc; invariant mass in GeV/c^{2};#",
1470  60,
1471  -0.01,
1472  0.05);
1475  new TH1D("InvMassPhoton_eta_gg_reffited",
1476  "InvMassPhoton_eta_gg_reffited; invariant mass in GeV/c^{2};#",
1477  60,
1478  -0.01,
1479  0.05);
1481  OpeningAnglePhoton_eta_gg_mc = new TH1D(
1482  "OpeningAnglePhoton_eta_gg_mc",
1483  "OpeningAnglePhoton_eta_gg_mc (between e+e- from #gamma); angle [deg];#",
1484  100,
1485  -0.1,
1486  9.9);
1489  new TH1D("OpeningAnglePhoton_eta_gg_reffited",
1490  "OpeningAnglePhoton_eta_gg_reffited (between e+e- from #gamma); "
1491  "angle [deg];#",
1492  100,
1493  -0.1,
1494  9.9);
1497  new TH1D("OpeningAngle_eta_gg_between_gg_mc",
1498  "OpeningAngle_eta_gg_between_gg_mc (between #gamma#gamma from "
1499  "#eta); angle [deg];#",
1500  900,
1501  -0.1,
1502  89.9);
1505  new TH1D("OpeningAngle_eta_gg_between_gg_reffited",
1506  "OpeningAngle_eta_gg_between_gg_reffited (between #gamma#gamma "
1507  "from #eta); angle [deg];#",
1508  900,
1509  -0.1,
1510  89.9);
1513  new TH1D("InvMass_eta_gg_allcombinations_mc",
1514  "InvMass_eta_gg_allcombinations_mc; invariant mass in GeV/c^{2};#",
1515  200,
1516  0.0,
1517  2.0);
1520  "InvMass_eta_gg_allcombinations_reffited",
1521  "InvMass_eta_gg_allcombinations_reffited; invariant mass in GeV/c^{2};#",
1522  200,
1523  0.0,
1524  2.0);
1526  EMT_eta_gg = new TH1D(
1527  "EMT_eta_gg", "EMT_eta_gg; invariant mass in GeV/c^{2};#", 200, 0.0, 2.0);
1528  fHistoList_eta_gg.push_back(EMT_eta_gg);
1530  new TH1D("InvMass_eta_gg_reco_aftercuts",
1531  "InvMass_eta_gg_reco_aftercuts; invariant mass in GeV/c^{2};#",
1532  50,
1533  0.3,
1534  0.8);
1537  new TH2D("rap_vs_pt_eta_gg_reco_aftercuts",
1538  "rap_vs_pt_eta_gg_reco_aftercuts; rapidity y; p_{t} in GeV/c ",
1539  10,
1540  0.,
1541  4.,
1542  5,
1543  0.,
1544  2.);
1547  new TH2D("rap_vs_pt_NOTeta_gg_reco_aftercuts",
1548  "rap_vs_pt_NOTeta_gg_reco_aftercuts; rapidity y; p_{t} in GeV/c ",
1549  10,
1550  0.,
1551  4.,
1552  5,
1553  0.,
1554  2.);
1556 
1557 
1560  new TH1D("InvMass_eta_ppg_mc",
1561  "InvMass_eta_ppg_mc; invariant mass in GeV/c^{2};#",
1562  50,
1563  0.3,
1564  0.8);
1567  new TH1D("InvMass_eta_ppg_reffited",
1568  "InvMass_eta_ppg_reffited; invariant mass in GeV/c^{2};#",
1569  50,
1570  0.3,
1571  0.8);
1574  new TH1D("InvMassPhoton_eta_ppg_mc",
1575  "InvMassPhoton_eta_ppg_mc; invariant mass in GeV/c^{2};#",
1576  60,
1577  -0.01,
1578  0.05);
1581  new TH1D("InvMassPhoton_eta_ppg_reffited",
1582  "InvMassPhoton_eta_ppg_reffited; invariant mass in GeV/c^{2};#",
1583  60,
1584  -0.01,
1585  0.05);
1587  OpeningAnglePhoton_eta_ppg_mc = new TH1D(
1588  "OpeningAnglePhoton_eta_ppg_mc",
1589  "OpeningAnglePhoton_eta_ppg_mc (between e+e- from #gamma); angle [deg];#",
1590  100,
1591  -0.1,
1592  9.9);
1595  new TH1D("OpeningAnglePhoton_eta_ppg_reffited",
1596  "OpeningAnglePhoton_eta_ppg_reffited (between e+e- from #gamma); "
1597  "angle [deg];#",
1598  100,
1599  -0.1,
1600  9.9);
1603  "InvMass_eta_ppg_allcombinations_mc",
1604  "InvMass_eta_ppg_allcombinations_mc; invariant mass in GeV/c^{2};#",
1605  200,
1606  0.0,
1607  2.0);
1610  "InvMass_eta_ppg_allcombinations_reffited",
1611  "InvMass_eta_ppg_allcombinations_reffited; invariant mass in GeV/c^{2};#",
1612  200,
1613  0.0,
1614  2.0);
1616  Pion_P_fromEta_reco = new TH1D("Pion_P_fromEta_reco",
1617  "Pion_P_fromEta_reco; pions P in GeV/c;#",
1618  500,
1619  0.0,
1620  5.0);
1622  Pion_P_elsewhere_reco = new TH1D("Pion_P_elsewhere_reco",
1623  "Pion_P_elsewhere_reco; pions P in GeV/c;#",
1624  500,
1625  0.0,
1626  5.0);
1629  new TH1D("Pion_Pt_fromEta_reco",
1630  "Pion_Pt_fromEta_reco; pions P_{t} in GeV/c;#",
1631  500,
1632  0.0,
1633  5.0);
1636  new TH1D("Pion_Pt_elsewhere_reco",
1637  "Pion_Pt_elsewhere_reco; pions P_{t} in GeV/c;#",
1638  500,
1639  0.0,
1640  5.0);
1643  new TH1D("OA_betweenPions_fromEta_mc",
1644  "OA_betweenPions_fromEta_mc (between #p^{+}#p^{-} from #eta); "
1645  "angle [deg];#",
1646  900,
1647  -0.1,
1648  89.9);
1651  new TH1D("OA_betweenPions_fromEta_reco",
1652  "OA_betweenPions_fromEta_reco (between #p^{+}#p^{-} from #eta); "
1653  "angle [deg];#",
1654  900,
1655  -0.1,
1656  89.9);
1659  new TH1D("OA_betweenPions_fromEta_reco_wrongcombinations",
1660  "OA_betweenPions_fromEta_reco_wrongcombinations (between "
1661  "#p^{+}#p^{-} from #eta); angle [deg];#",
1662  900,
1663  -0.1,
1664  89.9);
1666  EMT_eta_ppg = new TH1D(
1667  "EMT_eta_ppg", "EMT_eta_ppg; invariant mass in GeV/c^{2};#", 200, 0.0, 2.0);
1668  fHistoList_eta_ppg.push_back(EMT_eta_ppg);
1670  new TH1D("EMT_eta_three_body",
1671  "EMT_eta_three_body; invariant mass in GeV/c^{2};#",
1672  200,
1673  0.0,
1674  2.0);
1677  new TH1D("InvMass_eta_ppg_reco_aftercuts",
1678  "InvMass_eta_ppg_reco_aftercuts; invariant mass in GeV/c^{2};#",
1679  50,
1680  0.3,
1681  0.8);
1684  new TH2D("rap_vs_pt_eta_ppg_reco_aftercuts",
1685  "rap_vs_pt_eta_ppg_reco_aftercuts; rapidity y; p_{t} in GeV/c ",
1686  10,
1687  0.,
1688  4.,
1689  5,
1690  0.,
1691  2.);
1694  new TH2D("rap_vs_pt_NOTeta_ppg_reco_aftercuts",
1695  "rap_vs_pt_NOTeta_ppg_reco_aftercuts; rapidity y; p_{t} in GeV/c ",
1696  10,
1697  0.,
1698  4.,
1699  5,
1700  0.,
1701  2.);
1703 
1704 
1707  new TH1D("InvMass_eta_ppp_mc",
1708  "InvMass_eta_ppp_mc; invariant mass in GeV/c^{2};#",
1709  50,
1710  0.3,
1711  0.8);
1714  new TH1D("InvMass_eta_ppp_reffited",
1715  "InvMass_eta_ppp_reffited; invariant mass in GeV/c^{2};#",
1716  50,
1717  0.3,
1718  0.8);
1721  new TH1D("InvMass_eta_Npion_mc",
1722  "InvMass_eta_Npion_mc; invariant mass in GeV/c^{2};#",
1723  30,
1724  0.0,
1725  0.3);
1728  new TH1D("InvMass_eta_Npion_reffited",
1729  "InvMass_eta_Npion_reffited; invariant mass in GeV/c^{2};#",
1730  30,
1731  0.,
1732  0.3);
1735  "InvMass_eta_ppp_allcombinations_mc",
1736  "InvMass_eta_ppp_allcombinations_mc; invariant mass in GeV/c^{2};#",
1737  200,
1738  0.0,
1739  2.0);
1742  "InvMass_eta_ppp_allcombinations_reffited",
1743  "InvMass_eta_ppp_allcombinations_reffited; invariant mass in GeV/c^{2};#",
1744  200,
1745  0.0,
1746  2.0);
1748 }
CbmKresEtaMCAnalysis::All_El_refmomentum
vector< TVector3 > All_El_refmomentum
Definition: CbmKresEtaMCAnalysis.h:102
CbmKresEtaMCAnalysis::fHistoList_eta_gg
vector< TH1 * > fHistoList_eta_gg
Definition: CbmKresEtaMCAnalysis.h:127
CbmMCTrack::GetMotherId
Int_t GetMotherId() const
Definition: CbmMCTrack.h:71
CbmMatch::GetMatchedLink
const CbmLink & GetMatchedLink() const
Definition: CbmMatch.h:37
CbmKresEtaMCAnalysis::InvMass_eta_gg_mc
TH1D * InvMass_eta_gg_mc
Definition: CbmKresEtaMCAnalysis.h:128
CbmKresEtaMCAnalysis::El_Photon_Eta_refmomentum
vector< TVector3 > El_Photon_Eta_refmomentum
Definition: CbmKresEtaMCAnalysis.h:90
CbmKresEtaMCAnalysis::EtaDoubleGammaAnalysis
void EtaDoubleGammaAnalysis(vector< TVector3 > RefMom, vector< CbmMCTrack * > MC, vector< Int_t > Id, vector< TH1 * > gg)
Definition: CbmKresEtaMCAnalysis.cxx:419
CbmMCTrack::GetStartX
Double_t GetStartX() const
Definition: CbmMCTrack.h:75
CbmKresEtaMCAnalysis::InvMassPhoton_eta_ppg_reffited
TH1D * InvMassPhoton_eta_ppg_reffited
Definition: CbmKresEtaMCAnalysis.h:148
CbmKresFunctions::Invmass_6particles_MC
static double Invmass_6particles_MC(const CbmMCTrack *mctrack1, const CbmMCTrack *mctrack2, const CbmMCTrack *mctrack3, const CbmMCTrack *mctrack4, const CbmMCTrack *mctrack5, const CbmMCTrack *mctrack6)
Definition: CbmKresFunctions.h:338
CbmKresEtaMCAnalysis::EMT_ppg_positive_pion_Event
std::vector< int > EMT_ppg_positive_pion_Event
Definition: CbmKresEtaMCAnalysis.h:187
CbmKresFunctions::CalculateOpeningAngleBetweenPions_Reco
static Double_t CalculateOpeningAngleBetweenPions_Reco(TVector3 electron1, TVector3 electron2)
calculate opening angle between two pions using reconstructed momenta
Definition: CbmKresFunctions.h:401
CbmKresFunctions::Invmass_2el_2pions_RECO
static double Invmass_2el_2pions_RECO(const TVector3 part1El, const TVector3 part2El, const TVector3 part3Pion, const TVector3 part4Pion)
Definition: CbmKresFunctions.h:314
CbmMatch::GetNofLinks
Int_t GetNofLinks() const
Definition: CbmMatch.h:38
CbmKresEtaMCAnalysis::EDGA_MC
std::vector< std::vector< CbmMCTrack * > > EDGA_MC
Definition: CbmKresEtaMCAnalysis.h:116
CbmKresEtaMCAnalysis::EMT_ppg_positive_pion_momenta
std::vector< TVector3 > EMT_ppg_positive_pion_momenta
Definition: CbmKresEtaMCAnalysis.h:188
CbmKresEtaMCAnalysis::rap_vs_pt_eta_ppg_reco_aftercuts
TH2D * rap_vs_pt_eta_ppg_reco_aftercuts
Definition: CbmKresEtaMCAnalysis.h:163
CbmKresEtaMCAnalysis::ECPGA_leptons_Id
std::vector< std::vector< int > > ECPGA_leptons_Id
Definition: CbmKresEtaMCAnalysis.h:121
CbmKresEtaMCAnalysis::InvMass_eta_ppg_allcombinations_mc
TH1D * InvMass_eta_ppg_allcombinations_mc
Definition: CbmKresEtaMCAnalysis.h:151
CbmKresEtaMCAnalysis::OpeningAngle_eta_gg_between_gg_mc
TH1D * OpeningAngle_eta_gg_between_gg_mc
Definition: CbmKresEtaMCAnalysis.h:134
CbmKresEtaMCAnalysis::OpeningAnglePhoton_eta_gg_reffited
TH1D * OpeningAnglePhoton_eta_gg_reffited
Definition: CbmKresEtaMCAnalysis.h:133
CbmKresEtaMCAnalysis::CalculateOpeningAngleBetweenGammas_MC
Double_t CalculateOpeningAngleBetweenGammas_MC(CbmMCTrack *mctrack1, CbmMCTrack *mctrack2, CbmMCTrack *mctrack3, CbmMCTrack *mctrack4)
Definition: CbmKresEtaMCAnalysis.cxx:354
CbmKresEtaMCAnalysis::Pion_P_elsewhere_reco
TH1D * Pion_P_elsewhere_reco
Definition: CbmKresEtaMCAnalysis.h:154
CbmKresEtaMCAnalysis::El_Photon_Eta_MCtrack
vector< CbmMCTrack * > El_Photon_Eta_MCtrack
Definition: CbmKresEtaMCAnalysis.h:91
CbmKresEtaMCAnalysis::El_Photon_Pion_Eta_refmomentum
vector< TVector3 > El_Photon_Pion_Eta_refmomentum
Definition: CbmKresEtaMCAnalysis.h:94
CbmKresEtaMCAnalysis::Pion_Eta_Id
vector< int > Pion_Eta_Id
Definition: CbmKresEtaMCAnalysis.h:100
CbmKresEtaMCAnalysis::fMcTracks
TClonesArray * fMcTracks
Definition: CbmKresEtaMCAnalysis.h:85
CbmMCTrack::GetPdgCode
Int_t GetPdgCode() const
Definition: CbmMCTrack.h:70
i
int i
Definition: L1/vectors/P4_F32vec4.h:25
CbmKresEtaMCAnalysis::fStsTracks
TClonesArray * fStsTracks
Definition: CbmKresEtaMCAnalysis.h:87
CbmKresEtaMCAnalysis::fMCId
vector< int > fMCId
Definition: CbmKresEtaMCAnalysis.h:113
CbmKresEtaMCAnalysis::All_Pion_refmomentum
vector< TVector3 > All_Pion_refmomentum
Definition: CbmKresEtaMCAnalysis.h:106
CbmKresFunctions::Invmass_4el_2pions_RECO
static double Invmass_4el_2pions_RECO(const TVector3 part1El, const TVector3 part2El, const TVector3 part3El, const TVector3 part4El, const TVector3 part5Pion, const TVector3 part6Pion)
Definition: CbmKresFunctions.h:369
CbmGlobalTrack.h
CbmKresEtaMCAnalysis::rap_vs_pt_NOTeta_ppg_reco_aftercuts
TH2D * rap_vs_pt_NOTeta_ppg_reco_aftercuts
Definition: CbmKresEtaMCAnalysis.h:164
CbmKresEtaMCAnalysis::InvMass_eta_ppg_reco_aftercuts
TH1D * InvMass_eta_ppg_reco_aftercuts
Definition: CbmKresEtaMCAnalysis.h:162
CbmKresEtaMCAnalysis::InvMass_eta_ppp_reffited
TH1D * InvMass_eta_ppp_reffited
Definition: CbmKresEtaMCAnalysis.h:169
CbmKresEtaMCAnalysis::All_El_Id
vector< int > All_El_Id
Definition: CbmKresEtaMCAnalysis.h:104
CbmKresEtaMCAnalysis::InvMass_eta_gg_reco_aftercuts
TH1D * InvMass_eta_gg_reco_aftercuts
Definition: CbmKresEtaMCAnalysis.h:139
CbmKresEtaMCAnalysis::EMT_ppg_negative_pion_momenta
std::vector< TVector3 > EMT_ppg_negative_pion_momenta
Definition: CbmKresEtaMCAnalysis.h:190
CbmKresEtaMCAnalysis::InvMass_eta_ppp_allcombinations_reffited
TH1D * InvMass_eta_ppp_allcombinations_reffited
Definition: CbmKresEtaMCAnalysis.h:173
CbmKresEtaMCAnalysis::Mixing_gg
void Mixing_gg()
Definition: CbmKresEtaMCAnalysis.cxx:1337
CbmKresEtaMCAnalysis::InvMass_eta_Npion_reffited
TH1D * InvMass_eta_Npion_reffited
Definition: CbmKresEtaMCAnalysis.h:171
CbmKresEtaMCAnalysis::Pion_Eta_refmomentum
vector< TVector3 > Pion_Eta_refmomentum
Definition: CbmKresEtaMCAnalysis.h:98
CbmLmvmKinematicParams::fMinv
Double_t fMinv
Definition: CbmLmvmKinematicParams.h:22
CbmKresEtaMCAnalysis::Mixing_three_body
void Mixing_three_body()
Definition: CbmKresEtaMCAnalysis.cxx:1386
CbmKresEtaMCAnalysis::InvMass_eta_ppg_reffited
TH1D * InvMass_eta_ppg_reffited
Definition: CbmKresEtaMCAnalysis.h:146
CbmKresEtaMCAnalysis::EtaChargedPionsGammaAnalysis_plusBG
void EtaChargedPionsGammaAnalysis_plusBG(double OpeningAngleCut, double GammaInvMassCut, int Event, vector< TVector3 > RefMomPion, vector< CbmMCTrack * > MCPion, vector< Int_t > IdPion, vector< TVector3 > RefMomEl, vector< CbmMCTrack * > MCEl, vector< Int_t > IdEl, vector< TH1 * > ppg, vector< TH1 * > ppp)
Definition: CbmKresEtaMCAnalysis.cxx:1093
CbmKresEtaMCAnalysis::rap_vs_pt_eta_gg_reco_aftercuts
TH2D * rap_vs_pt_eta_gg_reco_aftercuts
Definition: CbmKresEtaMCAnalysis.h:140
CbmKresEtaMCAnalysis::InvMass_eta_ppg_allcombinations_reffited
TH1D * InvMass_eta_ppg_allcombinations_reffited
Definition: CbmKresEtaMCAnalysis.h:152
CbmKresEtaMCAnalysis::Pion_P_fromEta_reco
TH1D * Pion_P_fromEta_reco
Definition: CbmKresEtaMCAnalysis.h:153
CbmKresEtaMCAnalysis::Exec
void Exec(int Event, double OpeningAngleCut, double GammaInvMassCut)
Definition: CbmKresEtaMCAnalysis.cxx:152
CbmKresEtaMCAnalysis::All_Pion_Id
vector< int > All_Pion_Id
Definition: CbmKresEtaMCAnalysis.h:108
CbmKresEtaMCAnalysis::EMT_eta_gg
TH1D * EMT_eta_gg
Definition: CbmKresEtaMCAnalysis.h:138
CbmMCTrack::GetStartZ
Double_t GetStartZ() const
Definition: CbmMCTrack.h:77
CbmKresEtaMCAnalysis::InvMass_eta_gg_allcombinations_mc
TH1D * InvMass_eta_gg_allcombinations_mc
Definition: CbmKresEtaMCAnalysis.h:136
CbmKresEtaMCAnalysis::EMT_gg_Event
std::vector< int > EMT_gg_Event
Definition: CbmKresEtaMCAnalysis.h:177
CbmKresEtaMCAnalysis::OpeningAnglePhoton_eta_gg_mc
TH1D * OpeningAnglePhoton_eta_gg_mc
Definition: CbmKresEtaMCAnalysis.h:132
CbmStsTrack.h
Data class for STS tracks.
CbmGlobalTrack::GetStsTrackIndex
Int_t GetStsTrackIndex() const
Definition: CbmGlobalTrack.h:38
CbmKresEtaMCAnalysis::Init
void Init()
Definition: CbmKresEtaMCAnalysis.cxx:122
CbmKresEtaMCAnalysis::InvMassPhoton_eta_ppg_mc
TH1D * InvMassPhoton_eta_ppg_mc
Definition: CbmKresEtaMCAnalysis.h:147
CbmKresEtaMCAnalysis::InvMass_eta_gg_allcombinations_reffited
TH1D * InvMass_eta_gg_allcombinations_reffited
Definition: CbmKresEtaMCAnalysis.h:137
CbmKresEtaMCAnalysis::OpeningAnglePhoton_eta_ppg_reffited
TH1D * OpeningAnglePhoton_eta_ppg_reffited
Definition: CbmKresEtaMCAnalysis.h:150
CbmKresEtaMCAnalysis::OA_betweenPions_fromEta_mc
TH1D * OA_betweenPions_fromEta_mc
Definition: CbmKresEtaMCAnalysis.h:157
CbmKresEtaMCAnalysis::EDGA_RefMom
std::vector< std::vector< TVector3 > > EDGA_RefMom
Definition: CbmKresEtaMCAnalysis.h:115
CbmKresEtaMCAnalysis::OA_betweenPions_fromEta_reco
TH1D * OA_betweenPions_fromEta_reco
Definition: CbmKresEtaMCAnalysis.h:158
CbmKresEtaMCAnalysis::EMT_gg_pair_momenta
std::vector< std::vector< TVector3 > > EMT_gg_pair_momenta
Definition: CbmKresEtaMCAnalysis.h:178
CbmKresEtaMCAnalysis::fGlobalTracks
TClonesArray * fGlobalTracks
Definition: CbmKresEtaMCAnalysis.h:86
CbmKresFunctions::CalculateOpeningAngleBetweenPions_MC
static Double_t CalculateOpeningAngleBetweenPions_MC(CbmMCTrack *mctrack1, CbmMCTrack *mctrack2)
calculate opening angle between two pions using MCtrue momenta
Definition: CbmKresFunctions.h:417
CbmKresEtaMCAnalysis::rap_vs_pt_NOTeta_gg_reco_aftercuts
TH2D * rap_vs_pt_NOTeta_gg_reco_aftercuts
Definition: CbmKresEtaMCAnalysis.h:141
CbmKresEtaMCAnalysis::frefmomenta
vector< TVector3 > frefmomenta
Definition: CbmKresEtaMCAnalysis.h:111
CbmKresEtaMCAnalysis::El_Photon_Eta_Id
vector< int > El_Photon_Eta_Id
Definition: CbmKresEtaMCAnalysis.h:92
CbmTrackMatchNew.h
CbmKresEtaMCAnalysis::EtaDoubleGammaAnalysis_plusBG
void EtaDoubleGammaAnalysis_plusBG(double OpeningAngleCut, double GammaInvMassCut, int Event, vector< TVector3 > RefMom, vector< CbmMCTrack * > MC, vector< Int_t > Id, vector< TH1 * > gg)
Definition: CbmKresEtaMCAnalysis.cxx:965
CbmKresEtaMCAnalysis::InvMass_eta_ppp_mc
TH1D * InvMass_eta_ppp_mc
Definition: CbmKresEtaMCAnalysis.h:168
CbmKresEtaMCAnalysis::ECPGA_pions_RefMom
std::vector< std::vector< TVector3 > > ECPGA_pions_RefMom
Definition: CbmKresEtaMCAnalysis.h:123
CbmKresEtaMCAnalysis::All_Pion_MCtrack
vector< CbmMCTrack * > All_Pion_MCtrack
Definition: CbmKresEtaMCAnalysis.h:107
CbmKresFunctions::CalculateKinematicParams_4particles
static CbmLmvmKinematicParams CalculateKinematicParams_4particles(const TVector3 part1, const TVector3 part2, const TVector3 part3, const TVector3 part4)
Definition: CbmKresFunctions.h:212
CbmKresEtaMCAnalysis::EtaPosNegNeutralPionsAnalysis
void EtaPosNegNeutralPionsAnalysis(vector< TVector3 > RefMomNeutral, vector< CbmMCTrack * > MCNeutral, vector< Int_t > IdNeutral, vector< TVector3 > RefMomPion, vector< CbmMCTrack * > MCPion, vector< Int_t > IdPion, vector< TH1 * > ppp)
Definition: CbmKresEtaMCAnalysis.cxx:778
CbmKresEtaMCAnalysis::EMT_ppg_pp_Event
std::vector< int > EMT_ppg_pp_Event
Definition: CbmKresEtaMCAnalysis.h:183
CbmKresEtaMCAnalysis::ECPGA_leptons_MC
std::vector< std::vector< CbmMCTrack * > > ECPGA_leptons_MC
Definition: CbmKresEtaMCAnalysis.h:120
CbmKresEtaMCAnalysis::fMCtracks
vector< CbmMCTrack * > fMCtracks
Definition: CbmKresEtaMCAnalysis.h:112
CbmLmvmKinematicParams::fRapidity
Double_t fRapidity
Definition: CbmLmvmKinematicParams.h:21
CbmKresEtaMCAnalysis::fHistoList_eta_ppp
vector< TH1 * > fHistoList_eta_ppp
Definition: CbmKresEtaMCAnalysis.h:167
CbmKresEtaMCAnalysis::EMT_ppg_ee_Event
std::vector< int > EMT_ppg_ee_Event
Definition: CbmKresEtaMCAnalysis.h:181
CbmKresEtaMCAnalysis::Pion_Eta_MCtrack
vector< CbmMCTrack * > Pion_Eta_MCtrack
Definition: CbmKresEtaMCAnalysis.h:99
xMath::Pi
double Pi()
Definition: xMath.h:5
CbmKresEtaMCAnalysis::fHistoList_eta_ppg
vector< TH1 * > fHistoList_eta_ppg
Definition: CbmKresEtaMCAnalysis.h:144
CbmKresEtaMCAnalysis::Pion_Pt_elsewhere_reco
TH1D * Pion_Pt_elsewhere_reco
Definition: CbmKresEtaMCAnalysis.h:156
CbmKresEtaMCAnalysis::InvMass_eta_ppp_allcombinations_mc
TH1D * InvMass_eta_ppp_allcombinations_mc
Definition: CbmKresEtaMCAnalysis.h:172
CbmKresEtaMCAnalysis::OpeningAngle_eta_gg_between_gg_reffited
TH1D * OpeningAngle_eta_gg_between_gg_reffited
Definition: CbmKresEtaMCAnalysis.h:135
CbmKresEtaMCAnalysis::EDGA_Id
std::vector< std::vector< int > > EDGA_Id
Definition: CbmKresEtaMCAnalysis.h:117
CbmKresEtaMCAnalysis::All_El_MCtrack
vector< CbmMCTrack * > All_El_MCtrack
Definition: CbmKresEtaMCAnalysis.h:103
CbmKresFunctions::Invmass_2particles_RECO
static double Invmass_2particles_RECO(const TVector3 part1, const TVector3 part2)
Definition: CbmKresFunctions.h:107
CbmKresFunctions.h
CbmKresEtaMCAnalysis.h
CbmGlobalTrack
Definition: CbmGlobalTrack.h:26
CbmKresEtaMCAnalysis::ECPGA_leptons_RefMom
std::vector< std::vector< TVector3 > > ECPGA_leptons_RefMom
Definition: CbmKresEtaMCAnalysis.h:119
CbmKresFunctions::CalculateOpeningAngle_MC
static Double_t CalculateOpeningAngle_MC(CbmMCTrack *mctrack1, CbmMCTrack *mctrack2)
Definition: CbmKresFunctions.h:267
CbmMCTrack::GetStartY
Double_t GetStartY() const
Definition: CbmMCTrack.h:76
counter
int counter
Definition: CbmMvdSensorDigiToHitTask.cxx:72
CbmMCTrack.h
CbmKresEtaMCAnalysis::EMT_eta_three_body
TH1D * EMT_eta_three_body
Definition: CbmKresEtaMCAnalysis.h:161
CbmKresEtaMCAnalysis::EMT_ppg_pp_pair_momenta
std::vector< std::vector< TVector3 > > EMT_ppg_pp_pair_momenta
Definition: CbmKresEtaMCAnalysis.h:184
CbmKresFunctions::Invmass_4particles_MC
static double Invmass_4particles_MC(const CbmMCTrack *mctrack1, const CbmMCTrack *mctrack2, const CbmMCTrack *mctrack3, const CbmMCTrack *mctrack4)
Definition: CbmKresFunctions.h:122
CbmKresEtaMCAnalysis::EMT_ppg_ee_pair_momenta
std::vector< std::vector< TVector3 > > EMT_ppg_ee_pair_momenta
Definition: CbmKresEtaMCAnalysis.h:182
CbmKresFunctions::FitToVertexAndGetChi
static TVector3 FitToVertexAndGetChi(CbmStsTrack *stsTrack, double x, double y, double z, double &chi)
Definition: CbmKresFunctions.h:67
CbmMCTrack
Definition: CbmMCTrack.h:34
m
__m128 m
Definition: L1/vectors/P4_F32vec4.h:26
CbmKresEtaMCAnalysis::InvMassPhoton_eta_gg_mc
TH1D * InvMassPhoton_eta_gg_mc
Definition: CbmKresEtaMCAnalysis.h:130
CbmKresEtaMCAnalysis::Mixing_ppg
void Mixing_ppg()
Definition: CbmKresEtaMCAnalysis.cxx:1363
CbmKresEtaMCAnalysis::Finish
void Finish()
Definition: CbmKresEtaMCAnalysis.cxx:1422
CbmKresEtaMCAnalysis::EtaChargedPionsGammaAnalysis
void EtaChargedPionsGammaAnalysis(vector< TVector3 > RefMomPion, vector< CbmMCTrack * > MCPion, vector< Int_t > IdPion, vector< TVector3 > RefMomEl, vector< CbmMCTrack * > MCEl, vector< Int_t > IdEl, vector< TH1 * > ppg)
Definition: CbmKresEtaMCAnalysis.cxx:660
CbmKresEtaMCAnalysis::CbmKresEtaMCAnalysis
CbmKresEtaMCAnalysis()
Definition: CbmKresEtaMCAnalysis.cxx:35
CbmKresEtaMCAnalysis::EMT_eta_ppg
TH1D * EMT_eta_ppg
Definition: CbmKresEtaMCAnalysis.h:160
CbmKresEtaMCAnalysis::InvMass_eta_ppg_mc
TH1D * InvMass_eta_ppg_mc
Definition: CbmKresEtaMCAnalysis.h:145
CbmTrackMatchNew
Definition: CbmTrackMatchNew.h:19
CbmMCTrack::Get4Momentum
void Get4Momentum(TLorentzVector &momentum) const
Definition: CbmMCTrack.h:177
CbmKresEtaMCAnalysis::fStsTrackMatches
TClonesArray * fStsTrackMatches
Definition: CbmKresEtaMCAnalysis.h:88
CbmKresEtaMCAnalysis::InitHistograms
void InitHistograms()
Definition: CbmKresEtaMCAnalysis.cxx:1451
CbmKresEtaMCAnalysis::InvMass_eta_Npion_mc
TH1D * InvMass_eta_Npion_mc
Definition: CbmKresEtaMCAnalysis.h:170
CbmStsTrack
Definition: CbmStsTrack.h:37
CbmKresFunctions::CalculateKinematicParams_2el_2pions
static CbmLmvmKinematicParams CalculateKinematicParams_2el_2pions(const TVector3 part1, const TVector3 part2, const TVector3 part3, const TVector3 part4)
Definition: CbmKresFunctions.h:438
CbmKresEtaMCAnalysis::OA_betweenPions_fromEta_reco_wrongcombinations
TH1D * OA_betweenPions_fromEta_reco_wrongcombinations
Definition: CbmKresEtaMCAnalysis.h:159
CbmKresFunctions::CalculateOpeningAngle_Reco
static Double_t CalculateOpeningAngle_Reco(TVector3 electron1, TVector3 electron2)
Definition: CbmKresFunctions.h:251
CbmKresEtaMCAnalysis::InvMass_eta_gg_reffited
TH1D * InvMass_eta_gg_reffited
Definition: CbmKresEtaMCAnalysis.h:129
CbmKresEtaMCAnalysis::EMT_ppg_negative_pion_Event
std::vector< int > EMT_ppg_negative_pion_Event
Definition: CbmKresEtaMCAnalysis.h:189
CbmKresEtaMCAnalysis::El_Photon_Pion_Eta_MCtrack
vector< CbmMCTrack * > El_Photon_Pion_Eta_MCtrack
Definition: CbmKresEtaMCAnalysis.h:95
CbmKresFunctions::Invmass_2particles_MC
static double Invmass_2particles_MC(const CbmMCTrack *mctrack1, const CbmMCTrack *mctrack2)
Definition: CbmKresFunctions.h:92
CbmKresEtaMCAnalysis::Pion_Pt_fromEta_reco
TH1D * Pion_Pt_fromEta_reco
Definition: CbmKresEtaMCAnalysis.h:155
CbmKresEtaMCAnalysis::ECPGA_pions_MC
std::vector< std::vector< CbmMCTrack * > > ECPGA_pions_MC
Definition: CbmKresEtaMCAnalysis.h:124
CbmKresEtaMCAnalysis::CalculateOpeningAngleBetweenGammas_Reco
Double_t CalculateOpeningAngleBetweenGammas_Reco(TVector3 electron1, TVector3 electron2, TVector3 electron3, TVector3 electron4)
Definition: CbmKresEtaMCAnalysis.cxx:391
CbmLmvmKinematicParams
Definition: CbmLmvmKinematicParams.h:17
CbmLmvmKinematicParams::fPt
Double_t fPt
Definition: CbmLmvmKinematicParams.h:20
CbmKresEtaMCAnalysis::El_Photon_Pion_Eta_Id
vector< int > El_Photon_Pion_Eta_Id
Definition: CbmKresEtaMCAnalysis.h:96
CbmKresEtaMCAnalysis::~CbmKresEtaMCAnalysis
virtual ~CbmKresEtaMCAnalysis()
Definition: CbmKresEtaMCAnalysis.cxx:120
CbmKresEtaMCAnalysis::OpeningAnglePhoton_eta_ppg_mc
TH1D * OpeningAnglePhoton_eta_ppg_mc
Definition: CbmKresEtaMCAnalysis.h:149
CbmKresFunctions::Invmass_4particles_RECO
static double Invmass_4particles_RECO(const TVector3 part1, const TVector3 part2, const TVector3 part3, const TVector3 part4)
Definition: CbmKresFunctions.h:145
CbmKresEtaMCAnalysis::InvMassPhoton_eta_gg_reffited
TH1D * InvMassPhoton_eta_gg_reffited
Definition: CbmKresEtaMCAnalysis.h:131