BmnRoot 26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Loading...
Searching...
No Matches
BmnAcceptanceFunction.h
Go to the documentation of this file.
1/**
2 * \file BmnAcceptanceFunction.h
3 * \author Andrey Lebedev <andrey.lebedev@gsi.de> - original author for CBM experiment
4 * \author Sergey Merts <sergey.merts@gmail.com> - modifications for BMN experiment
5 * \date 2014
6 * \brief Global function to define the track acceptance. Used in QA.
7 */
8
9#ifndef BMNACCEPTANCEFUNCTION_H_
10#define BMNACCEPTANCEFUNCTION_H_
11
12#include "BmnTrackMatch.h"
13#include "CbmMCTrack.h"
14#include "TClonesArray.h"
15#include "TDatabasePDG.h"
16#include "TMath.h"
17// #include <cmath>
18// using std::abs;
19
21{
22 public:
23 static Bool_t AllTrackAcceptanceFunction(const TClonesArray* mcTracks, Int_t index) { return true; }
24
26 {
27 if (index < 0)
28 return false;
29 const CbmMCTrack* mcTrack = static_cast<const CbmMCTrack*>(mcTracks->At(index));
30 const TParticlePDG* particle = TDatabasePDG::Instance()->GetParticle(mcTrack->GetPdgCode());
31 if (particle == NULL)
32 return false;
33 return particle->Charge() < 0;
34 }
35
37 {
38 if (index < 0)
39 return false;
40 const CbmMCTrack* mcTrack = static_cast<const CbmMCTrack*>(mcTracks->At(index));
41 const TParticlePDG* particle = TDatabasePDG::Instance()->GetParticle(mcTrack->GetPdgCode());
42 if (particle == NULL)
43 return false;
44 return particle->Charge() > 0;
45 }
46
48 {
49 if (index < 0)
50 return false;
51 const CbmMCTrack* mcTrack = static_cast<const CbmMCTrack*>(mcTracks->At(index));
52 return (mcTrack->GetMotherId() == -1);
53 }
54
56 {
57 if (index < 0)
58 return false;
59 const CbmMCTrack* mcTrack = static_cast<const CbmMCTrack*>(mcTracks->At(index));
60 return (mcTrack->GetMotherId() == -1) && (mcTrack->GetP() > 1.);
61 }
62
64 {
65 if (index < 0)
66 return false;
67 const CbmMCTrack* mcTrack = static_cast<const CbmMCTrack*>(mcTracks->At(index));
68 return (mcTrack->GetMotherId() != -1);
69 }
70
72 {
73 if (index < 0)
74 return false;
75 const CbmMCTrack* mcTrack = static_cast<const CbmMCTrack*>(mcTracks->At(index));
76 return (TMath::Abs(mcTrack->GetPdgCode()) == 11) && (mcTrack->GetMotherId() == -1);
77 }
78
80 {
81 if (index < 0)
82 return false;
83 const CbmMCTrack* mcTrack = static_cast<const CbmMCTrack*>(mcTracks->At(index));
84 return (TMath::Abs(mcTrack->GetPdgCode()) == 13) && (mcTrack->GetMotherId() == -1);
85 }
86
88 {
89 if (index < 0)
90 return false;
91 const CbmMCTrack* mcTrack = static_cast<const CbmMCTrack*>(mcTracks->At(index));
92 return TMath::Abs(mcTrack->GetPdgCode()) == 11;
93 }
94
96 {
97 if (index < 0)
98 return false;
99 const CbmMCTrack* mcTrack = static_cast<const CbmMCTrack*>(mcTracks->At(index));
100 return TMath::Abs(mcTrack->GetPdgCode()) == 13;
101 }
102
104 {
105 if (index < 0)
106 return false;
107 const CbmMCTrack* mcTrack = static_cast<const CbmMCTrack*>(mcTracks->At(index));
108 return (TMath::Abs(mcTrack->GetPdgCode()) == 2212);
109 }
110
112 {
113 if (index < 0)
114 return false;
115 const CbmMCTrack* mcTrack = static_cast<const CbmMCTrack*>(mcTracks->At(index));
116 return mcTrack->GetPdgCode() == -2212;
117 }
118
120 {
121 if (index < 0)
122 return false;
123 const CbmMCTrack* mcTrack = static_cast<const CbmMCTrack*>(mcTracks->At(index));
124 return (TMath::Abs(mcTrack->GetPdgCode()) == 211);
125 }
126
128 {
129 if (index < 0)
130 return false;
131 const CbmMCTrack* mcTrack = static_cast<const CbmMCTrack*>(mcTracks->At(index));
132 return (mcTrack->GetPdgCode() == 211);
133 }
134
136 {
137 if (index < 0)
138 return false;
139 const CbmMCTrack* mcTrack = static_cast<const CbmMCTrack*>(mcTracks->At(index));
140 return (mcTrack->GetPdgCode() == -211);
141 }
142
144 {
145 if (index < 0)
146 return false;
147 const CbmMCTrack* mcTrack = static_cast<const CbmMCTrack*>(mcTracks->At(index));
148 return (TMath::Abs(mcTrack->GetPdgCode()) == 321);
149 }
150
152 {
153 if (index < 0)
154 return false;
155 const CbmMCTrack* mcTrack = static_cast<const CbmMCTrack*>(mcTracks->At(index));
156 return (mcTrack->GetPdgCode() == 321);
157 }
158
160 {
161 if (index < 0)
162 return false;
163 const CbmMCTrack* mcTrack = static_cast<const CbmMCTrack*>(mcTracks->At(index));
164 return (mcTrack->GetPdgCode() == -321);
165 }
166
167 static Bool_t AllRingAcceptanceFunction(const TClonesArray* mcTracks, Int_t index, Int_t nofHitsInRing)
168 {
169 return true;
170 }
171
172 static Bool_t AllReferenceRingAcceptanceFunction(const TClonesArray* mcTracks, Int_t index, Int_t nofHitsInRing)
173 {
174 if (index < 0)
175 return false;
176 const CbmMCTrack* mcTrack = static_cast<const CbmMCTrack*>(mcTracks->At(index));
177 return (mcTrack->GetMotherId() == -1) && (mcTrack->GetP() > 1.) && (nofHitsInRing >= 15);
178 }
179
180 static Bool_t PrimaryElectronRingAcceptanceFunction(const TClonesArray* mcTracks, Int_t index, Int_t nofHitsInRing)
181 {
182 if (index < 0)
183 return false;
184 const CbmMCTrack* mcTrack = static_cast<const CbmMCTrack*>(mcTracks->At(index));
185 return (mcTrack->GetMotherId() == -1) && (TMath::Abs(mcTrack->GetPdgCode()) == 11);
186 }
187
189 Int_t index,
190 Int_t nofHitsInRing)
191 {
192 if (index < 0)
193 return false;
194 const CbmMCTrack* mcTrack = static_cast<const CbmMCTrack*>(mcTracks->At(index));
195 return (mcTrack->GetMotherId() == -1) && (TMath::Abs(mcTrack->GetPdgCode()) == 11) && (mcTrack->GetP() > 1.)
196 && (nofHitsInRing >= 15);
197 }
198
199 static Bool_t PionRingAcceptanceFunction(const TClonesArray* mcTracks, Int_t index, Int_t nofHitsInRing)
200 {
201 if (index < 0)
202 return false;
203 const CbmMCTrack* mcTrack = static_cast<const CbmMCTrack*>(mcTracks->At(index));
204 return (TMath::Abs(mcTrack->GetPdgCode()) == 211);
205 }
206
207 static Bool_t PionReferenceRingAcceptanceFunction(const TClonesArray* mcTracks, Int_t index, Int_t nofHitsInRing)
208 {
209 if (index < 0)
210 return false;
211 const CbmMCTrack* mcTrack = static_cast<const CbmMCTrack*>(mcTracks->At(index));
212 return (TMath::Abs(mcTrack->GetPdgCode()) == 211) && (mcTrack->GetP() > 1.) && (nofHitsInRing >= 15);
213 }
214
216 const TClonesArray* stsMatches,
217 const TClonesArray* richMatches,
218 Int_t index)
219 {
220 return true;
221 }
222
224 const TClonesArray* stsMatches,
225 const TClonesArray* richMatches,
226 Int_t index)
227 {
228 // const CbmGlobalTrack* gTrack = static_cast<const CbmGlobalTrack*>(globalTracks->At(index));
229 // Int_t stsInd = gTrack->GetStsTrackIndex();
230 // Int_t richInd = gTrack->GetRichRingIndex();
231 // if (stsInd == -1 || richInd == -1) return false;
232 // const BmnTrackMatch* stsMatch = static_cast<const BmnTrackMatch*>(stsMatches->At(stsInd));
233 // const BmnTrackMatch* richMatch = static_cast<const BmnTrackMatch*>(richMatches->At(richInd));
234 // if (NULL == stsMatch || NULL == richMatch) return false;
235 //
236 // if (stsMatch->GetMatchedLink().GetIndex() == richMatch->GetMatchedLink().GetIndex()) return true;
237 return false;
238 }
239
241 const TClonesArray* stsMatches,
242 const TClonesArray* richMatches,
243 Int_t index)
244 {
245 return !TrueMatchPiSuppAcceptanceFunction(globalTracks, stsMatches, richMatches, index);
246 }
247};
248
249#endif /* BMNACCEPTANCEFUNCTION_H_ */
bool Bool_t
int Int_t
static Bool_t KaonMinusTrackAcceptanceFunction(const TClonesArray *mcTracks, Int_t index)
static Bool_t PrimaryElectronRingAcceptanceFunction(const TClonesArray *mcTracks, Int_t index, Int_t nofHitsInRing)
static Bool_t SecondaryTrackAcceptanceFunction(const TClonesArray *mcTracks, Int_t index)
static Bool_t PositiveTrackAcceptanceFunction(const TClonesArray *mcTracks, Int_t index)
static Bool_t PrimaryTrackAcceptanceFunction(const TClonesArray *mcTracks, Int_t index)
static Bool_t PrimaryElectronReferenceRingAcceptanceFunction(const TClonesArray *mcTracks, Int_t index, Int_t nofHitsInRing)
static Bool_t AllTrackAcceptanceFunction(const TClonesArray *mcTracks, Int_t index)
static Bool_t KaonTrackAcceptanceFunction(const TClonesArray *mcTracks, Int_t index)
static Bool_t WrongMatchPiSuppAcceptanceFunction(const TClonesArray *globalTracks, const TClonesArray *stsMatches, const TClonesArray *richMatches, Int_t index)
static Bool_t AllPiSuppAcceptanceFunction(const TClonesArray *globalTracks, const TClonesArray *stsMatches, const TClonesArray *richMatches, Int_t index)
static Bool_t NegativeTrackAcceptanceFunction(const TClonesArray *mcTracks, Int_t index)
static Bool_t PrimaryElectronTrackAcceptanceFunction(const TClonesArray *mcTracks, Int_t index)
static Bool_t PionMinusTrackAcceptanceFunction(const TClonesArray *mcTracks, Int_t index)
static Bool_t ElectronTrackAcceptanceFunction(const TClonesArray *mcTracks, Int_t index)
static Bool_t KaonPlusTrackAcceptanceFunction(const TClonesArray *mcTracks, Int_t index)
static Bool_t ProtonTrackAcceptanceFunction(const TClonesArray *mcTracks, Int_t index)
static Bool_t PionTrackAcceptanceFunction(const TClonesArray *mcTracks, Int_t index)
static Bool_t AllRingAcceptanceFunction(const TClonesArray *mcTracks, Int_t index, Int_t nofHitsInRing)
static Bool_t PionPlusTrackAcceptanceFunction(const TClonesArray *mcTracks, Int_t index)
static Bool_t MuonTrackAcceptanceFunction(const TClonesArray *mcTracks, Int_t index)
static Bool_t PrimaryMuonTrackAcceptanceFunction(const TClonesArray *mcTracks, Int_t index)
static Bool_t ReferenceTrackAcceptanceFunction(const TClonesArray *mcTracks, Int_t index)
static Bool_t AntiProtonTrackAcceptanceFunction(const TClonesArray *mcTracks, Int_t index)
static Bool_t PionReferenceRingAcceptanceFunction(const TClonesArray *mcTracks, Int_t index, Int_t nofHitsInRing)
static Bool_t AllReferenceRingAcceptanceFunction(const TClonesArray *mcTracks, Int_t index, Int_t nofHitsInRing)
static Bool_t PionRingAcceptanceFunction(const TClonesArray *mcTracks, Int_t index, Int_t nofHitsInRing)
static Bool_t TrueMatchPiSuppAcceptanceFunction(const TClonesArray *globalTracks, const TClonesArray *stsMatches, const TClonesArray *richMatches, Int_t index)
CbmMCTrack.h.
Definition CbmMCTrack.h:26
Int_t GetMotherId() const
Definition CbmMCTrack.h:57
Double_t GetP() const
Definition CbmMCTrack.h:68
Int_t GetPdgCode() const
Accessors.
Definition CbmMCTrack.h:56
static TDatabasePDG * Instance()
TParticlePDG * GetParticle(const char *name) const
TObject * At(Int_t idx) const override
Double_t Charge() const
Double_t Abs(Double_t d)