CbmRoot
Loading...
Searching...
No Matches
CbmLitAcceptanceFunction.h
Go to the documentation of this file.
1/* Copyright (C) 2014-2017 GSI/JINR-LIT, Darmstadt/Dubna
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Andrey Lebedev [committer], Timur Ablyazimov */
4
12#ifndef CBMLITACCEPTANCEFUNCTION_H_
13#define CBMLITACCEPTANCEFUNCTION_H_
14
15#include "CbmGlobalTrack.h"
16#include "CbmMCDataArray.h"
17#include "CbmMCTrack.h"
18#include "CbmTrackMatchNew.h"
19#include "TClonesArray.h"
20#include "TDatabasePDG.h"
21#include "TMCProcess.h"
22#include "TMath.h"
23//#include <cmath>
24//using std::abs;
25
26
28 public:
29 static Bool_t AllTrackAcceptanceFunction(CbmMCDataArray* /*mcTracks*/, Int_t /*eventNo*/, Int_t /*index*/)
30 {
31 return true;
32 }
33
34 static Bool_t NegativeTrackAcceptanceFunction(CbmMCDataArray* mcTracks, Int_t eventNo, Int_t index)
35 {
36 if (index < 0) return false;
37 const CbmMCTrack* mcTrack = static_cast<const CbmMCTrack*>(mcTracks->Get(0, eventNo, index));
38 const TParticlePDG* particle = TDatabasePDG::Instance()->GetParticle(mcTrack->GetPdgCode());
39 if (particle == NULL) return false;
40 return particle->Charge() < 0;
41 }
42
43 static Bool_t PositiveTrackAcceptanceFunction(CbmMCDataArray* mcTracks, Int_t eventNo, Int_t index)
44 {
45 if (index < 0) return false;
46 const CbmMCTrack* mcTrack = static_cast<const CbmMCTrack*>(mcTracks->Get(0, eventNo, index));
47 const TParticlePDG* particle = TDatabasePDG::Instance()->GetParticle(mcTrack->GetPdgCode());
48 if (particle == NULL) return false;
49 return particle->Charge() > 0;
50 }
51
52 static Bool_t PrimaryTrackAcceptanceFunction(CbmMCDataArray* mcTracks, Int_t eventNo, Int_t index)
53 {
54 if (index < 0) return false;
55 const CbmMCTrack* mcTrack = static_cast<const CbmMCTrack*>(mcTracks->Get(0, eventNo, index));
56 return (mcTrack->GetMotherId() == -1);
57 //return (mcTrack->GetGeantProcessId() == kPPrimary);
58 }
59
60 static Bool_t ReferenceTrackAcceptanceFunction(CbmMCDataArray* mcTracks, Int_t eventNo, Int_t index)
61 {
62 if (index < 0) return false;
63 const CbmMCTrack* mcTrack = static_cast<const CbmMCTrack*>(mcTracks->Get(0, eventNo, index));
64 return (mcTrack->GetMotherId() == -1) && (mcTrack->GetP() > 1.);
65 }
66
67 static Bool_t SecondaryTrackAcceptanceFunction(CbmMCDataArray* mcTracks, Int_t eventNo, Int_t index)
68 {
69 if (index < 0) return false;
70 const CbmMCTrack* mcTrack = static_cast<const CbmMCTrack*>(mcTracks->Get(0, eventNo, index));
71 return (mcTrack->GetMotherId() != -1);
72 }
73
74 static Bool_t PrimaryElectronTrackAcceptanceFunction(CbmMCDataArray* mcTracks, Int_t eventNo, Int_t index)
75 {
76 if (index < 0) return false;
77 const CbmMCTrack* mcTrack = static_cast<const CbmMCTrack*>(mcTracks->Get(0, eventNo, index));
78 //return (TMath::Abs(mcTrack->GetPdgCode()) == 11) && (mcTrack->GetMotherId() == -1);
79 return (TMath::Abs(mcTrack->GetPdgCode()) == 11) && (mcTrack->GetGeantProcessId() == kPPrimary);
80 }
81
82 static Bool_t PrimaryMuonTrackAcceptanceFunction(CbmMCDataArray* mcTracks, Int_t eventNo, Int_t index)
83 {
84 if (index < 0) return false;
85 const CbmMCTrack* mcTrack = static_cast<const CbmMCTrack*>(mcTracks->Get(0, eventNo, index));
86 //return (TMath::Abs(mcTrack->GetPdgCode()) == 13) && (mcTrack->GetMotherId() == -1);
87 return (TMath::Abs(mcTrack->GetPdgCode()) == 13) && (mcTrack->GetGeantProcessId() == kPPrimary);
88 }
89
90 static Bool_t ElectronTrackAcceptanceFunction(CbmMCDataArray* mcTracks, Int_t eventNo, Int_t index)
91 {
92 if (index < 0) return false;
93 const CbmMCTrack* mcTrack = static_cast<const CbmMCTrack*>(mcTracks->Get(0, eventNo, index));
94 return TMath::Abs(mcTrack->GetPdgCode()) == 11;
95 }
96
97 static Bool_t MuonTrackAcceptanceFunction(CbmMCDataArray* mcTracks, Int_t eventNo, Int_t index)
98 {
99 if (index < 0) return false;
100 const CbmMCTrack* mcTrack = static_cast<const CbmMCTrack*>(mcTracks->Get(0, eventNo, index));
101 return TMath::Abs(mcTrack->GetPdgCode()) == 13;
102 }
103
104 static Bool_t ProtonTrackAcceptanceFunction(CbmMCDataArray* mcTracks, Int_t eventNo, Int_t index)
105 {
106 if (index < 0) return false;
107 const CbmMCTrack* mcTrack = static_cast<const CbmMCTrack*>(mcTracks->Get(0, eventNo, index));
108 return (TMath::Abs(mcTrack->GetPdgCode()) == 2212);
109 }
110
111 static Bool_t AntiProtonTrackAcceptanceFunction(CbmMCDataArray* mcTracks, Int_t eventNo, Int_t index)
112 {
113 if (index < 0) return false;
114 const CbmMCTrack* mcTrack = static_cast<const CbmMCTrack*>(mcTracks->Get(0, eventNo, index));
115 return mcTrack->GetPdgCode() == -2212;
116 }
117
118 static Bool_t PionTrackAcceptanceFunction(CbmMCDataArray* mcTracks, Int_t eventNo, Int_t index)
119 {
120 if (index < 0) return false;
121 const CbmMCTrack* mcTrack = static_cast<const CbmMCTrack*>(mcTracks->Get(0, eventNo, index));
122 return (TMath::Abs(mcTrack->GetPdgCode()) == 211);
123 }
124
125 static Bool_t PionPlusTrackAcceptanceFunction(CbmMCDataArray* mcTracks, Int_t eventNo, Int_t index)
126 {
127 if (index < 0) return false;
128 const CbmMCTrack* mcTrack = static_cast<const CbmMCTrack*>(mcTracks->Get(0, eventNo, index));
129 return (mcTrack->GetPdgCode() == 211);
130 }
131
132 static Bool_t PionMinusTrackAcceptanceFunction(CbmMCDataArray* mcTracks, Int_t eventNo, Int_t index)
133 {
134 if (index < 0) return false;
135 const CbmMCTrack* mcTrack = static_cast<const CbmMCTrack*>(mcTracks->Get(0, eventNo, index));
136 return (mcTrack->GetPdgCode() == -211);
137 }
138
139 static Bool_t KaonTrackAcceptanceFunction(CbmMCDataArray* mcTracks, Int_t eventNo, Int_t index)
140 {
141 if (index < 0) return false;
142 const CbmMCTrack* mcTrack = static_cast<const CbmMCTrack*>(mcTracks->Get(0, eventNo, index));
143 return (TMath::Abs(mcTrack->GetPdgCode()) == 321);
144 }
145
146 static Bool_t KaonPlusTrackAcceptanceFunction(CbmMCDataArray* mcTracks, Int_t eventNo, Int_t index)
147 {
148 if (index < 0) return false;
149 const CbmMCTrack* mcTrack = static_cast<const CbmMCTrack*>(mcTracks->Get(0, eventNo, index));
150 return (mcTrack->GetPdgCode() == 321);
151 }
152
153 static Bool_t KaonMinusTrackAcceptanceFunction(CbmMCDataArray* mcTracks, Int_t eventNo, Int_t index)
154 {
155 if (index < 0) return false;
156 const CbmMCTrack* mcTrack = static_cast<const CbmMCTrack*>(mcTracks->Get(0, eventNo, index));
157 return (mcTrack->GetPdgCode() == -321);
158 }
159
160 static Bool_t AllRingAcceptanceFunction(CbmMCDataArray* /*mcTracks*/, Int_t /*eventNo*/, Int_t /*index*/,
161 Int_t /*nofHitsInRing*/)
162 {
163 return true;
164 }
165
166 static Bool_t AllReferenceRingAcceptanceFunction(CbmMCDataArray* mcTracks, Int_t eventNo, Int_t index,
167 Int_t nofHitsInRing)
168 {
169 if (index < 0) return false;
170 const CbmMCTrack* mcTrack = static_cast<const CbmMCTrack*>(mcTracks->Get(0, eventNo, index));
171 return (mcTrack->GetMotherId() == -1) && (nofHitsInRing >= 15);
172 }
173
174 static Bool_t PrimaryElectronRingAcceptanceFunction(CbmMCDataArray* mcTracks, Int_t eventNo, Int_t index,
175 Int_t /*nofHitsInRing*/)
176 {
177 if (index < 0) return false;
178 const CbmMCTrack* mcTrack = static_cast<const CbmMCTrack*>(mcTracks->Get(0, eventNo, index));
179 //return (mcTrack->GetMotherId() == -1) && (TMath::Abs(mcTrack->GetPdgCode()) == 11);
180 return (mcTrack->GetGeantProcessId() == kPPrimary) && (TMath::Abs(mcTrack->GetPdgCode()) == 11);
181 }
182
184 Int_t nofHitsInRing)
185 {
186 if (index < 0) return false;
187 const CbmMCTrack* mcTrack = static_cast<const CbmMCTrack*>(mcTracks->Get(0, eventNo, index));
188 // return (mcTrack->GetMotherId() == -1) && (TMath::Abs(mcTrack->GetPdgCode()) == 11) && (nofHitsInRing >= 15);
189 return (mcTrack->GetGeantProcessId() == kPPrimary) && (TMath::Abs(mcTrack->GetPdgCode()) == 11)
190 && (nofHitsInRing >= 15);
191 }
192
193 static Bool_t PionRingAcceptanceFunction(CbmMCDataArray* mcTracks, Int_t eventNo, Int_t index,
194 Int_t /*nofHitsInRing*/)
195 {
196 if (index < 0) return false;
197 const CbmMCTrack* mcTrack = static_cast<const CbmMCTrack*>(mcTracks->Get(0, eventNo, index));
198 return (TMath::Abs(mcTrack->GetPdgCode()) == 211);
199 }
200
201 static Bool_t PionReferenceRingAcceptanceFunction(CbmMCDataArray* mcTracks, Int_t eventNo, Int_t index,
202 Int_t nofHitsInRing)
203 {
204 if (index < 0) return false;
205 const CbmMCTrack* mcTrack = static_cast<const CbmMCTrack*>(mcTracks->Get(0, eventNo, index));
206 return (TMath::Abs(mcTrack->GetPdgCode()) == 211) && (nofHitsInRing >= 15);
207 }
208
209 static Bool_t AllPiSuppAcceptanceFunction(const TClonesArray* /*globalTracks*/, const TClonesArray* /*stsMatches*/,
210 const TClonesArray* /*richMatches*/, Int_t /*index*/)
211 {
212 return true;
213 }
214
215 static Bool_t TrueMatchPiSuppAcceptanceFunction(const TClonesArray* globalTracks, const TClonesArray* stsMatches,
216 const TClonesArray* richMatches, Int_t index)
217 {
218 const CbmGlobalTrack* gTrack = static_cast<const CbmGlobalTrack*>(globalTracks->At(index));
219 Int_t stsInd = gTrack->GetStsTrackIndex();
220 Int_t richInd = gTrack->GetRichRingIndex();
221 if (stsInd == -1 || richInd == -1) return false;
222 const CbmTrackMatchNew* stsMatch = static_cast<const CbmTrackMatchNew*>(stsMatches->At(stsInd));
223 const CbmTrackMatchNew* richMatch = static_cast<const CbmTrackMatchNew*>(richMatches->At(richInd));
224 if (NULL == stsMatch || NULL == richMatch) return false;
225
226 if (stsMatch->GetMatchedLink().GetIndex() == richMatch->GetMatchedLink().GetIndex()) return true;
227 return false;
228 }
229
230 static Bool_t WrongMatchPiSuppAcceptanceFunction(const TClonesArray* globalTracks, const TClonesArray* stsMatches,
231 const TClonesArray* richMatches, Int_t index)
232 {
233 return !TrueMatchPiSuppAcceptanceFunction(globalTracks, stsMatches, richMatches, index);
234 }
235};
236
237#endif /* CBMLITACCEPTANCEFUNCTION_H_ */
static vector< vector< QAMCTrack > > mcTracks
int32_t GetStsTrackIndex() const
int32_t GetRichRingIndex() const
static Bool_t KaonTrackAcceptanceFunction(CbmMCDataArray *mcTracks, Int_t eventNo, Int_t index)
static Bool_t KaonMinusTrackAcceptanceFunction(CbmMCDataArray *mcTracks, Int_t eventNo, Int_t index)
static Bool_t PionRingAcceptanceFunction(CbmMCDataArray *mcTracks, Int_t eventNo, Int_t index, Int_t)
static Bool_t PionMinusTrackAcceptanceFunction(CbmMCDataArray *mcTracks, Int_t eventNo, Int_t index)
static Bool_t AllTrackAcceptanceFunction(CbmMCDataArray *, Int_t, Int_t)
static Bool_t PionTrackAcceptanceFunction(CbmMCDataArray *mcTracks, Int_t eventNo, Int_t index)
static Bool_t NegativeTrackAcceptanceFunction(CbmMCDataArray *mcTracks, Int_t eventNo, Int_t index)
static Bool_t MuonTrackAcceptanceFunction(CbmMCDataArray *mcTracks, Int_t eventNo, Int_t index)
static Bool_t TrueMatchPiSuppAcceptanceFunction(const TClonesArray *globalTracks, const TClonesArray *stsMatches, const TClonesArray *richMatches, Int_t index)
static Bool_t PionPlusTrackAcceptanceFunction(CbmMCDataArray *mcTracks, Int_t eventNo, Int_t index)
static Bool_t SecondaryTrackAcceptanceFunction(CbmMCDataArray *mcTracks, Int_t eventNo, Int_t index)
static Bool_t AllPiSuppAcceptanceFunction(const TClonesArray *, const TClonesArray *, const TClonesArray *, Int_t)
static Bool_t KaonPlusTrackAcceptanceFunction(CbmMCDataArray *mcTracks, Int_t eventNo, Int_t index)
static Bool_t ProtonTrackAcceptanceFunction(CbmMCDataArray *mcTracks, Int_t eventNo, Int_t index)
static Bool_t PrimaryElectronRingAcceptanceFunction(CbmMCDataArray *mcTracks, Int_t eventNo, Int_t index, Int_t)
static Bool_t PrimaryElectronTrackAcceptanceFunction(CbmMCDataArray *mcTracks, Int_t eventNo, Int_t index)
static Bool_t AllRingAcceptanceFunction(CbmMCDataArray *, Int_t, Int_t, Int_t)
static Bool_t PositiveTrackAcceptanceFunction(CbmMCDataArray *mcTracks, Int_t eventNo, Int_t index)
static Bool_t PrimaryMuonTrackAcceptanceFunction(CbmMCDataArray *mcTracks, Int_t eventNo, Int_t index)
static Bool_t WrongMatchPiSuppAcceptanceFunction(const TClonesArray *globalTracks, const TClonesArray *stsMatches, const TClonesArray *richMatches, Int_t index)
static Bool_t PionReferenceRingAcceptanceFunction(CbmMCDataArray *mcTracks, Int_t eventNo, Int_t index, Int_t nofHitsInRing)
static Bool_t ReferenceTrackAcceptanceFunction(CbmMCDataArray *mcTracks, Int_t eventNo, Int_t index)
static Bool_t AllReferenceRingAcceptanceFunction(CbmMCDataArray *mcTracks, Int_t eventNo, Int_t index, Int_t nofHitsInRing)
static Bool_t AntiProtonTrackAcceptanceFunction(CbmMCDataArray *mcTracks, Int_t eventNo, Int_t index)
static Bool_t PrimaryTrackAcceptanceFunction(CbmMCDataArray *mcTracks, Int_t eventNo, Int_t index)
static Bool_t PrimaryElectronReferenceRingAcceptanceFunction(CbmMCDataArray *mcTracks, Int_t eventNo, Int_t index, Int_t nofHitsInRing)
static Bool_t ElectronTrackAcceptanceFunction(CbmMCDataArray *mcTracks, Int_t eventNo, Int_t index)
Access to a MC data branch for time-based analysis.
double GetP() const
Definition CbmMCTrack.h:98
uint32_t GetGeantProcessId() const
Definition CbmMCTrack.h:67
int32_t GetMotherId() const
Definition CbmMCTrack.h:69
int32_t GetPdgCode() const
Definition CbmMCTrack.h:68
const CbmLink & GetMatchedLink() const
Definition CbmMatch.h:41