]>
Commit | Line | Data |
---|---|---|
b2a297fa | 1 | #ifndef ALIDIELECTRONVARMANAGER_H |
2 | #define ALIDIELECTRONVARMANAGER_H | |
3 | /* Copyright(c) 1998-2009, ALICE Experiment at CERN, All rights reserved. * | |
4 | * See cxx source for full Copyright notice */ | |
5 | ||
6 | //############################################################# | |
7 | //# # | |
8 | //# Class AliDielectronVarManager # | |
9 | //# Class for management of available variables # | |
10 | //# # | |
11 | //# Authors: # | |
12 | //# Anton Andronic, GSI / A.Andronic@gsi.de # | |
13 | //# Ionut C. Arsene, GSI / I.C.Arsene@gsi.de # | |
14 | //# Julian Book, Uni Ffm / Julian.Book@cern.ch # | |
572b0139 | 15 | //# Markus Köhler, GSI / M.Koehler@gsi.de # |
6551594b | 16 | //# Frederick Kramer, Uni Ffm / Frederick.Kramer@cern.ch # |
b2a297fa | 17 | //# Magnus Mager, CERN / Magnus.Mager@cern.ch # |
18 | //# WooJin J. Park, GSI / W.J.Park@gsi.de # | |
19 | //# Jens Wiechula, Uni HD / Jens.Wiechula@cern.ch # | |
20 | //# # | |
21 | //############################################################# | |
22 | ||
23 | ||
24 | #include <TNamed.h> | |
25 | ||
26 | #include <AliVEvent.h> | |
27 | #include <AliESDEvent.h> | |
6551594b | 28 | #include <AliAODEvent.h> |
29 | #include <AliMCEvent.h> | |
30 | #include <AliVVertex.h> | |
31 | #include <AliESDVertex.h> | |
b2a297fa | 32 | |
33 | #include <AliVParticle.h> | |
b2a297fa | 34 | #include <AliESDtrack.h> |
35 | #include <AliAODTrack.h> | |
572b0139 | 36 | #include <AliAODPid.h> |
b2a297fa | 37 | #include <AliKFParticle.h> |
572b0139 | 38 | #include <AliKFVertex.h> |
b2a297fa | 39 | #include <AliMCParticle.h> |
40 | #include <AliAODMCParticle.h> | |
41 | #include <AliVTrack.h> // ? | |
42 | ||
6551594b | 43 | #include <AliExternalTrackParam.h> |
44 | #include <AliESDpid.h> | |
45 | ||
b2a297fa | 46 | #include "AliDielectronPair.h" |
47 | ||
48 | class AliVEvent; | |
49 | ||
50 | //________________________________________________________________ | |
51 | class AliDielectronVarManager : public TNamed { | |
52 | ||
53 | public: | |
54 | ||
55 | // Particle specific variables | |
56 | enum ValueTypes { | |
57 | kPx = 0, // px | |
58 | kPy, // py | |
59 | kPz, // pz | |
60 | kPt, // transverse momentum | |
61 | kP, // momentum | |
62 | kXv, // vertex position in x | |
63 | kYv, // vertex position in y | |
64 | kZv, // vertex position in z | |
65 | kOneOverPt, // 1/pt | |
66 | kPhi, // phi angle | |
67 | kTheta, // theta angle | |
68 | kEta, // pseudo-rapidity | |
69 | kY, // rapidity | |
70 | kE, // energy | |
71 | kM, // mass | |
72 | kCharge, // charge | |
73 | kNclsITS, // number of clusters assigned in the ITS | |
74 | kNclsTPC, // number of clusters assigned in the TPC | |
75 | kNFclsTPC, // number of findable clusters in the TPC | |
76 | kTPCsignalN, // number of points used for dEdx | |
77 | kNclsTRD, // number of clusters assigned in the TRD | |
78 | kTRDntracklets, // number of TRD tracklets used for tracking/PID TODO: correct getter | |
79 | kTRDpidQuality, // number of TRD tracklets used for PID | |
80 | kImpactParXY, // Impact parameter in XY plane | |
81 | kImpactParZ, // Impact parameter in Z | |
82 | kTrackLength, // Track length | |
83 | kPdgCode, // PDG code | |
84 | kPIn, // momentum at inner wall of TPC (if available), used for PID | |
85 | kTPCsignal, // TPC dE/dx signal | |
572b0139 | 86 | |
6551594b | 87 | kTPCnSigmaEle, // number of sigmas to the dE/dx electron line in the TPC |
572b0139 | 88 | kTPCnSigmaPio, // number of sigmas to the dE/dx pion line in the TPC |
89 | kTPCnSigmaMuo, // number of sigmas to the dE/dx muon line in the TPC | |
90 | kTPCnSigmaKao, // number of sigmas to the dE/dx kaon line in the TPC | |
91 | kTPCnSigmaPro, // number of sigmas to the dE/dx proton line in the TPC | |
92 | ||
93 | kTOFnSigmaPio, // number of sigmas to the pion line in the TOF | |
94 | kTOFnSigmaMuo, // number of sigmas to the muon line in the TOF | |
95 | kTOFnSigmaKao, // number of sigmas to the kaon line in the TOF | |
96 | kTOFnSigmaPro, // number of sigmas to the proton line in the TOF | |
97 | ||
b2a297fa | 98 | kParticleMax, // |
99 | // TODO: kRNClusters ?? | |
100 | // AliDielectronPair specific variables | |
101 | kChi2NDF = kParticleMax, // Chi^2/NDF | |
102 | kDecayLength, // decay length | |
103 | kR, // distance to the origin | |
104 | kOpeningAngle, // opening angle | |
572b0139 | 105 | kLegDist, // distance of the legs |
106 | kLegDistXY, // distance of the legs in XY | |
b2a297fa | 107 | kMerr, // error of mass calculation |
108 | kDCA, // distance of closest approach TODO: not implemented yet | |
109 | kPairType, // type of the pair, like like sign ++ unlikesign ... | |
110 | kPairMax, // | |
111 | // Event specific variables | |
6551594b | 112 | kXvPrim=kPairMax, // prim vertex |
113 | kYvPrim, // prim vertex | |
114 | kZvPrim, // prim vertex | |
115 | kXRes, // primary vertex x-resolution | |
116 | kYRes, // primary vertex y-resolution | |
117 | kZRes, // primary vertex z-resolution | |
b2a297fa | 118 | kNTrk, // number of tracks (or tracklets) |
6551594b | 119 | kTracks, // ESD tracks |
120 | kNevents, // event counter | |
b2a297fa | 121 | kNMaxValues // |
122 | // TODO: (for A+A) ZDCEnergy, impact parameter, Iflag?? | |
123 | }; | |
124 | ||
125 | ||
126 | AliDielectronVarManager(); | |
127 | AliDielectronVarManager(const char* name, const char* title); | |
128 | virtual ~AliDielectronVarManager(); | |
129 | static void Fill(const TObject* particle, Double_t * const values); | |
130 | ||
6551594b | 131 | static void InitESDpid(Int_t type=0); |
572b0139 | 132 | static void SetESDpid(AliESDpid * const pid) {fgESDpid=pid;} |
133 | static AliESDpid* GetESDpid() {return fgESDpid;} | |
134 | static void SetEvent(AliVEvent * const ev); | |
6551594b | 135 | |
b2a297fa | 136 | static const char* GetValueName(Int_t i) { return (i>=0&&i<kNMaxValues)?fgkParticleNames[i]:""; } |
137 | private: | |
138 | ||
139 | static const char* fgkParticleNames[kNMaxValues]; //variable names | |
140 | ||
141 | static void FillVarVParticle(const AliVParticle *particle, Double_t * const values); | |
142 | static void FillVarESDtrack(const AliESDtrack *particle, Double_t * const values); | |
143 | static void FillVarAODTrack(const AliAODTrack *particle, Double_t * const values); | |
572b0139 | 144 | static void FillVarMCParticle(const AliMCParticle *particle, Double_t * const values); |
b2a297fa | 145 | static void FillVarAODMCParticle(const AliAODMCParticle *particle, Double_t * const values); |
146 | static void FillVarDielectronPair(const AliDielectronPair *pair, Double_t * const values); | |
6551594b | 147 | static void FillVarVEvent(const AliVEvent *event, Double_t * const values); |
148 | static void FillVarESDEvent(const AliESDEvent *event, Double_t * const values); | |
149 | static void FillVarAODEvent(const AliAODEvent *event, Double_t * const values); | |
150 | static void FillVarMCEvent(const AliMCEvent *event, Double_t * const values); | |
151 | ||
152 | static AliESDpid* fgESDpid; // ESD pid object | |
153 | static AliVEvent* fgEvent; // current event pointer | |
572b0139 | 154 | static AliKFVertex *fgKFVertex; // kf vertex |
155 | ||
b2a297fa | 156 | AliDielectronVarManager(const AliDielectronVarManager &c); |
157 | AliDielectronVarManager &operator=(const AliDielectronVarManager &c); | |
158 | ||
159 | ClassDef(AliDielectronVarManager,1); | |
160 | }; | |
161 | ||
162 | ||
163 | //Inline functions | |
6551594b | 164 | inline void AliDielectronVarManager::Fill(const TObject* object, Double_t * const values) |
b2a297fa | 165 | { |
166 | // | |
167 | // Main function to fill all available variables according to the type of particle | |
168 | // | |
169 | ||
6551594b | 170 | if (object->IsA() == AliESDtrack::Class()) FillVarESDtrack(static_cast<const AliESDtrack*>(object), values); |
171 | else if (object->IsA() == AliAODTrack::Class()) FillVarAODTrack(static_cast<const AliAODTrack*>(object), values); | |
172 | else if (object->IsA() == AliMCParticle::Class()) FillVarMCParticle(static_cast<const AliMCParticle*>(object), values); | |
173 | else if (object->IsA() == AliAODMCParticle::Class()) FillVarAODMCParticle(static_cast<const AliAODMCParticle*>(object), values); | |
174 | else if (object->IsA() == AliDielectronPair::Class()) FillVarDielectronPair(static_cast<const AliDielectronPair*>(object), values); | |
175 | ||
176 | // Main function to fill all available variables according to the type of event | |
177 | ||
178 | else if (object->IsA() == AliVEvent::Class()) FillVarVEvent(static_cast<const AliVEvent*>(object), values); | |
179 | else if (object->IsA() == AliESDEvent::Class()) FillVarESDEvent(static_cast<const AliESDEvent*>(object), values); | |
180 | else if (object->IsA() == AliAODEvent::Class()) FillVarAODEvent(static_cast<const AliAODEvent*>(object), values); | |
181 | else if (object->IsA() == AliMCEvent::Class()) FillVarMCEvent(static_cast<const AliMCEvent*>(object), values); | |
182 | // else Error("Fill",Form("Type %s is not supported by AliDielectronVarManager!", object->ClassName())); //TODO: implement without object needed | |
b2a297fa | 183 | } |
184 | ||
185 | inline void AliDielectronVarManager::FillVarVParticle(const AliVParticle *particle, Double_t * const values) | |
186 | { | |
187 | // | |
188 | // Fill track information available in AliVParticle into an array | |
189 | // | |
190 | values[AliDielectronVarManager::kPx] = particle->Px(); | |
191 | values[AliDielectronVarManager::kPy] = particle->Py(); | |
192 | values[AliDielectronVarManager::kPz] = particle->Pz(); | |
193 | values[AliDielectronVarManager::kPt] = particle->Pt(); | |
194 | values[AliDielectronVarManager::kP] = particle->P(); | |
195 | ||
196 | values[AliDielectronVarManager::kXv] = particle->Xv(); | |
197 | values[AliDielectronVarManager::kYv] = particle->Yv(); | |
198 | values[AliDielectronVarManager::kZv] = particle->Zv(); | |
199 | ||
200 | values[AliDielectronVarManager::kOneOverPt] = particle->OneOverPt(); | |
201 | values[AliDielectronVarManager::kPhi] = particle->Phi(); | |
202 | values[AliDielectronVarManager::kTheta] = particle->Theta(); | |
203 | values[AliDielectronVarManager::kEta] = particle->Eta(); | |
204 | values[AliDielectronVarManager::kY] = particle->Y(); | |
205 | ||
206 | values[AliDielectronVarManager::kE] = particle->E(); | |
207 | values[AliDielectronVarManager::kM] = particle->M(); | |
208 | values[AliDielectronVarManager::kCharge] = particle->Charge(); | |
6551594b | 209 | |
210 | if ( fgEvent ) AliDielectronVarManager::Fill(fgEvent, values); | |
b2a297fa | 211 | } |
212 | ||
213 | inline void AliDielectronVarManager::FillVarESDtrack(const AliESDtrack *particle, Double_t * const values) | |
214 | { | |
215 | // | |
216 | // Fill track information available for histogramming into an array | |
217 | // | |
218 | ||
219 | // Fill common AliVParticle interface information | |
220 | FillVarVParticle(particle, values); | |
221 | ||
222 | // Fill AliESDtrack interface specific information | |
223 | values[AliDielectronVarManager::kNclsITS] = particle->GetNcls(0); // TODO: get rid of the plain numbers | |
224 | values[AliDielectronVarManager::kNclsTPC] = particle->GetNcls(1); // TODO: get rid of the plain numbers | |
225 | values[AliDielectronVarManager::kNFclsTPC] = particle->GetTPCNclsF(); | |
226 | values[AliDielectronVarManager::kTPCsignalN] = particle->GetTPCsignalN(); | |
227 | values[AliDielectronVarManager::kNclsTRD] = particle->GetNcls(2); // TODO: get rid of the plain numbers | |
228 | values[AliDielectronVarManager::kTRDntracklets] = particle->GetTRDntracklets(); // TODO: GetTRDtracklets/GetTRDntracklets? | |
229 | values[AliDielectronVarManager::kTRDpidQuality] = particle->GetTRDpidQuality(); | |
230 | ||
231 | Float_t impactParXY, impactParZ; | |
232 | particle->GetImpactParameters(impactParXY, impactParZ); | |
233 | values[AliDielectronVarManager::kImpactParXY] = impactParXY; | |
234 | values[AliDielectronVarManager::kImpactParZ] = impactParZ; | |
235 | ||
236 | values[AliDielectronVarManager::kTrackLength] = particle->GetIntegratedLength(); | |
b2a297fa | 237 | //dEdx information |
238 | Double_t mom = particle->GetP(); | |
239 | const AliExternalTrackParam *in=particle->GetInnerParam(); | |
240 | if (in) mom = in->GetP(); | |
241 | values[AliDielectronVarManager::kPIn]=mom; | |
242 | values[AliDielectronVarManager::kTPCsignal]=particle->GetTPCsignal(); | |
6551594b | 243 | // nsigma to Electron band |
244 | // TODO: for the moment we set the bethe bloch parameters manually | |
245 | // this should be changed in future! | |
246 | values[AliDielectronVarManager::kTPCnSigmaEle]=fgESDpid->NumberOfSigmasTPC(particle,AliPID::kElectron); | |
572b0139 | 247 | values[AliDielectronVarManager::kTPCnSigmaPio]=fgESDpid->NumberOfSigmasTPC(particle,AliPID::kPion); |
248 | values[AliDielectronVarManager::kTPCnSigmaMuo]=fgESDpid->NumberOfSigmasTPC(particle,AliPID::kMuon); | |
249 | values[AliDielectronVarManager::kTPCnSigmaKao]=fgESDpid->NumberOfSigmasTPC(particle,AliPID::kKaon); | |
250 | values[AliDielectronVarManager::kTPCnSigmaPro]=fgESDpid->NumberOfSigmasTPC(particle,AliPID::kProton); | |
251 | ||
252 | Double_t t0=fgESDpid->GetTOFResponse().GetTimeZero(); | |
253 | values[AliDielectronVarManager::kTOFnSigmaPio]=fgESDpid->NumberOfSigmasTOF(particle,AliPID::kPion,t0); | |
254 | values[AliDielectronVarManager::kTOFnSigmaMuo]=fgESDpid->NumberOfSigmasTOF(particle,AliPID::kMuon,t0); | |
255 | values[AliDielectronVarManager::kTOFnSigmaKao]=fgESDpid->NumberOfSigmasTOF(particle,AliPID::kKaon,t0); | |
256 | values[AliDielectronVarManager::kTOFnSigmaPro]=fgESDpid->NumberOfSigmasTOF(particle,AliPID::kProton,t0); | |
b2a297fa | 257 | } |
258 | ||
259 | inline void AliDielectronVarManager::FillVarAODTrack(const AliAODTrack *particle, Double_t * const values) | |
260 | { | |
261 | // | |
262 | // Fill track information available for histogramming into an array | |
263 | // | |
264 | ||
265 | // Fill common AliVParticle interface information | |
266 | FillVarVParticle(particle, values); | |
572b0139 | 267 | |
268 | // Reset AliESDtrack interface specific information | |
269 | values[AliDielectronVarManager::kNclsITS] = 0; | |
270 | values[AliDielectronVarManager::kNclsTPC] = 0; | |
271 | values[AliDielectronVarManager::kNFclsTPC] = 0; | |
272 | values[AliDielectronVarManager::kNclsTRD] = 0; | |
273 | values[AliDielectronVarManager::kTRDntracklets] = 0; | |
274 | values[AliDielectronVarManager::kTRDpidQuality] = 0; | |
275 | ||
276 | //TODO: This is only an approximation!!! | |
277 | values[AliDielectronVarManager::kTPCsignalN] = particle->GetTPCClusterMap().CountBits(); | |
278 | ||
279 | // Fill AliAODTrack interface information | |
b2a297fa | 280 | // ... |
572b0139 | 281 | values[AliDielectronVarManager::kImpactParXY] = particle->DCA(); |
282 | values[AliDielectronVarManager::kImpactParZ] = particle->ZAtDCA(); | |
283 | ||
284 | values[AliDielectronVarManager::kPIn]=0; | |
285 | values[AliDielectronVarManager::kTPCsignal]=0; | |
286 | ||
287 | values[AliDielectronVarManager::kTPCnSigmaEle]=0; | |
288 | values[AliDielectronVarManager::kTPCnSigmaPio]=0; | |
289 | values[AliDielectronVarManager::kTPCnSigmaMuo]=0; | |
290 | values[AliDielectronVarManager::kTPCnSigmaKao]=0; | |
291 | values[AliDielectronVarManager::kTPCnSigmaPro]=0; | |
b2a297fa | 292 | |
572b0139 | 293 | |
294 | AliAODPid *pid=particle->GetDetPid(); | |
295 | if (pid){ | |
296 | Double_t mom =pid->GetTPCmomentum(); | |
297 | //TODO: kTPCsignalN is only an approximation (see above)!! | |
298 | ||
299 | Double_t tpcNsigmaEle=fgESDpid->GetTPCResponse().GetNumberOfSigmas(mom,pid->GetTPCsignal(), | |
300 | TMath::Nint(values[AliDielectronVarManager::kTPCsignalN]) ,AliPID::kElectron); | |
301 | ||
302 | Double_t tpcNsigmaPio=fgESDpid->GetTPCResponse().GetNumberOfSigmas(mom,pid->GetTPCsignal(), | |
303 | TMath::Nint(values[AliDielectronVarManager::kTPCsignalN]),AliPID::kPion); | |
304 | ||
305 | Double_t tpcNsigmaMuo=fgESDpid->GetTPCResponse().GetNumberOfSigmas(mom,pid->GetTPCsignal(), | |
306 | TMath::Nint(values[AliDielectronVarManager::kTPCsignalN]),AliPID::kMuon); | |
307 | ||
308 | Double_t tpcNsigmaKao=fgESDpid->GetTPCResponse().GetNumberOfSigmas(mom,pid->GetTPCsignal(), | |
309 | TMath::Nint(values[AliDielectronVarManager::kTPCsignalN]),AliPID::kKaon); | |
310 | ||
311 | Double_t tpcNsigmaPro=fgESDpid->GetTPCResponse().GetNumberOfSigmas(mom,pid->GetTPCsignal(), | |
312 | TMath::Nint(values[AliDielectronVarManager::kTPCsignalN]),AliPID::kProton); | |
313 | ||
314 | values[AliDielectronVarManager::kPIn]=pid->GetTPCmomentum(); | |
315 | values[AliDielectronVarManager::kTPCsignal]=pid->GetTPCsignal(); | |
316 | ||
317 | values[AliDielectronVarManager::kTPCnSigmaEle]=tpcNsigmaEle; | |
318 | values[AliDielectronVarManager::kTPCnSigmaPio]=tpcNsigmaPio; | |
319 | values[AliDielectronVarManager::kTPCnSigmaMuo]=tpcNsigmaMuo; | |
320 | values[AliDielectronVarManager::kTPCnSigmaKao]=tpcNsigmaKao; | |
321 | values[AliDielectronVarManager::kTPCnSigmaPro]=tpcNsigmaPro; | |
322 | ||
323 | values[AliDielectronVarManager::kTRDntracklets] = 0; | |
324 | values[AliDielectronVarManager::kTRDpidQuality] = 0; | |
325 | ||
326 | } | |
b2a297fa | 327 | } |
328 | ||
329 | inline void AliDielectronVarManager::FillVarMCParticle(const AliMCParticle *particle, Double_t * const values) | |
330 | { | |
331 | // | |
332 | // Fill track information available for histogramming into an array | |
333 | // | |
334 | ||
335 | // Fill common AliVParticle interface information | |
336 | FillVarVParticle(particle, values); | |
337 | ||
338 | // Fill AliMCParticle interface specific information | |
339 | values[AliDielectronVarManager::kPdgCode] = particle->PdgCode(); | |
340 | } | |
341 | ||
342 | inline void AliDielectronVarManager::FillVarAODMCParticle(const AliAODMCParticle *particle, Double_t * const values) | |
343 | { | |
344 | // | |
345 | // Fill track information available for histogramming into an array | |
346 | // | |
347 | ||
348 | // Fill common AliVParticle interface information | |
349 | FillVarVParticle(particle, values); | |
350 | ||
351 | // Fill AliAODMCParticle interface specific information | |
352 | values[AliDielectronVarManager::kPdgCode] = particle->GetPdgCode(); | |
353 | } | |
354 | ||
355 | inline void AliDielectronVarManager::FillVarDielectronPair(const AliDielectronPair *pair, Double_t * const values) | |
356 | { | |
357 | // | |
358 | // Fill pair information available for histogramming into an array | |
359 | // | |
360 | ||
361 | // Fill common AliVParticle interface information | |
362 | FillVarVParticle(pair, values); | |
363 | ||
364 | // Fill AliDielectronPair specific information | |
365 | const AliKFParticle &kfPair = pair->GetKFParticle(); | |
366 | ||
367 | values[AliDielectronVarManager::kChi2NDF] = kfPair.GetChi2()/kfPair.GetNDF(); | |
368 | values[AliDielectronVarManager::kDecayLength] = kfPair.GetDecayLength(); | |
369 | values[AliDielectronVarManager::kR] = kfPair.GetR(); | |
370 | values[AliDielectronVarManager::kOpeningAngle] = pair->OpeningAngle(); | |
572b0139 | 371 | values[AliDielectronVarManager::kLegDist] = pair->DistanceDaughters(); |
372 | values[AliDielectronVarManager::kLegDistXY] = pair->DistanceDaughtersXY(); | |
373 | values[AliDielectronVarManager::kMerr] = kfPair.GetErrMass()>1e-30&&kfPair.GetErrMass()>1e-30?kfPair.GetErrMass()/kfPair.GetMass():1000000; | |
b2a297fa | 374 | values[AliDielectronVarManager::kPairType] = pair->GetType(); |
375 | } | |
376 | ||
6551594b | 377 | |
378 | inline void AliDielectronVarManager::FillVarVEvent(const AliVEvent *event, Double_t * const values) | |
379 | { | |
380 | // | |
381 | // Fill event information available for histogramming into an array | |
382 | // | |
383 | const AliVVertex *primVtx = event->GetPrimaryVertex(); | |
384 | values[AliDielectronVarManager::kXvPrim] = primVtx->GetX(); | |
385 | values[AliDielectronVarManager::kYvPrim] = primVtx->GetY(); | |
386 | values[AliDielectronVarManager::kZvPrim] = primVtx->GetZ(); | |
387 | values[AliDielectronVarManager::kChi2NDF] = primVtx->GetChi2perNDF(); | |
388 | ||
389 | values[AliDielectronVarManager::kNTrk] = event->GetNumberOfTracks(); | |
390 | values[AliDielectronVarManager::kNevents] = 0; //always fill bin 0; | |
391 | } | |
392 | ||
393 | inline void AliDielectronVarManager::FillVarESDEvent(const AliESDEvent *event, Double_t * const values) | |
394 | { | |
395 | // | |
396 | // Fill event information available for histogramming into an array | |
397 | // | |
398 | ||
399 | // Fill common AliVEvent interface information | |
400 | FillVarVEvent(event, values); | |
401 | ||
402 | // Fill AliESDEvent interface specific information | |
403 | const AliESDVertex *primVtx = event->GetPrimaryVertex(); | |
404 | values[AliDielectronVarManager::kXRes] = primVtx->GetXRes(); | |
405 | values[AliDielectronVarManager::kYRes] = primVtx->GetYRes(); | |
406 | values[AliDielectronVarManager::kZRes] = primVtx->GetZRes(); | |
407 | } | |
408 | ||
409 | inline void AliDielectronVarManager::FillVarAODEvent(const AliAODEvent *event, Double_t * const values) | |
410 | { | |
411 | // | |
412 | // Fill event information available for histogramming into an array | |
413 | // | |
414 | ||
415 | // Fill common AliVEvent interface information | |
416 | FillVarVEvent(event, values); | |
417 | ||
418 | // Fill AliAODEvent interface specific information | |
419 | } | |
420 | ||
421 | inline void AliDielectronVarManager::FillVarMCEvent(const AliMCEvent *event, Double_t * const values) | |
422 | { | |
423 | // | |
424 | // Fill event information available for histogramming into an array | |
425 | // | |
426 | ||
427 | // Fill common AliVEvent interface information | |
428 | FillVarVEvent(event, values); | |
429 | ||
430 | // Fill AliMCEvent interface specific information | |
431 | } | |
432 | ||
433 | inline void AliDielectronVarManager::InitESDpid(Int_t type) | |
434 | { | |
435 | // | |
436 | // initialize PID parameters | |
437 | // type=0 is simulation | |
438 | // type=1 is data | |
439 | ||
572b0139 | 440 | if (!fgESDpid) fgESDpid=new AliESDpid; |
6551594b | 441 | Double_t alephParameters[5]; |
442 | // simulation | |
443 | alephParameters[0] = 2.15898e+00/50.; | |
444 | alephParameters[1] = 1.75295e+01; | |
445 | alephParameters[2] = 3.40030e-09; | |
446 | alephParameters[3] = 1.96178e+00; | |
447 | alephParameters[4] = 3.91720e+00; | |
448 | ||
449 | // data | |
450 | if (type==1){ | |
451 | alephParameters[0] = 0.0283086; | |
452 | alephParameters[1] = 2.63394e+01; | |
453 | alephParameters[2] = 5.04114e-11; | |
454 | alephParameters[3] = 2.12543e+00; | |
455 | alephParameters[4] = 4.88663e+00; | |
456 | } | |
457 | ||
458 | fgESDpid->GetTPCResponse().SetBetheBlochParameters( | |
459 | alephParameters[0],alephParameters[1],alephParameters[2], | |
460 | alephParameters[3],alephParameters[4]); | |
461 | ||
462 | } | |
463 | ||
572b0139 | 464 | |
465 | inline void AliDielectronVarManager::SetEvent(AliVEvent * const ev) | |
466 | { | |
467 | ||
468 | fgEvent = ev; | |
469 | if (fgKFVertex) delete fgKFVertex; | |
470 | fgKFVertex=0x0; | |
471 | if (ev) fgKFVertex=new AliKFVertex(*ev->GetPrimaryVertex()); | |
472 | } | |
b2a297fa | 473 | /* |
474 | inline void AliDielectronVarManager::FillValues(const TParticle *particle, Double_t *values) | |
475 | { | |
476 | // | |
477 | // Fill track information available for histogramming into an array | |
478 | // | |
479 | ||
480 | // Fill TParticle interface information | |
481 | values[AliDielectronVarManager::kPx] = particle->Px(); | |
482 | values[AliDielectronVarManager::kPy] = particle->Py(); | |
483 | values[AliDielectronVarManager::kPz] = particle->Pz(); | |
484 | values[AliDielectronVarManager::kPt] = particle->Pt(); | |
485 | values[AliDielectronVarManager::kP] = particle->P(); | |
486 | ||
487 | values[AliDielectronVarManager::kXv] = particle->Vx(); | |
488 | values[AliDielectronVarManager::kYv] = particle->Vy(); | |
489 | values[AliDielectronVarManager::kZv] = particle->Vz(); | |
490 | ||
491 | values[AliDielectronVarManager::kOneOverPt] = 1./particle->Pt(); | |
492 | values[AliDielectronVarManager::kPhi] = particle->Phi(); | |
493 | values[AliDielectronVarManager::kTheta] = | |
494 | values[AliDielectronVarManager::kEta] = particle->Eta(); | |
495 | values[AliDielectronVarManager::kY] = | |
496 | ||
497 | values[AliDielectronVarManager::kE] = particle->Energy(); | |
498 | values[AliDielectronVarManager::kM] = particle->GetMass(); | |
499 | ||
500 | values[AliDielectronVarManager::kCharge] = particle->GetPDG()->Charge()/3; // uggly | |
501 | ||
502 | }*/ | |
503 | ||
504 | #endif |