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
18#include "TH2D.h"
19#include <TClonesArray.h>
20
21#include "KFParticle.h"
22#include "LmvmKinePar.h"
23
25
26using namespace std;
27
29
30public:
31 //***** brief Standard constructor.
33 //***** brief Standard destructor.
35
36
37 void Init(double OA, double IM);
38 void InitHistograms();
39 void Finish();
40
41 void Exec(int fEventNumDP, double OpeningAngleCut, double GammaInvMassCut, int RealPID);
42
43 void SaveOutsideTracks(CbmMCTrack* mcTrack1, CbmStsTrack* stsTrack, double charge, int stsInd, int richInd,
44 int stsMcTrackId, CbmRichRing* RING);
45
46 void SaveTargetTracks(CbmMCTrack* mcTrack1, CbmStsTrack* stsTrack, TVector3 refmom, double charge, int stsInd,
47 int richInd, int stsMcTrackId, CbmRichRing* RING);
48
49 int FindInRich(int richInd, int stsMcTrackId);
50
51 int CheckIfElectron(CbmRichRing* ring, double momentum);
52
53 std::vector<TVector3> SaveAllHits(CbmStsTrack* track);
54
55 void FindGammasTarget(int EventNumMan, double AngleCut, double InvMassCut, int RealPID,
56 vector<CbmMCTrack*> MCtracks_minus, vector<CbmMCTrack*> MCtracks_plus,
57 vector<CbmStsTrack*> StsTrack_minus, vector<CbmStsTrack*> StsTrack_plus,
58 vector<TVector3> Momenta_minus, vector<TVector3> Momenta_plus, std::vector<int> Rings_minus,
59 std::vector<int> Rings_plus, std::vector<int> stsIndex_minus, std::vector<int> stsIndex_plus,
60 vector<CbmRichRing*> richRing_minus, vector<CbmRichRing*> richRing_plus);
61
62 void FindGammasOutside(int EventNumMan, double AngleCut, double InvMassCut, int RealPID,
63 vector<CbmMCTrack*> MCtracks_minus_Outside, vector<CbmMCTrack*> MCtracks_plus_Outside,
64 vector<CbmStsTrack*> StsTrack_minus_Outside, vector<CbmStsTrack*> StsTrack_plus_Outside,
65 std::vector<int> Rings_minus_Outside, std::vector<int> Rings_plus_Outside,
66 std::vector<int> stsIndex_minus_Outside, std::vector<int> stsIndex_plus_Outside,
67 vector<CbmRichRing*> richRing_minus_Outside, vector<CbmRichRing*> richRing_plus_Outside);
68
69
70 double CalculatePlaneAngle_last_fromHits(std::vector<TVector3> track_1, std::vector<TVector3> track_2);
71
73
75
76 void CDP_likesign_Mixing_Target(double AngleCut, double InvMassCut);
77
78 void CDP_likesign_Mixing_Outside(double AngleCut, double InvMassCut);
79
80 void CDP_Mixing_Target(double AngleCut, double InvMassCut);
81
82 void CDP_Mixing_Outside(double AngleCut, double InvMassCut);
83
84
85private:
92 std::vector<std::vector<double>> corr_all;
93 std::vector<std::vector<double>> corr_two;
94 std::vector<std::vector<double>> corr_onetwo;
96
97
98 TClonesArray* fMcTracks;
99 TClonesArray* fGlobalTracks;
100 TClonesArray* fStsTracks;
101 TClonesArray* fStsTrackMatches;
102 TClonesArray* fRichProjections;
103 TClonesArray* fRichRings;
104 TClonesArray* fRichRingMatches;
105 TClonesArray* fRichHits;
106 TClonesArray* fArrayMvdHit;
107 TClonesArray* fArrayStsHit;
108
111
113
114 // charged tracks from outside
115 vector<CbmStsTrack*> VStsTrack_minus_Outside;
116 vector<CbmMCTrack*> VMCtracks_minus_Outside;
117 std::vector<int> VRings_minus_Outside;
118 std::vector<int> VStsIndex_minus_Outside;
119 vector<CbmRichRing*> VRichRing_minus_Outside;
120
121 vector<CbmStsTrack*> VStsTrack_plus_Outside;
122 vector<CbmMCTrack*> VMCtracks_plus_Outside;
123 std::vector<int> VRings_plus_Outside;
124 std::vector<int> VStsIndex_plus_Outside;
125 vector<CbmRichRing*> VRichRing_plus_Outside;
126
127
128 // charged tracks from the target
129 vector<CbmMCTrack*> VMCtracks_minus_Target;
130 vector<CbmStsTrack*> VStsTrack_minus_Target;
131 vector<TVector3> VMomenta_minus_Target;
132 std::vector<int> VRings_minus_Target;
133 std::vector<int> VStsIndex_minus_Target;
134 vector<CbmRichRing*> VRichRing_minus_Target;
135
136 vector<CbmMCTrack*> VMCtracks_plus_Target;
137 vector<CbmStsTrack*> VStsTrack_plus_Target;
138 vector<TVector3> VMomenta_plus_Target;
139 std::vector<int> VRings_plus_Target;
140 std::vector<int> VStsIndex_plus_Target;
141 vector<CbmRichRing*> VRichRing_plus_Target;
142
143
144 // CDP_LK_EMT Target
145 std::vector<TVector3> CDP_LK_EMT_momenta_minus_Target;
147 std::vector<CbmStsTrack*> CDP_LK_EMT_STS_minus_Target;
149
150 std::vector<TVector3> CDP_LK_EMT_momenta_plus_Target;
152 std::vector<CbmStsTrack*> CDP_LK_EMT_STS_plus_Target;
154
155 // CDP_LK_EMT Outside
157 std::vector<CbmStsTrack*> CDP_LK_EMT_STS_minus_Outside;
159
161 std::vector<CbmStsTrack*> CDP_LK_EMT_STS_plus_Outside;
163
164
165 // CDP_EMT Target
167 std::vector<TVector3> CDP_EMT_momenta_minus_Target;
169 std::vector<std::vector<TVector3>> CDP_EMT_Hits_minus_Target;
170
172 std::vector<TVector3> CDP_EMT_momenta_plus_Target;
174 std::vector<std::vector<TVector3>> CDP_EMT_Hits_plus_Target;
175
176 // CDP_EMT Outside
178 std::vector<CbmStsTrack*> CDP_EMT_momenta_minus_Outside;
179 std::vector<KFParticle> CDP_EMT_KFTrack_minus_Outside;
181 std::vector<std::vector<TVector3>> CDP_EMT_Hits_minus_Outside;
182
184 std::vector<CbmStsTrack*> CDP_EMT_momenta_plus_Outside;
185 std::vector<KFParticle> CDP_EMT_KFTrack_plus_Outside;
187 std::vector<std::vector<TVector3>> CDP_EMT_Hits_plus_Outside;
188
189
190 // histograms
191 // Target
195
196 // Outside
200
201 // Both
202 vector<TH1*> fHistoList_dp_Both;
209
210
224
237
250
251
252 // Target => all
270
271 // Target => two
289
290 // Target => onetwo
308
309
310 // Outside => all
328
329 // Outside => two
347
348 // Outside => onetwo
366
367
368 // Both => all
386
387 // Both => two
405
406 // Both => onetwo
424
425
426 // EMT CDP Target
430
431 // EMT CDP Outside
435
436 // EMT CDP Both
440
441
447
453
459
460
461 //***** brief Copy constructor.
463
464 //***** brief Assignment operator.
466
467
469};
470
471#endif
Here the ring is fitted with Taubin algorithm from A. Ayriyan, G. Ososkov, N. Chernov.
Data class for STS tracks.
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.