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
14#include <TClonesArray.h>
15#include <TH1.h>
16#include <TH2D.h>
17
18#include "KFParticle.h"
19#include "KFTopoPerformance.h"
20
22
23using namespace std;
24
26
27public:
28 //***** brief Standard constructor.
30 //***** brief Standard destructor.
31 virtual ~CbmKresConversionKF();
32
33
34 void Init();
35 void InitHistograms();
36 void Finish();
37
38 void SetKF(CbmKFParticleFinder* kfparticle, CbmKFParticleFinderQa* kfparticleQA);
39
40 void Exec(int fEventNumKF, double OpeningAngleCut, double GammaInvMassCut, int RealPID);
41
42 void FindGammas(vector<KFParticle> allgammas, vector<KFParticle> particlevector, int Event, double AngleCut,
43 double InvMassCut, int RealPID);
44
45 int CheckIfElectron(CbmRichRing* ring, double momentum);
46
47 void FindPi0(TString mod, vector<vector<TVector3>> Gammas, vector<vector<int>> StsIndex,
48 vector<vector<CbmMCTrack*>> GammasMC, vector<Double_t> GammasZ, TH1D* Pi0InvMassRecoKF,
49 TH2D* Pi0_pt_vs_rap, TH2D* Pi0_pt_vs_rap_est, TH1D* Pi0InvMassRecoKF_target, TH1D* Pi0InvMassRecoKF_mvd,
50 TH1D* Pi0InvMassRecoKF_sts, TH1D* Pi0InvMassRecoKF_outside, TH2D* MultiplicityGamma,
51 TH2D* MultiplicityChargedParticles, vector<TH1*> BGCases);
52
53 void MixedEvent();
54 void MixedEventMulti();
55
56
57private:
60 const KFParticleTopoReconstructor* fKFtopo;
61
63
65
66 TClonesArray* fMcTracks;
67 TClonesArray* fStsTracks;
68 TClonesArray* fStsTrackMatches;
69 TClonesArray* fGlobalTracks;
70 TClonesArray* fRichRingMatches;
71 TClonesArray* fRichProjections;
72 TClonesArray* fRichRings;
73 TClonesArray* fRichHits;
74
75 std::vector<TVector3> frefmomentum;
76 std::vector<std::vector<TVector3>> GammasAll;
77 std::vector<std::vector<TVector3>> GammasZero;
78 std::vector<std::vector<TVector3>> GammasOne;
79 std::vector<std::vector<TVector3>> GammasTwo;
80 std::vector<std::vector<TVector3>> GammasOneTwo;
81
82 std::vector<int> fStsInd;
83 std::vector<std::vector<int>> GammasAllStsIndex;
84 std::vector<std::vector<int>> GammasZeroStsIndex;
85 std::vector<std::vector<int>> GammasOneStsIndex;
86 std::vector<std::vector<int>> GammasTwoStsIndex;
87 std::vector<std::vector<int>> GammasOneTwoStsIndex;
88
89 std::vector<CbmMCTrack*> fmcvector;
90 std::vector<std::vector<CbmMCTrack*>> GammasAllMC;
91 std::vector<std::vector<CbmMCTrack*>> GammasZeroMC;
92 std::vector<std::vector<CbmMCTrack*>> GammasOneMC;
93 std::vector<std::vector<CbmMCTrack*>> GammasTwoMC;
94 std::vector<std::vector<CbmMCTrack*>> GammasOneTwoMC;
95
96 std::vector<Double_t> GammasAllZ;
97 std::vector<Double_t> GammasZeroZ;
98 std::vector<Double_t> GammasOneZ;
99 std::vector<Double_t> GammasTwoZ;
100 std::vector<Double_t> GammasOneTwoZ;
101
102
103 // normal EMT
104 std::vector<int> EMT_Event;
105 std::vector<std::vector<TVector3>> EMT_pair_momenta;
106 std::vector<int> EMT_NofRings;
107 std::vector<Double_t> EMT_Z;
108
109 // multi EMT
110 std::vector<int> EMT_Event_multi_all;
111 std::vector<std::vector<TVector3>> EMT_pair_momenta_multi_all;
112
113 std::vector<int> EMT_Event_multi_one;
114 std::vector<std::vector<TVector3>> EMT_pair_momenta_multi_one;
115
116 std::vector<int> EMT_Event_multi_two;
117 std::vector<std::vector<TVector3>> EMT_pair_momenta_multi_two;
118
119 std::vector<int> EMT_Event_multi_zero;
120 std::vector<std::vector<TVector3>> EMT_pair_momenta_multi_zero;
121
122 std::vector<int> EMT_Event_multi_onetwo;
123 std::vector<std::vector<TVector3>> EMT_pair_momenta_multi_onetwo;
124
125 std::vector<int> EMT_multi_all;
126 std::vector<int> EMT_multi_one;
127 std::vector<int> EMT_multi_two;
128 std::vector<int> EMT_multi_zero;
129 std::vector<int> EMT_multi_onetwo;
130
131
138
153
154 // 0-2 => All
155 vector<TH1*> fHistoList_All;
158 TH1D* fPdg_All;
165 // 0-2 => All target
171 // 0-2 => All mvd
172 vector<TH1*> fHistoList_All_mvd;
176 // 0-2 => All sts
177 vector<TH1*> fHistoList_All_sts;
181 // 0-2 => All outside the target (mvd+sts+pipe)
187
188 // 0 => Zero
189 vector<TH1*> fHistoList_Zero;
199 // 0 => Zero target
205 // 0 => Zero mvd
210 // 0 => Zero sts
215 // 0 => Zero outside the target (mvd+sts+pipe)
221
222 // 1 => One
223 vector<TH1*> fHistoList_One;
226 TH1D* fPdg_One;
233 // 1 => One target
239 // 1 => One mvd
240 vector<TH1*> fHistoList_One_mvd;
244 // 1 => One sts
245 vector<TH1*> fHistoList_One_sts;
249 // 1 => One outside the target (mvd+sts+pipe)
255
256
257 // 2 => Two
258 vector<TH1*> fHistoList_Two;
261 TH1D* fPdg_Two;
268 // 2 => Two target
274 // 2 => Two mvd
275 vector<TH1*> fHistoList_Two_mvd;
279 // 2 => Two sts
280 vector<TH1*> fHistoList_Two_sts;
284 // 2 => Two outside the target (mvd+sts+pipe)
290
291 // 1-2 => OneTwo
292 vector<TH1*> fHistoList_OneTwo;
302 // 1-2 => OneTwo target
308 // 1-2 => OneTwo mvd
313 // 1-2 => OneTwo sts
318 // 1-2 => OneTwo outside the target (mvd+sts+pipe)
324
325
326 // multiplicity
333
339
340
341 // Multi EMT
347
355
363
371
379
387
388 // BG cases Both
389 // all
390 vector<TH1*> fHistoList_bg_all;
391 TH1D* BG1_all;
392 TH1D* BG2_all;
393 TH1D* BG3_all;
394 TH1D* BG4_all;
395 TH1D* BG5_all;
396 TH1D* BG6_all;
397 TH1D* BG7_all;
398 TH1D* BG8_all;
399 TH1D* BG9_all;
400 TH1D* BG10_all;
421 // zero
422 vector<TH1*> fHistoList_bg_zero;
423 TH1D* BG1_zero;
424 TH1D* BG2_zero;
425 TH1D* BG3_zero;
426 TH1D* BG4_zero;
427 TH1D* BG5_zero;
428 TH1D* BG6_zero;
429 TH1D* BG7_zero;
430 TH1D* BG8_zero;
431 TH1D* BG9_zero;
453 // one
454 vector<TH1*> fHistoList_bg_one;
455 TH1D* BG1_one;
456 TH1D* BG2_one;
457 TH1D* BG3_one;
458 TH1D* BG4_one;
459 TH1D* BG5_one;
460 TH1D* BG6_one;
461 TH1D* BG7_one;
462 TH1D* BG8_one;
463 TH1D* BG9_one;
464 TH1D* BG10_one;
485 // two
486 vector<TH1*> fHistoList_bg_two;
487 TH1D* BG1_two;
488 TH1D* BG2_two;
489 TH1D* BG3_two;
490 TH1D* BG4_two;
491 TH1D* BG5_two;
492 TH1D* BG6_two;
493 TH1D* BG7_two;
494 TH1D* BG8_two;
495 TH1D* BG9_two;
496 TH1D* BG10_two;
517 // onetwo
549
550
551 //***** brief Copy constructor.
553
554 //***** brief Assignment operator.
556
557
558 ClassDef(CbmKresConversionKF, 1)
559};
560
561#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.