CbmRoot
Loading...
Searching...
No Matches
CbmAnaConversion.h
Go to the documentation of this file.
1/* Copyright (C) 2014-2016 GSI/JINR-LIT, Darmstadt/Dubna
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Sascha Reinecke, Andrey Lebedev [committer], Florian Uhlig */
4
14#ifndef CBM_ANA_CONVERSION
15#define CBM_ANA_CONVERSION
16
17#include "CbmKFVertex.h"
18#include "CbmMCTrack.h"
19
20#include "FairTask.h"
21
22#include "LmvmKinePar.h"
23
24//#include "KFParticleTopoReconstructor.h"
25#include "CbmAnaConversionKF.h"
34#include "CbmKFParticleFinder.h"
36
37#include "TStopwatch.h"
38
39#include <vector>
40
41class TH1;
42class TH2;
43class TH3;
44class TH1D;
45class TH2D;
46class TH2I;
47class TH3D;
48class TClonesArray;
49class CbmRichRing;
50class TCanvas;
51class TRandom3;
52
53
54/*class KinematicParams{
55public:
56 Double_t momentumMag; // Absolute value of momentum
57 Double_t pt; // Transverse momentum
58 Double_t rapidity; // Rapidity
59 Double_t minv; // Invariant mass
60 Double_t angle; // Opening angle
61};*/
62
63class CbmAnaConversion : public FairTask {
64
65public:
70
74 virtual ~CbmAnaConversion();
75
79 virtual InitStatus Init();
80
84 virtual void Exec(Option_t* option);
85
86 LmvmKinePar CalculateKinematicParams(const CbmMCTrack* mctrackP, const CbmMCTrack* mctrackM);
87
88 Double_t Invmass_2gammas(const CbmMCTrack* gamma1, const CbmMCTrack* gamma2);
89 Double_t Invmass_2particles(const CbmMCTrack* mctrack1, const CbmMCTrack* mctrack2);
90 Double_t Invmass_4particles(const CbmMCTrack* mctrack1, const CbmMCTrack* mctrack2, const CbmMCTrack* mctrack3,
91 const CbmMCTrack* mctrack4);
92 Double_t Invmass_4particlesRECO(const TVector3 part1, const TVector3 part2, const TVector3 part3,
93 const TVector3 part4);
94
95
97
101 virtual void Finish();
102
103 void AnalyseElectrons(CbmMCTrack* mctrack);
104 void FillMCTracklists(CbmMCTrack* mctrack, int i);
105 void FillRecoTracklist(CbmMCTrack* mtrack);
106 Bool_t FillRecoTracklistEPEM(CbmMCTrack* mctrack, TVector3 stsMomentum, TVector3 refittedMom, int i, Double_t chi,
107 Int_t GlobalTrackId);
108 void InvariantMassTest();
111 int GetTest();
112 int GetNofEvents();
113 void SetMode(int mode);
114
115 void ReconstructGamma();
116
117
118 void SetKF(CbmKFParticleFinder* kfparticle, CbmKFParticleFinderQa* kfparticleQA);
119
120 Bool_t AnalysePi0_MC(CbmMCTrack* mctrack, int i);
121 void AnalysePi0_Reco();
122 Bool_t AnalysePi0_Reco_calc(int e1, int e2, int e3, int e4);
124 Bool_t AnalysePi0_Reco_noRichInd_calc(int e1, int e2, int e3, int e4);
125
126
127private:
135 Int_t DoTest;
136
142 TH1D* fhNofPi0_perEvent; // number of pi0 per event
143 TH1D* fhNofPi0_perEvent_cut; // number of pi0 with cut on z-axis (z <= 4cm, i.e. generated before 4cm)
144 TH1D* fhNofPi0_perEvent_cut2; // number of pi0 with cut motherId = -1
145 TH1D* fhNofPi0_perEvent_cut3; // number of pi0 with conversion of gammas happening before RICH
146 TH1D* fhNofEta_perEvent; // number of pi0 per event
147 TH1D* fhNofEta_perEvent_cut; // number of pi0 with cut on z-axis (z <= 10cm, i.e. generated before 10cm)
148 TH1D* fhNofEta_perEvent_cut2; // number of pi0 with cut motherId = -1
149 TH1D* fhPi0_z; // number of pi0 per z-bin
150 TH1D* fhPi0_z_cut; // number of pi0 per z-bin with cut on acceptance (via x^2 + y^2 <= r^2 with r = z*tan)
151 TH1D* fhPi0_pt; //
153 TH1D* fhPi0_theta; //
155 TH1D* fhEta_pt; //
157 TH1D* fhEta_theta; //
159 TH1D* fhRho_pt; //
161 TH1D* fhRho_theta; //
163 TH1D* fhOmega_pt; //
168
171
178
180
183
184
186
189 TClonesArray* fRichPoints;
190 TClonesArray* fRichRings;
191 TClonesArray* fRichRingMatches;
192 TClonesArray* fMcTracks;
193 TClonesArray* fStsTracks;
194 TClonesArray* fStsTrackMatches;
195 TClonesArray* fGlobalTracks;
196
205
207
208 Int_t test;
209
211
213
214
217 const KFParticleTopoReconstructor* fKFtopo;
218 std::vector<int> trackindexarray;
224
225
226 // for data gained from the KFParticle package
227 Int_t fNofGeneratedPi0_allEvents; // number of generated pi0 summed up over ALL EVENTS
228 Int_t fNofPi0_kfparticle_allEvents; // number of all reconstructed pi0 summed up over ALL EVENTS
234
235
239 void InitHistograms();
240
241 std::vector<TH1*> fHistoList; // list of all histograms
242 std::vector<TH1*> fHistoList_MC; // list of all histograms generated with MC data
243 std::vector<TH1*> fHistoList_tomography; // list of all histograms of tomography data (photon conversion)
244 std::vector<TH1*> fHistoList_reco; // list of all histograms of reconstruction data
245 std::vector<TH1*> fHistoList_reco_mom; // list of all histograms of reconstruction data (used momenta)
246 std::vector<TH1*> fHistoList_kfparticle; // list of all histograms containing results from KFParticle package
247 std::vector<TH1*> fHistoList_richrings; // list of all histograms related to rich rings
248 std::vector<TH1*> fHistoList_furtherAnalyses; // list of all histograms from further analyses (occurence, etc.)
249
250 std::vector<CbmMCTrack*> fMCTracklist;
251 std::vector<CbmMCTrack*> fMCTracklist_all;
252 std::vector<CbmMCTrack*> fRecoTracklist;
253 std::vector<CbmMCTrack*> fRecoTracklistEPEM;
254 std::vector<int> fRecoTracklistEPEM_id; // ids of mctracks from fRecoTracklistEPEM
255 std::vector<Double_t> fRecoTracklistEPEM_chi; // chi of fitted momenta from fRecoTracklistEPEM
256 std::vector<Int_t> fRecoTracklistEPEM_gtid; // GlobalTrack ID from fRecoTracklistEPEM
257
258 std::vector<CbmMCTrack*> fTestTracklist;
259 std::vector<TVector3> fTestTracklist_momentum;
260 std::vector<float> fTestTracklist_chi;
261 std::vector<int> fTestTracklist_richInd;
262 std::vector<int> fTestTracklist_ndf;
263 std::vector<int> fTestTracklist_nofhits;
264
265 std::vector<CbmMCTrack*> fTestTracklist_noRichInd;
273
274 std::vector<TVector3> fRecoMomentum;
275 std::vector<TVector3> fRecoRefittedMomentum;
276
277
279
311
312
319
320
321 // timer
322 TStopwatch timer_all;
323 Double_t fTime_all;
324 TStopwatch timer_exec;
325 Double_t fTime_exec;
326
327 TStopwatch timer_mc;
328 Double_t fTime_mc;
329 TStopwatch timer_rec;
330 Double_t fTime_rec;
331
332
342
343
348
353
354
355 ClassDef(CbmAnaConversion, 1)
356};
357
358#endif
Bool_t FillRecoTracklistEPEM(CbmMCTrack *mctrack, TVector3 stsMomentum, TVector3 refittedMom, int i, Double_t chi, Int_t GlobalTrackId)
std::vector< int > trackindexarray
std::vector< CbmMCTrack * > fTestTracklist
std::vector< TVector3 > fTestTracklist_momentum
TH2D * fhPi0_Reco_noRichInd_chi_vs_pt
TH2D * fhPi0_Reco_ndf_vs_startvertex
std::vector< TH1 * > fHistoList_richrings
TH2D * fhPi0_Reco_startvertex_vs_nofhits
TH2D * fhPi0_Reco_noRichInd_chi_vs_pt_eFromPi0
std::vector< TH1 * > fHistoList_kfparticle
std::vector< TH1 * > fHistoList_reco_mom
std::vector< CbmMCTrack * > fMCTracklist_all
TH2D * fhPi0_Reco_noRichInd_chi_vs_momentum
TH2D * fhPi0_Reco_chi_vs_momentum
std::vector< int > fTestTracklist_nofhits
std::vector< CbmMCTrack * > fRecoTracklist
std::vector< Double_t > fRecoTracklistEPEM_chi
std::vector< CbmMCTrack * > fRecoTracklistEPEM
TClonesArray * fGlobalTracks
TH2D * fhPi0_Reco_noRichInd_chi_vs_pt_eFromPi0_Target
std::vector< TVector3 > fTestTracklist_noRichInd_momentum
TClonesArray * fRichRings
std::vector< TH1 * > fHistoList_furtherAnalyses
Double_t Invmass_4particles(const CbmMCTrack *mctrack1, const CbmMCTrack *mctrack2, const CbmMCTrack *mctrack3, const CbmMCTrack *mctrack4)
TH2D * fhPi0_Reco_chi_vs_pt_eFromPi0
CbmAnaConversion()
Standard constructor.
std::vector< int > fTestTracklist_noRichInd_ndf
void AnalyseElectrons(CbmMCTrack *mctrack)
std::vector< float > fTestTracklist_noRichInd_chi
TH2D * fhPi0_Reco_noRichInd_chi_vs_momentum_eFromPi0
CbmKFParticleFinder * fKFparticle
TH2D * fhPi0_Reco_chi_vs_momentum_eFromPi0
CbmAnaConversionPhotons2 * fAnaPhotons2
std::vector< int > fTestTracklist_richInd
std::vector< TH1 * > fHistoList_MC
Bool_t AnalysePi0_Reco_noRichInd_calc(int e1, int e2, int e3, int e4)
TH2D * fhPi0_Reco_noRichInd_chi_vs_pt_eRest
CbmKFParticleFinderQa * fKFparticleFinderQA
Double_t Invmass_2particles(const CbmMCTrack *mctrack1, const CbmMCTrack *mctrack2)
std::vector< int > fTestTracklist_ndf
virtual void Finish()
Inherited from FairTask.
std::vector< TVector3 > fRecoMomentum
CbmAnaConversionReco * fAnaReco
std::vector< CbmMCTrack * > fMCTracklist
virtual InitStatus Init()
Inherited from FairTask.
TH2D * fhPi0_Reco_ndf_vs_nofhits_withChi
std::vector< TH1 * > fHistoList
Double_t Invmass_4particlesRECO(const TVector3 part1, const TVector3 part2, const TVector3 part3, const TVector3 part4)
LmvmKinePar CalculateKinematicParams(const CbmMCTrack *mctrackP, const CbmMCTrack *mctrackM)
Bool_t AnalysePi0_MC(CbmMCTrack *mctrack, int i)
std::vector< TH1 * > fHistoList_reco
TClonesArray * fStsTrackMatches
std::vector< TVector3 > fRecoRefittedMomentum
void FillMCTracklists(CbmMCTrack *mctrack, int i)
std::vector< Int_t > fRecoTracklistEPEM_gtid
TH2D * fhANN_output_electrons_vs_p
CbmAnaConversionKF * fAnaKF
void InvariantMassTest_4epem()
const KFParticleTopoReconstructor * fKFtopo
void FillRecoTracklist(CbmMCTrack *mtrack)
TH2D * fhPi0_Reco_noRichInd_chi_vs_momentum_eFromPi0_Target
TH2D * fhPi0_Reco_chi_vs_pt_eFromPi0_Target
void InitHistograms()
Initialize histograms.
CbmAnaConversion & operator=(const CbmAnaConversion &)
Assignment operator.
virtual void Exec(Option_t *option)
Inherited from FairTask.
void SetKF(CbmKFParticleFinder *kfparticle, CbmKFParticleFinderQa *kfparticleQA)
CbmAnaConversionRecoFull * fAnaRecoFull
TClonesArray * fRichRingMatches
std::vector< int > fTestTracklist_noRichInd_gTrackId
std::vector< int > fRecoTracklistEPEM_id
TH1D * fhANN_output_electrons_chiCut
TH2D * fhPi0_Reco_noRichInd_ndf_vs_nofhits_withChi
CbmAnaConversion(const CbmAnaConversion &)
Copy constructor.
Bool_t AnalysePi0_Reco_calc(int e1, int e2, int e3, int e4)
CbmAnaConversionTest2 * fAnaTest2
TH1D * fhPi0_Reco_noRichInd_invmass
TH2D * fhPi0_Reco_noRichInd_chi_vs_momentum_eRest
CbmAnaConversionTomography * fAnaTomography
CbmAnaConversionRich * fAnaRich
TClonesArray * fMcTracks
TClonesArray * fRichPoints
TH1D * fhPi0_Reco_noRichInd_invmass_mc
TH2D * fhPi0_Reco_chi_vs_momentum_eFromPi0_Target
CbmVertex * fPrimVertex
virtual ~CbmAnaConversion()
Standard destructor.
Double_t Invmass_2gammas(const CbmMCTrack *gamma1, const CbmMCTrack *gamma2)
TH2D * fhPi0_Reco_noRichInd_invmass_cases
CbmAnaConversionPhotons * fAnaPhotons
TClonesArray * fStsTracks
CbmAnaConversionTest * fAnaTest
std::vector< CbmMCTrack * > fTestTracklist_noRichInd
TH2D * fhPi0_Reco_startvertex_vs_chi
std::vector< int > fTestTracklist_noRichInd_MCindex
std::vector< float > fTestTracklist_chi
std::vector< int > fTestTracklist_noRichInd_richInd
TH2D * fhPi0_Reco_noRichInd_ndf_vs_nofhits
std::vector< TH1 * > fHistoList_tomography
std::vector< int > fTestTracklist_noRichInd_nofhits