CbmRoot
Loading...
Searching...
No Matches
CbmKresConversionCorrectedPhotons.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_CORRECTED_PHOTONS
6#define CBM_KRES_CONVERSION_CORRECTED_PHOTONS
7
8#include "CbmKFVertex.h"
12#include "CbmMCTrack.h"
13#include "CbmRichRing.h"
15#include "CbmStsTrack.h"
16#include "CbmVertex.h"
17#include "KFParticle/KFParticle.h"
18#include "LmvmKinePar.h"
19#include "TH2D.h"
20
21#include <TClonesArray.h>
22
24
25using namespace std;
26
28
29public:
30 //***** brief Standard constructor.
32 //***** brief Standard destructor.
34
35
36 void Init(double OA, double IM);
37 void InitHistograms();
38 void Finish();
39
40 void Exec(int fEventNumDP, double OpeningAngleCut, double GammaInvMassCut, int RealPID);
41
42 void SaveOutsideTracks(CbmMCTrack* mcTrack1, CbmStsTrack* stsTrack, double charge, int stsInd, int richInd,
43 int stsMcTrackId, CbmRichRing* RING);
44
45 void SaveTargetTracks(CbmMCTrack* mcTrack1, CbmStsTrack* stsTrack, TVector3 refmom, double charge, int stsInd,
46 int richInd, int stsMcTrackId, CbmRichRing* RING);
47
48 int FindInRich(int richInd, int stsMcTrackId);
49
50 int CheckIfElectron(CbmRichRing* ring, double momentum);
51
52 std::vector<TVector3> SaveAllHits(CbmStsTrack* track);
53
54 void FindGammasTarget(int EventNumMan, double AngleCut, double InvMassCut, int RealPID,
55 vector<CbmMCTrack*> MCtracks_minus, vector<CbmMCTrack*> MCtracks_plus,
56 vector<CbmStsTrack*> StsTrack_minus, vector<CbmStsTrack*> StsTrack_plus,
57 vector<TVector3> Momenta_minus, vector<TVector3> Momenta_plus, std::vector<int> Rings_minus,
58 std::vector<int> Rings_plus, std::vector<int> stsIndex_minus, std::vector<int> stsIndex_plus,
59 vector<CbmRichRing*> richRing_minus, vector<CbmRichRing*> richRing_plus);
60
61 void FindGammasOutside(int EventNumMan, double AngleCut, double InvMassCut, int RealPID,
62 vector<CbmMCTrack*> MCtracks_minus_Outside, vector<CbmMCTrack*> MCtracks_plus_Outside,
63 vector<CbmStsTrack*> StsTrack_minus_Outside, vector<CbmStsTrack*> StsTrack_plus_Outside,
64 std::vector<int> Rings_minus_Outside, std::vector<int> Rings_plus_Outside,
65 std::vector<int> stsIndex_minus_Outside, std::vector<int> stsIndex_plus_Outside,
66 vector<CbmRichRing*> richRing_minus_Outside, vector<CbmRichRing*> richRing_plus_Outside);
67
68
69 double CalculatePlaneAngle_last_fromHits(std::vector<TVector3> track_1, std::vector<TVector3> track_2);
70
72
74
75 void CDP_likesign_Mixing_Target(double AngleCut, double InvMassCut);
76
77 void CDP_likesign_Mixing_Outside(double AngleCut, double InvMassCut);
78
79 void CDP_Mixing_Target(double AngleCut, double InvMassCut);
80
81 void CDP_Mixing_Outside(double AngleCut, double InvMassCut);
82
83
84private:
91 std::vector<std::vector<double>> corr_all;
92 std::vector<std::vector<double>> corr_two;
93 std::vector<std::vector<double>> corr_onetwo;
95
96
97 TClonesArray* fMcTracks;
98 TClonesArray* fGlobalTracks;
99 TClonesArray* fStsTracks;
100 TClonesArray* fStsTrackMatches;
101 TClonesArray* fRichProjections;
102 TClonesArray* fRichRings;
103 TClonesArray* fRichRingMatches;
104 TClonesArray* fRichHits;
105 TClonesArray* fArrayMvdHit;
106 TClonesArray* fArrayStsHit;
107
110
112
113 // charged tracks from outside
114 vector<CbmStsTrack*> VStsTrack_minus_Outside;
115 vector<CbmMCTrack*> VMCtracks_minus_Outside;
116 std::vector<int> VRings_minus_Outside;
117 std::vector<int> VStsIndex_minus_Outside;
118 vector<CbmRichRing*> VRichRing_minus_Outside;
119
120 vector<CbmStsTrack*> VStsTrack_plus_Outside;
121 vector<CbmMCTrack*> VMCtracks_plus_Outside;
122 std::vector<int> VRings_plus_Outside;
123 std::vector<int> VStsIndex_plus_Outside;
124 vector<CbmRichRing*> VRichRing_plus_Outside;
125
126
127 // charged tracks from the target
128 vector<CbmMCTrack*> VMCtracks_minus_Target;
129 vector<CbmStsTrack*> VStsTrack_minus_Target;
130 vector<TVector3> VMomenta_minus_Target;
131 std::vector<int> VRings_minus_Target;
132 std::vector<int> VStsIndex_minus_Target;
133 vector<CbmRichRing*> VRichRing_minus_Target;
134
135 vector<CbmMCTrack*> VMCtracks_plus_Target;
136 vector<CbmStsTrack*> VStsTrack_plus_Target;
137 vector<TVector3> VMomenta_plus_Target;
138 std::vector<int> VRings_plus_Target;
139 std::vector<int> VStsIndex_plus_Target;
140 vector<CbmRichRing*> VRichRing_plus_Target;
141
142
143 // CDP_LK_EMT Target
144 std::vector<TVector3> CDP_LK_EMT_momenta_minus_Target;
146 std::vector<CbmStsTrack*> CDP_LK_EMT_STS_minus_Target;
148
149 std::vector<TVector3> CDP_LK_EMT_momenta_plus_Target;
151 std::vector<CbmStsTrack*> CDP_LK_EMT_STS_plus_Target;
153
154 // CDP_LK_EMT Outside
156 std::vector<CbmStsTrack*> CDP_LK_EMT_STS_minus_Outside;
158
160 std::vector<CbmStsTrack*> CDP_LK_EMT_STS_plus_Outside;
162
163
164 // CDP_EMT Target
166 std::vector<TVector3> CDP_EMT_momenta_minus_Target;
168 std::vector<std::vector<TVector3>> CDP_EMT_Hits_minus_Target;
169
171 std::vector<TVector3> CDP_EMT_momenta_plus_Target;
173 std::vector<std::vector<TVector3>> CDP_EMT_Hits_plus_Target;
174
175 // CDP_EMT Outside
177 std::vector<CbmStsTrack*> CDP_EMT_momenta_minus_Outside;
178 std::vector<KFParticle> CDP_EMT_KFTrack_minus_Outside;
180 std::vector<std::vector<TVector3>> CDP_EMT_Hits_minus_Outside;
181
183 std::vector<CbmStsTrack*> CDP_EMT_momenta_plus_Outside;
184 std::vector<KFParticle> CDP_EMT_KFTrack_plus_Outside;
186 std::vector<std::vector<TVector3>> CDP_EMT_Hits_plus_Outside;
187
188
189 // histograms
190 // Target
194
195 // Outside
199
200 // Both
201 vector<TH1*> fHistoList_dp_Both;
208
209
223
236
249
250
251 // Target => all
269
270 // Target => two
288
289 // Target => onetwo
307
308
309 // Outside => all
327
328 // Outside => two
346
347 // Outside => onetwo
365
366
367 // Both => all
385
386 // Both => two
404
405 // Both => onetwo
423
424
425 // EMT CDP Target
429
430 // EMT CDP Outside
434
435 // EMT CDP Both
439
440
446
452
458
459
460 //***** brief Copy constructor.
462
463 //***** brief Assignment operator.
465
466
468};
469
470#endif
Here the ring is fitted with Taubin algorithm from A. Ayriyan, G. Ososkov, N. Chernov.
Data class for STS tracks.
int Int_t
std::vector< CbmStsTrack * > CDP_LK_EMT_STS_minus_Outside
std::vector< std::vector< TVector3 > > CDP_EMT_Hits_plus_Target
void Exec(int fEventNumDP, double OpeningAngleCut, double GammaInvMassCut, int RealPID)
void SaveTargetTracks(CbmMCTrack *mcTrack1, CbmStsTrack *stsTrack, TVector3 refmom, double charge, int stsInd, int richInd, int stsMcTrackId, CbmRichRing *RING)
std::vector< TVector3 > SaveAllHits(CbmStsTrack *track)
void CDP_likesign_Mixing_Outside(double AngleCut, double InvMassCut)
void CDP_likesign_Mixing_Target(double AngleCut, double InvMassCut)
int CheckIfElectron(CbmRichRing *ring, double momentum)
std::vector< std::vector< double > > corr_two
void CDP_Mixing_Target(double AngleCut, double InvMassCut)
std::vector< CbmStsTrack * > CDP_EMT_momenta_plus_Outside
std::vector< CbmStsTrack * > CDP_EMT_momenta_minus_Outside
double CalculatePlaneAngle_last(CbmStsTrack *Sts_1, CbmStsTrack *Sts_2)
std::vector< std::vector< TVector3 > > CDP_EMT_Hits_minus_Outside
void SaveOutsideTracks(CbmMCTrack *mcTrack1, CbmStsTrack *stsTrack, double charge, int stsInd, int richInd, int stsMcTrackId, CbmRichRing *RING)
void CDP_Mixing_Outside(double AngleCut, double InvMassCut)
double CalculatePlaneAngle_first(CbmStsTrack *Sts_1, CbmStsTrack *Sts_2)
CbmKresConversionCorrectedPhotons(const CbmKresConversionCorrectedPhotons &)
void FindGammasTarget(int EventNumMan, double AngleCut, double InvMassCut, int RealPID, vector< CbmMCTrack * > MCtracks_minus, vector< CbmMCTrack * > MCtracks_plus, vector< CbmStsTrack * > StsTrack_minus, vector< CbmStsTrack * > StsTrack_plus, vector< TVector3 > Momenta_minus, vector< TVector3 > Momenta_plus, std::vector< int > Rings_minus, std::vector< int > Rings_plus, std::vector< int > stsIndex_minus, std::vector< int > stsIndex_plus, vector< CbmRichRing * > richRing_minus, vector< CbmRichRing * > richRing_plus)
std::vector< std::vector< double > > corr_all
std::vector< std::vector< TVector3 > > CDP_EMT_Hits_minus_Target
std::vector< std::vector< double > > corr_onetwo
std::vector< std::vector< TVector3 > > CDP_EMT_Hits_plus_Outside
double CalculatePlaneAngle_last_fromHits(std::vector< TVector3 > track_1, std::vector< TVector3 > track_2)
CbmKresConversionCorrectedPhotons operator=(const CbmKresConversionCorrectedPhotons &)
void FindGammasOutside(int EventNumMan, double AngleCut, double InvMassCut, int RealPID, vector< CbmMCTrack * > MCtracks_minus_Outside, vector< CbmMCTrack * > MCtracks_plus_Outside, vector< CbmStsTrack * > StsTrack_minus_Outside, vector< CbmStsTrack * > StsTrack_plus_Outside, std::vector< int > Rings_minus_Outside, std::vector< int > Rings_plus_Outside, std::vector< int > stsIndex_minus_Outside, std::vector< int > stsIndex_plus_Outside, vector< CbmRichRing * > richRing_minus_Outside, vector< CbmRichRing * > richRing_plus_Outside)
Here the ring is fitted with Taubin algorithm from A. Ayriyan, G. Ososkov, N. Chernov.
Hash for CbmL1LinkKey.