CbmRoot
Loading...
Searching...
No Matches
CbmKresConversionKF.h
Go to the documentation of this file.
1/* Copyright (C) 2020 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Florian Uhlig [committer] */
4
5#ifndef CBM_KRES_CONVERSION_KF
6#define CBM_KRES_CONVERSION_KF
7
10#include "CbmKresConversionBG.h"
11#include "CbmMCTrack.h"
12#include "CbmRichRing.h"
13#include "KFParticle/KFParticle.h"
14#include "KFParticle/KFTopoPerformance.h"
15
16#include <TClonesArray.h>
17#include <TH1.h>
18#include <TH2D.h>
19
21
22using namespace std;
23
25
26public:
27 //***** brief Standard constructor.
29 //***** brief Standard destructor.
30 virtual ~CbmKresConversionKF();
31
32
33 void Init();
34 void InitHistograms();
35 void Finish();
36
37 void SetKF(CbmKFParticleFinder* kfparticle, CbmKFParticleFinderQa* kfparticleQA);
38
39 void Exec(int fEventNumKF, double OpeningAngleCut, double GammaInvMassCut, int RealPID);
40
41 void FindGammas(vector<KFParticle> allgammas, vector<KFParticle> particlevector, int Event, double AngleCut,
42 double InvMassCut, int RealPID);
43
44 int CheckIfElectron(CbmRichRing* ring, double momentum);
45
46 void FindPi0(TString mod, vector<vector<TVector3>> Gammas, vector<vector<int>> StsIndex,
47 vector<vector<CbmMCTrack*>> GammasMC, vector<Double_t> GammasZ, TH1D* Pi0InvMassRecoKF,
48 TH2D* Pi0_pt_vs_rap, TH2D* Pi0_pt_vs_rap_est, TH1D* Pi0InvMassRecoKF_target, TH1D* Pi0InvMassRecoKF_mvd,
49 TH1D* Pi0InvMassRecoKF_sts, TH1D* Pi0InvMassRecoKF_outside, TH2D* MultiplicityGamma,
50 TH2D* MultiplicityChargedParticles, vector<TH1*> BGCases);
51
52 void MixedEvent();
53 void MixedEventMulti();
54
55
56private:
59 const KFParticleTopoReconstructor* fKFtopo;
60
62
64
65 TClonesArray* fMcTracks;
66 TClonesArray* fStsTracks;
67 TClonesArray* fStsTrackMatches;
68 TClonesArray* fGlobalTracks;
69 TClonesArray* fRichRingMatches;
70 TClonesArray* fRichProjections;
71 TClonesArray* fRichRings;
72 TClonesArray* fRichHits;
73
74 std::vector<TVector3> frefmomentum;
75 std::vector<std::vector<TVector3>> GammasAll;
76 std::vector<std::vector<TVector3>> GammasZero;
77 std::vector<std::vector<TVector3>> GammasOne;
78 std::vector<std::vector<TVector3>> GammasTwo;
79 std::vector<std::vector<TVector3>> GammasOneTwo;
80
81 std::vector<int> fStsInd;
82 std::vector<std::vector<int>> GammasAllStsIndex;
83 std::vector<std::vector<int>> GammasZeroStsIndex;
84 std::vector<std::vector<int>> GammasOneStsIndex;
85 std::vector<std::vector<int>> GammasTwoStsIndex;
86 std::vector<std::vector<int>> GammasOneTwoStsIndex;
87
88 std::vector<CbmMCTrack*> fmcvector;
89 std::vector<std::vector<CbmMCTrack*>> GammasAllMC;
90 std::vector<std::vector<CbmMCTrack*>> GammasZeroMC;
91 std::vector<std::vector<CbmMCTrack*>> GammasOneMC;
92 std::vector<std::vector<CbmMCTrack*>> GammasTwoMC;
93 std::vector<std::vector<CbmMCTrack*>> GammasOneTwoMC;
94
95 std::vector<Double_t> GammasAllZ;
96 std::vector<Double_t> GammasZeroZ;
97 std::vector<Double_t> GammasOneZ;
98 std::vector<Double_t> GammasTwoZ;
99 std::vector<Double_t> GammasOneTwoZ;
100
101
102 // normal EMT
103 std::vector<int> EMT_Event;
104 std::vector<std::vector<TVector3>> EMT_pair_momenta;
105 std::vector<int> EMT_NofRings;
106 std::vector<Double_t> EMT_Z;
107
108 // multi EMT
109 std::vector<int> EMT_Event_multi_all;
110 std::vector<std::vector<TVector3>> EMT_pair_momenta_multi_all;
111
112 std::vector<int> EMT_Event_multi_one;
113 std::vector<std::vector<TVector3>> EMT_pair_momenta_multi_one;
114
115 std::vector<int> EMT_Event_multi_two;
116 std::vector<std::vector<TVector3>> EMT_pair_momenta_multi_two;
117
118 std::vector<int> EMT_Event_multi_zero;
119 std::vector<std::vector<TVector3>> EMT_pair_momenta_multi_zero;
120
121 std::vector<int> EMT_Event_multi_onetwo;
122 std::vector<std::vector<TVector3>> EMT_pair_momenta_multi_onetwo;
123
124 std::vector<int> EMT_multi_all;
125 std::vector<int> EMT_multi_one;
126 std::vector<int> EMT_multi_two;
127 std::vector<int> EMT_multi_zero;
128 std::vector<int> EMT_multi_onetwo;
129
130
137
152
153 // 0-2 => All
154 vector<TH1*> fHistoList_All;
157 TH1D* fPdg_All;
164 // 0-2 => All target
170 // 0-2 => All mvd
171 vector<TH1*> fHistoList_All_mvd;
175 // 0-2 => All sts
176 vector<TH1*> fHistoList_All_sts;
180 // 0-2 => All outside the target (mvd+sts+pipe)
186
187 // 0 => Zero
188 vector<TH1*> fHistoList_Zero;
198 // 0 => Zero target
204 // 0 => Zero mvd
209 // 0 => Zero sts
214 // 0 => Zero outside the target (mvd+sts+pipe)
220
221 // 1 => One
222 vector<TH1*> fHistoList_One;
225 TH1D* fPdg_One;
232 // 1 => One target
238 // 1 => One mvd
239 vector<TH1*> fHistoList_One_mvd;
243 // 1 => One sts
244 vector<TH1*> fHistoList_One_sts;
248 // 1 => One outside the target (mvd+sts+pipe)
254
255
256 // 2 => Two
257 vector<TH1*> fHistoList_Two;
260 TH1D* fPdg_Two;
267 // 2 => Two target
273 // 2 => Two mvd
274 vector<TH1*> fHistoList_Two_mvd;
278 // 2 => Two sts
279 vector<TH1*> fHistoList_Two_sts;
283 // 2 => Two outside the target (mvd+sts+pipe)
289
290 // 1-2 => OneTwo
291 vector<TH1*> fHistoList_OneTwo;
301 // 1-2 => OneTwo target
307 // 1-2 => OneTwo mvd
312 // 1-2 => OneTwo sts
317 // 1-2 => OneTwo outside the target (mvd+sts+pipe)
323
324
325 // multiplicity
332
338
339
340 // Multi EMT
346
354
362
370
378
386
387 // BG cases Both
388 // all
389 vector<TH1*> fHistoList_bg_all;
390 TH1D* BG1_all;
391 TH1D* BG2_all;
392 TH1D* BG3_all;
393 TH1D* BG4_all;
394 TH1D* BG5_all;
395 TH1D* BG6_all;
396 TH1D* BG7_all;
397 TH1D* BG8_all;
398 TH1D* BG9_all;
399 TH1D* BG10_all;
420 // zero
421 vector<TH1*> fHistoList_bg_zero;
422 TH1D* BG1_zero;
423 TH1D* BG2_zero;
424 TH1D* BG3_zero;
425 TH1D* BG4_zero;
426 TH1D* BG5_zero;
427 TH1D* BG6_zero;
428 TH1D* BG7_zero;
429 TH1D* BG8_zero;
430 TH1D* BG9_zero;
452 // one
453 vector<TH1*> fHistoList_bg_one;
454 TH1D* BG1_one;
455 TH1D* BG2_one;
456 TH1D* BG3_one;
457 TH1D* BG4_one;
458 TH1D* BG5_one;
459 TH1D* BG6_one;
460 TH1D* BG7_one;
461 TH1D* BG8_one;
462 TH1D* BG9_one;
463 TH1D* BG10_one;
484 // two
485 vector<TH1*> fHistoList_bg_two;
486 TH1D* BG1_two;
487 TH1D* BG2_two;
488 TH1D* BG3_two;
489 TH1D* BG4_two;
490 TH1D* BG5_two;
491 TH1D* BG6_two;
492 TH1D* BG7_two;
493 TH1D* BG8_two;
494 TH1D* BG9_two;
495 TH1D* BG10_two;
516 // onetwo
548
549
550 //***** brief Copy constructor.
552
553 //***** brief Assignment operator.
555
556
557 ClassDef(CbmKresConversionKF, 1)
558};
559
560#endif
std::vector< Double_t > EMT_Z
vector< TH1 * > fHistoList_All_outside
vector< TH1 * > fHistoList_Two_outside
std::vector< int > EMT_Event_multi_two
vector< TH1 * > fHistoList_One_mvd
std::vector< int > EMT_Event_multi_one
std::vector< std::vector< TVector3 > > GammasZero
vector< TH1 * > fHistoList_multiplicity_All
std::vector< std::vector< TVector3 > > EMT_pair_momenta_multi_zero
std::vector< std::vector< TVector3 > > EMT_pair_momenta_multi_all
std::vector< int > EMT_Event
TClonesArray * fRichProjections
std::vector< std::vector< int > > GammasOneTwoStsIndex
TH2D * CheckForCuts_z_vs_OA_Reco_from_one_pi0
TH1D * CheckForCuts_OA_Reco_from_one_pi0_4cm_21cm
std::vector< std::vector< int > > GammasAllStsIndex
std::vector< std::vector< TVector3 > > GammasAll
vector< TH1 * > fHistoList_multiplicity_One
std::vector< std::vector< TVector3 > > GammasOne
std::vector< Double_t > GammasZeroZ
vector< TH1 * > fHistoList_OneTwo_mvd
TClonesArray * fRichRingMatches
void SetKF(CbmKFParticleFinder *kfparticle, CbmKFParticleFinderQa *kfparticleQA)
std::vector< std::vector< CbmMCTrack * > > GammasTwoMC
TClonesArray * fGlobalTracks
vector< TH1 * > fHistoList_One_sts
vector< TH1 * > fHistoList_Two_sts
vector< TH1 * > fHistoList_multiplicity_Two
vector< TH1 * > fHistoList_Zero_mvd
vector< TH1 * > fHistoList_All
TH1D * CheckForCuts_InvMass_Reco_from_one_pi0
vector< TH1 * > fHistoList_bg_two
std::vector< int > EMT_multi_onetwo
vector< TH1 * > fHistoList_OneTwo_outside
std::vector< Double_t > GammasAllZ
vector< TH1 * > fHistoList_Zero
vector< TH1 * > fHistoList_OneTwo
std::vector< int > EMT_Event_multi_onetwo
std::vector< int > EMT_multi_one
std::vector< int > fStsInd
std::vector< std::vector< TVector3 > > GammasTwo
TH2D * CheckForCuts_z_vs_InvMass_MC_from_one_pi0
vector< TH1 * > fHistoList_bg_one
vector< TH1 * > fHistoList_Two_target
std::vector< std::vector< int > > GammasOneStsIndex
vector< TH1 * > fHistoList_OneTwo_sts
int CheckIfElectron(CbmRichRing *ring, double momentum)
vector< TH1 * > fHistoList_Zero_outside
std::vector< int > EMT_multi_two
std::vector< int > EMT_NofRings
std::vector< std::vector< TVector3 > > EMT_pair_momenta_multi_one
vector< TH1 * > fHistoList_All_target
TH1D * CheckForCuts_InvMass_Reco_from_one_pi0_less4cm
vector< TH1 * > fHistoList_Zero_sts
CbmKFParticleFinderQa * fKFparticleFinderQA
std::vector< CbmMCTrack * > fmcvector
vector< TH1 * > fHistoList_multiplicity_Zero
std::vector< std::vector< CbmMCTrack * > > GammasOneMC
std::vector< int > EMT_multi_all
vector< TH1 * > fHistoList_bg_onetwo
vector< TH1 * > fHistoList_bg_all
std::vector< std::vector< TVector3 > > EMT_pair_momenta
vector< TH1 * > fHistoList_One_outside
TH1D * CheckForCuts_InvMass_Reco_from_one_pi0_more21cm
CbmRichRingFitterEllipseTau * fTauFit
CbmKresConversionBG * fAnaBG
std::vector< int > EMT_multi_zero
std::vector< std::vector< int > > GammasZeroStsIndex
std::vector< std::vector< CbmMCTrack * > > GammasAllMC
std::vector< int > EMT_Event_multi_all
vector< TH1 * > fHistoList_All_mvd
TClonesArray * fStsTrackMatches
std::vector< std::vector< int > > GammasTwoStsIndex
void FindGammas(vector< KFParticle > allgammas, vector< KFParticle > particlevector, int Event, double AngleCut, double InvMassCut, int RealPID)
std::vector< std::vector< TVector3 > > GammasOneTwo
std::vector< Double_t > GammasOneTwoZ
std::vector< std::vector< TVector3 > > EMT_pair_momenta_multi_two
void FindPi0(TString mod, vector< vector< TVector3 > > Gammas, vector< vector< int > > StsIndex, vector< vector< CbmMCTrack * > > GammasMC, vector< Double_t > GammasZ, TH1D *Pi0InvMassRecoKF, TH2D *Pi0_pt_vs_rap, TH2D *Pi0_pt_vs_rap_est, TH1D *Pi0InvMassRecoKF_target, TH1D *Pi0InvMassRecoKF_mvd, TH1D *Pi0InvMassRecoKF_sts, TH1D *Pi0InvMassRecoKF_outside, TH2D *MultiplicityGamma, TH2D *MultiplicityChargedParticles, vector< TH1 * > BGCases)
vector< TH1 * > fHistoList_bg_zero
vector< TH1 * > fHistoList_CheckForCuts
CbmKFParticleFinder * fKFparticle
vector< TH1 * > fHistoList_multiplicity
TH2D * CheckForCuts_z_vs_InvMass_Reco_from_one_pi0
TH1D * sameMIDcase8NonEComeFromTargetIM_onetwo
vector< TH1 * > fHistoList_Zero_target
vector< TH1 * > fHistoList_Two_mvd
std::vector< std::vector< CbmMCTrack * > > GammasZeroMC
vector< TH1 * > fHistoList_All_sts
const KFParticleTopoReconstructor * fKFtopo
std::vector< std::vector< TVector3 > > EMT_pair_momenta_multi_onetwo
TH1D * sameMIDcase8NonEComeFromTargetPt_onetwo
TH1D * sameMIDcase8NonEComeFromTargetP_onetwo
std::vector< std::vector< CbmMCTrack * > > GammasOneTwoMC
std::vector< Double_t > GammasTwoZ
TH1D * CheckForCuts_OA_Reco_from_one_pi0_less4cm
TH1D * CheckForCuts_InvMass_Reco_from_one_pi0_4cm_21cm
TH1D * CheckForCuts_OA_Reco_from_one_pi0_more21cm
std::vector< TVector3 > frefmomentum
CbmKresConversionKF(const CbmKresConversionKF &)
vector< TH1 * > fHistoList_Two
void Exec(int fEventNumKF, double OpeningAngleCut, double GammaInvMassCut, int RealPID)
vector< TH1 * > fHistoList_multiplicity_OneTwo
std::vector< int > EMT_Event_multi_zero
vector< TH1 * > fHistoList_One_target
std::vector< Double_t > GammasOneZ
vector< TH1 * > fHistoList_OneTwo_target
CbmKresConversionKF operator=(const CbmKresConversionKF &)
vector< TH1 * > fHistoList_One
Here the ring is fitted with Taubin algorithm from A. Ayriyan, G. Ososkov, N. Chernov.
Hash for CbmL1LinkKey.