]>
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> | |
4649c75b | 45 | #include <AliCentrality.h> |
2a14a7b1 | 46 | #include <AliAODpidUtil.h> |
8df8e382 | 47 | #include <AliPID.h> |
6551594b | 48 | |
b2a297fa | 49 | #include "AliDielectronPair.h" |
8df8e382 | 50 | #include "AliDielectronMC.h" |
48609e3d | 51 | #include "AliDielectronPID.h" |
b2a297fa | 52 | |
53 | class AliVEvent; | |
54 | ||
55 | //________________________________________________________________ | |
56 | class AliDielectronVarManager : public TNamed { | |
57 | ||
58 | public: | |
8df8e382 | 59 | |
b2a297fa | 60 | // Particle specific variables |
61 | enum ValueTypes { | |
62 | kPx = 0, // px | |
63 | kPy, // py | |
64 | kPz, // pz | |
65 | kPt, // transverse momentum | |
66 | kP, // momentum | |
67 | kXv, // vertex position in x | |
68 | kYv, // vertex position in y | |
69 | kZv, // vertex position in z | |
70 | kOneOverPt, // 1/pt | |
71 | kPhi, // phi angle | |
72 | kTheta, // theta angle | |
73 | kEta, // pseudo-rapidity | |
74 | kY, // rapidity | |
75 | kE, // energy | |
76 | kM, // mass | |
77 | kCharge, // charge | |
78 | kNclsITS, // number of clusters assigned in the ITS | |
79 | kNclsTPC, // number of clusters assigned in the TPC | |
554e40f8 | 80 | kNclsTPCiter1, // number of clusters assigned in the TPC after first iteration |
b2a297fa | 81 | kNFclsTPC, // number of findable clusters in the TPC |
45b2b1b8 | 82 | kNFclsTPCr, // number of findable clusters in the TPC with more robust definition |
fb7d2d99 | 83 | kNFclsTPCrFrac, // number of found/findable clusters in the TPC with more robust definition |
b2a297fa | 84 | kTPCsignalN, // number of points used for dEdx |
61d106d3 | 85 | kTPCchi2Cl, // chi2/cl in TPC |
86 | kTrackStatus, // track status bits | |
8df8e382 | 87 | |
b2a297fa | 88 | kNclsTRD, // number of clusters assigned in the TRD |
89 | kTRDntracklets, // number of TRD tracklets used for tracking/PID TODO: correct getter | |
90 | kTRDpidQuality, // number of TRD tracklets used for PID | |
8df8e382 | 91 | kTRDprobEle, // TRD electron pid probability |
92 | kTRDprobPio, // TRD electron pid probability | |
93 | ||
b2a297fa | 94 | kImpactParXY, // Impact parameter in XY plane |
95 | kImpactParZ, // Impact parameter in Z | |
96 | kTrackLength, // Track length | |
97 | kPdgCode, // PDG code | |
8df8e382 | 98 | |
99 | kPdgCodeMother, // PDG code of the mother | |
100 | ||
101 | kNumberOfDaughters, // number of daughters | |
102 | kHaveSameMother, // check that particles have the same mother (MC) | |
fb7d2d99 | 103 | kIsJpsiPrimary, // check if the particle is primary (MC) |
8df8e382 | 104 | kITSsignal, // ITS dE/dx signal |
105 | kITSsignalSSD1, // SSD1 dE/dx signal | |
106 | kITSsignalSSD2, // SSD2 dE/dx signal | |
107 | kITSsignalSDD1, // SDD1 dE/dx signal | |
108 | kITSsignalSDD2, // SDD2 dE/dx signal | |
3505bfad | 109 | kITSclusterMap, // ITS cluster map |
9143d69f | 110 | kITSnSigmaEle, // number of sigmas to the dE/dx electron line in the ITS |
111 | kITSnSigmaPio, // number of sigmas to the dE/dx pion line in the ITS | |
112 | kITSnSigmaMuo, // number of sigmas to the dE/dx muon line in the ITS | |
113 | kITSnSigmaKao, // number of sigmas to the dE/dx kaon line in the ITS | |
114 | kITSnSigmaPro, // number of sigmas to the dE/dx proton line in the ITS | |
8df8e382 | 115 | |
b2a297fa | 116 | kPIn, // momentum at inner wall of TPC (if available), used for PID |
117 | kTPCsignal, // TPC dE/dx signal | |
572b0139 | 118 | |
6551594b | 119 | kTPCnSigmaEle, // number of sigmas to the dE/dx electron line in the TPC |
572b0139 | 120 | kTPCnSigmaPio, // number of sigmas to the dE/dx pion line in the TPC |
121 | kTPCnSigmaMuo, // number of sigmas to the dE/dx muon line in the TPC | |
122 | kTPCnSigmaKao, // number of sigmas to the dE/dx kaon line in the TPC | |
123 | kTPCnSigmaPro, // number of sigmas to the dE/dx proton line in the TPC | |
124 | ||
8df8e382 | 125 | kTOFnSigmaEle, // number of sigmas to the pion line in the TOF |
572b0139 | 126 | kTOFnSigmaPio, // number of sigmas to the pion line in the TOF |
127 | kTOFnSigmaMuo, // number of sigmas to the muon line in the TOF | |
128 | kTOFnSigmaKao, // number of sigmas to the kaon line in the TOF | |
129 | kTOFnSigmaPro, // number of sigmas to the proton line in the TOF | |
8df8e382 | 130 | |
ffbede40 | 131 | kKinkIndex0, // kink index 0 |
132 | ||
b2a297fa | 133 | kParticleMax, // |
134 | // TODO: kRNClusters ?? | |
135 | // AliDielectronPair specific variables | |
136 | kChi2NDF = kParticleMax, // Chi^2/NDF | |
137 | kDecayLength, // decay length | |
138 | kR, // distance to the origin | |
139 | kOpeningAngle, // opening angle | |
8df8e382 | 140 | // helicity picture: Z-axis is considered the direction of the mother's 3-momentum vector |
141 | kThetaHE, // theta in mother's rest frame in the helicity picture | |
142 | kPhiHE, // phi in mother's rest frame in the helicity picture | |
143 | // Collins-Soper picture: Z-axis is considered the direction of the vectorial difference between | |
144 | // the 3-mom vectors of target and projectile beams | |
145 | kThetaCS, // theta in mother's rest frame in Collins-Soper picture | |
146 | kPhiCS, // phi in mother's rest frame in Collins-Soper picture | |
572b0139 | 147 | kLegDist, // distance of the legs |
148 | kLegDistXY, // distance of the legs in XY | |
61d106d3 | 149 | kDeltaEta, // Absolute value of Delta Eta for the legs |
150 | kDeltaPhi, // Absolute value of Delta Phi for the legs | |
b2a297fa | 151 | kMerr, // error of mass calculation |
152 | kDCA, // distance of closest approach TODO: not implemented yet | |
153 | kPairType, // type of the pair, like like sign ++ unlikesign ... | |
154 | kPairMax, // | |
155 | // Event specific variables | |
6551594b | 156 | kXvPrim=kPairMax, // prim vertex |
157 | kYvPrim, // prim vertex | |
158 | kZvPrim, // prim vertex | |
159 | kXRes, // primary vertex x-resolution | |
160 | kYRes, // primary vertex y-resolution | |
161 | kZRes, // primary vertex z-resolution | |
b2a297fa | 162 | kNTrk, // number of tracks (or tracklets) |
6551594b | 163 | kTracks, // ESD tracks |
ffbede40 | 164 | kCentrality, // event centrality fraction |
6551594b | 165 | kNevents, // event counter |
b2a297fa | 166 | kNMaxValues // |
167 | // TODO: (for A+A) ZDCEnergy, impact parameter, Iflag?? | |
168 | }; | |
169 | ||
170 | ||
171 | AliDielectronVarManager(); | |
172 | AliDielectronVarManager(const char* name, const char* title); | |
173 | virtual ~AliDielectronVarManager(); | |
174 | static void Fill(const TObject* particle, Double_t * const values); | |
175 | ||
6551594b | 176 | static void InitESDpid(Int_t type=0); |
2a14a7b1 | 177 | static void InitAODpidUtil(Int_t type=0); |
572b0139 | 178 | static void SetESDpid(AliESDpid * const pid) {fgESDpid=pid;} |
179 | static AliESDpid* GetESDpid() {return fgESDpid;} | |
2a14a7b1 | 180 | static AliAODpidUtil* GetAODpidUtil() {return fgAODpidUtil;} |
572b0139 | 181 | static void SetEvent(AliVEvent * const ev); |
2a14a7b1 | 182 | static Bool_t GetDCA(const AliAODTrack *track, Double_t d0z0[2]); |
183 | ||
b2a297fa | 184 | static const char* GetValueName(Int_t i) { return (i>=0&&i<kNMaxValues)?fgkParticleNames[i]:""; } |
185 | private: | |
186 | ||
187 | static const char* fgkParticleNames[kNMaxValues]; //variable names | |
188 | ||
189 | static void FillVarVParticle(const AliVParticle *particle, Double_t * const values); | |
190 | static void FillVarESDtrack(const AliESDtrack *particle, Double_t * const values); | |
191 | static void FillVarAODTrack(const AliAODTrack *particle, Double_t * const values); | |
8df8e382 | 192 | static void FillVarMCParticle(const AliMCParticle *particle, Double_t * const values); |
b2a297fa | 193 | static void FillVarAODMCParticle(const AliAODMCParticle *particle, Double_t * const values); |
194 | static void FillVarDielectronPair(const AliDielectronPair *pair, Double_t * const values); | |
1201a1a9 | 195 | static void FillVarKFParticle(const AliKFParticle *pair, Double_t * const values); |
196 | ||
6551594b | 197 | static void FillVarVEvent(const AliVEvent *event, Double_t * const values); |
198 | static void FillVarESDEvent(const AliESDEvent *event, Double_t * const values); | |
199 | static void FillVarAODEvent(const AliAODEvent *event, Double_t * const values); | |
200 | static void FillVarMCEvent(const AliMCEvent *event, Double_t * const values); | |
8df8e382 | 201 | |
2a14a7b1 | 202 | static AliESDpid *fgESDpid; // ESD pid object |
203 | static AliAODpidUtil *fgAODpidUtil; // AOD pid object | |
204 | static AliVEvent *fgEvent; // current event pointer | |
205 | static AliKFVertex *fgKFVertex; // kf vertex | |
572b0139 | 206 | |
b2a297fa | 207 | AliDielectronVarManager(const AliDielectronVarManager &c); |
208 | AliDielectronVarManager &operator=(const AliDielectronVarManager &c); | |
209 | ||
210 | ClassDef(AliDielectronVarManager,1); | |
211 | }; | |
212 | ||
213 | ||
214 | //Inline functions | |
6551594b | 215 | inline void AliDielectronVarManager::Fill(const TObject* object, Double_t * const values) |
b2a297fa | 216 | { |
217 | // | |
218 | // Main function to fill all available variables according to the type of particle | |
219 | // | |
6551594b | 220 | if (object->IsA() == AliESDtrack::Class()) FillVarESDtrack(static_cast<const AliESDtrack*>(object), values); |
221 | else if (object->IsA() == AliAODTrack::Class()) FillVarAODTrack(static_cast<const AliAODTrack*>(object), values); | |
222 | else if (object->IsA() == AliMCParticle::Class()) FillVarMCParticle(static_cast<const AliMCParticle*>(object), values); | |
223 | else if (object->IsA() == AliAODMCParticle::Class()) FillVarAODMCParticle(static_cast<const AliAODMCParticle*>(object), values); | |
224 | else if (object->IsA() == AliDielectronPair::Class()) FillVarDielectronPair(static_cast<const AliDielectronPair*>(object), values); | |
1201a1a9 | 225 | else if (object->IsA() == AliKFParticle::Class()) FillVarKFParticle(static_cast<const AliKFParticle*>(object),values); |
6551594b | 226 | // Main function to fill all available variables according to the type of event |
227 | ||
228 | else if (object->IsA() == AliVEvent::Class()) FillVarVEvent(static_cast<const AliVEvent*>(object), values); | |
229 | else if (object->IsA() == AliESDEvent::Class()) FillVarESDEvent(static_cast<const AliESDEvent*>(object), values); | |
230 | else if (object->IsA() == AliAODEvent::Class()) FillVarAODEvent(static_cast<const AliAODEvent*>(object), values); | |
231 | else if (object->IsA() == AliMCEvent::Class()) FillVarMCEvent(static_cast<const AliMCEvent*>(object), values); | |
1201a1a9 | 232 | // else printf(Form("AliDielectronVarManager::Fill: Type %s is not supported by AliDielectronVarManager!", object->ClassName())); //TODO: implement without object needed |
b2a297fa | 233 | } |
234 | ||
235 | inline void AliDielectronVarManager::FillVarVParticle(const AliVParticle *particle, Double_t * const values) | |
236 | { | |
237 | // | |
238 | // Fill track information available in AliVParticle into an array | |
239 | // | |
240 | values[AliDielectronVarManager::kPx] = particle->Px(); | |
241 | values[AliDielectronVarManager::kPy] = particle->Py(); | |
242 | values[AliDielectronVarManager::kPz] = particle->Pz(); | |
243 | values[AliDielectronVarManager::kPt] = particle->Pt(); | |
244 | values[AliDielectronVarManager::kP] = particle->P(); | |
245 | ||
246 | values[AliDielectronVarManager::kXv] = particle->Xv(); | |
247 | values[AliDielectronVarManager::kYv] = particle->Yv(); | |
248 | values[AliDielectronVarManager::kZv] = particle->Zv(); | |
249 | ||
250 | values[AliDielectronVarManager::kOneOverPt] = particle->OneOverPt(); | |
251 | values[AliDielectronVarManager::kPhi] = particle->Phi(); | |
252 | values[AliDielectronVarManager::kTheta] = particle->Theta(); | |
253 | values[AliDielectronVarManager::kEta] = particle->Eta(); | |
254 | values[AliDielectronVarManager::kY] = particle->Y(); | |
8df8e382 | 255 | |
b2a297fa | 256 | values[AliDielectronVarManager::kE] = particle->E(); |
257 | values[AliDielectronVarManager::kM] = particle->M(); | |
258 | values[AliDielectronVarManager::kCharge] = particle->Charge(); | |
2a14a7b1 | 259 | |
260 | values[AliDielectronVarManager::kPdgCode] = particle->PdgCode(); | |
261 | ||
6551594b | 262 | if ( fgEvent ) AliDielectronVarManager::Fill(fgEvent, values); |
b2a297fa | 263 | } |
264 | ||
265 | inline void AliDielectronVarManager::FillVarESDtrack(const AliESDtrack *particle, Double_t * const values) | |
266 | { | |
267 | // | |
268 | // Fill track information available for histogramming into an array | |
269 | // | |
270 | ||
271 | // Fill common AliVParticle interface information | |
272 | FillVarVParticle(particle, values); | |
273 | ||
8df8e382 | 274 | Double_t pidProbs[AliPID::kSPECIES]; |
b2a297fa | 275 | // Fill AliESDtrack interface specific information |
164bfb53 | 276 | Double_t tpcNcls=particle->GetTPCNcls(); |
b2a297fa | 277 | values[AliDielectronVarManager::kNclsITS] = particle->GetNcls(0); // TODO: get rid of the plain numbers |
61d106d3 | 278 | values[AliDielectronVarManager::kNclsTPC] = tpcNcls; // TODO: get rid of the plain numbers |
ffbede40 | 279 | values[AliDielectronVarManager::kNclsTPCiter1] = particle->GetTPCNclsIter1(); // TODO: get rid of the plain numbers |
b2a297fa | 280 | values[AliDielectronVarManager::kNFclsTPC] = particle->GetTPCNclsF(); |
45b2b1b8 | 281 | values[AliDielectronVarManager::kNFclsTPCr] = particle->GetTPCClusterInfo(2,1); |
fb7d2d99 | 282 | values[AliDielectronVarManager::kNFclsTPCrFrac] = particle->GetTPCClusterInfo(2); |
b2a297fa | 283 | values[AliDielectronVarManager::kTPCsignalN] = particle->GetTPCsignalN(); |
284 | values[AliDielectronVarManager::kNclsTRD] = particle->GetNcls(2); // TODO: get rid of the plain numbers | |
285 | values[AliDielectronVarManager::kTRDntracklets] = particle->GetTRDntracklets(); // TODO: GetTRDtracklets/GetTRDntracklets? | |
286 | values[AliDielectronVarManager::kTRDpidQuality] = particle->GetTRDpidQuality(); | |
61d106d3 | 287 | values[AliDielectronVarManager::kTrackStatus] = (Double_t)particle->GetStatus(); |
288 | ||
289 | ||
290 | values[AliDielectronVarManager::kTPCchi2Cl] = -1; | |
291 | if (tpcNcls>0) values[AliDielectronVarManager::kTPCchi2Cl] = particle->GetTPCchi2() / tpcNcls; | |
8df8e382 | 292 | //TRD pidProbs |
293 | particle->GetTRDpid(pidProbs); | |
294 | values[AliDielectronVarManager::kTRDprobEle] = pidProbs[AliPID::kElectron]; | |
295 | values[AliDielectronVarManager::kTRDprobPio] = pidProbs[AliPID::kPion]; | |
ffbede40 | 296 | |
297 | values[AliDielectronVarManager::kKinkIndex0] = particle->GetKinkIndex(0); | |
8df8e382 | 298 | |
b2a297fa | 299 | Float_t impactParXY, impactParZ; |
300 | particle->GetImpactParameters(impactParXY, impactParZ); | |
301 | values[AliDielectronVarManager::kImpactParXY] = impactParXY; | |
302 | values[AliDielectronVarManager::kImpactParZ] = impactParZ; | |
303 | ||
8df8e382 | 304 | |
305 | values[AliDielectronVarManager::kPdgCode]=0; | |
306 | values[AliDielectronVarManager::kPdgCodeMother]=0; | |
307 | ||
308 | values[AliDielectronVarManager::kNumberOfDaughters]=-999; | |
309 | ||
310 | AliDielectronMC *mc=AliDielectronMC::Instance(); | |
311 | ||
312 | if (mc->HasMC()){ | |
313 | if (mc->GetMCTrack(particle)) | |
314 | values[AliDielectronVarManager::kPdgCode]= | |
315 | mc->GetMCTrack(particle)->PdgCode(); | |
316 | ||
317 | Int_t pdgMother=mc->GetMotherPDG(particle); | |
318 | if (pdgMother!=-999) | |
319 | values[AliDielectronVarManager::kPdgCodeMother]=pdgMother; | |
320 | ||
321 | values[AliDielectronVarManager::kNumberOfDaughters]=mc->NumberOfDaughters(particle); | |
322 | } //if(mc->HasMC()) | |
323 | ||
324 | ||
325 | ||
326 | values[AliDielectronVarManager::kITSsignal] = particle->GetITSsignal(); | |
327 | ||
328 | Double_t itsdEdx[4]; | |
329 | particle->GetITSdEdxSamples(itsdEdx); | |
330 | ||
331 | values[AliDielectronVarManager::kITSsignalSSD1] = itsdEdx[0]; | |
332 | values[AliDielectronVarManager::kITSsignalSSD2] = itsdEdx[1]; | |
333 | values[AliDielectronVarManager::kITSsignalSDD1] = itsdEdx[2]; | |
334 | values[AliDielectronVarManager::kITSsignalSDD2] = itsdEdx[3]; | |
3505bfad | 335 | values[AliDielectronVarManager::kITSclusterMap] = particle->GetITSClusterMap(); |
336 | ||
b2a297fa | 337 | values[AliDielectronVarManager::kTrackLength] = particle->GetIntegratedLength(); |
b2a297fa | 338 | //dEdx information |
339 | Double_t mom = particle->GetP(); | |
340 | const AliExternalTrackParam *in=particle->GetInnerParam(); | |
341 | if (in) mom = in->GetP(); | |
342 | values[AliDielectronVarManager::kPIn]=mom; | |
343 | values[AliDielectronVarManager::kTPCsignal]=particle->GetTPCsignal(); | |
6551594b | 344 | // nsigma to Electron band |
345 | // TODO: for the moment we set the bethe bloch parameters manually | |
346 | // this should be changed in future! | |
48609e3d | 347 | |
2a14a7b1 | 348 | values[AliDielectronVarManager::kTPCnSigmaEle]=fgESDpid->NumberOfSigmasTPC(particle,AliPID::kElectron)-AliDielectronPID::GetCorrVal(); |
572b0139 | 349 | values[AliDielectronVarManager::kTPCnSigmaPio]=fgESDpid->NumberOfSigmasTPC(particle,AliPID::kPion); |
350 | values[AliDielectronVarManager::kTPCnSigmaMuo]=fgESDpid->NumberOfSigmasTPC(particle,AliPID::kMuon); | |
351 | values[AliDielectronVarManager::kTPCnSigmaKao]=fgESDpid->NumberOfSigmasTPC(particle,AliPID::kKaon); | |
352 | values[AliDielectronVarManager::kTPCnSigmaPro]=fgESDpid->NumberOfSigmasTPC(particle,AliPID::kProton); | |
353 | ||
9143d69f | 354 | values[AliDielectronVarManager::kITSnSigmaEle]=fgESDpid->NumberOfSigmasITS(particle,AliPID::kElectron); |
355 | values[AliDielectronVarManager::kITSnSigmaPio]=fgESDpid->NumberOfSigmasITS(particle,AliPID::kPion); | |
356 | values[AliDielectronVarManager::kITSnSigmaMuo]=fgESDpid->NumberOfSigmasITS(particle,AliPID::kMuon); | |
357 | values[AliDielectronVarManager::kITSnSigmaKao]=fgESDpid->NumberOfSigmasITS(particle,AliPID::kKaon); | |
358 | values[AliDielectronVarManager::kITSnSigmaPro]=fgESDpid->NumberOfSigmasITS(particle,AliPID::kProton); | |
359 | ||
572b0139 | 360 | Double_t t0=fgESDpid->GetTOFResponse().GetTimeZero(); |
8df8e382 | 361 | values[AliDielectronVarManager::kTOFnSigmaEle]=fgESDpid->NumberOfSigmasTOF(particle,AliPID::kElectron,t0); |
572b0139 | 362 | values[AliDielectronVarManager::kTOFnSigmaPio]=fgESDpid->NumberOfSigmasTOF(particle,AliPID::kPion,t0); |
363 | values[AliDielectronVarManager::kTOFnSigmaMuo]=fgESDpid->NumberOfSigmasTOF(particle,AliPID::kMuon,t0); | |
364 | values[AliDielectronVarManager::kTOFnSigmaKao]=fgESDpid->NumberOfSigmasTOF(particle,AliPID::kKaon,t0); | |
365 | values[AliDielectronVarManager::kTOFnSigmaPro]=fgESDpid->NumberOfSigmasTOF(particle,AliPID::kProton,t0); | |
b2a297fa | 366 | } |
367 | ||
368 | inline void AliDielectronVarManager::FillVarAODTrack(const AliAODTrack *particle, Double_t * const values) | |
369 | { | |
370 | // | |
371 | // Fill track information available for histogramming into an array | |
372 | // | |
373 | ||
374 | // Fill common AliVParticle interface information | |
375 | FillVarVParticle(particle, values); | |
572b0139 | 376 | |
377 | // Reset AliESDtrack interface specific information | |
378 | values[AliDielectronVarManager::kNclsITS] = 0; | |
164bfb53 | 379 | values[AliDielectronVarManager::kNclsTPC] = particle->GetTPCNcls(); |
554e40f8 | 380 | values[AliDielectronVarManager::kNclsTPCiter1] = particle->GetTPCNcls(); // not really available in AOD |
572b0139 | 381 | values[AliDielectronVarManager::kNFclsTPC] = 0; |
fb7d2d99 | 382 | values[AliDielectronVarManager::kNFclsTPCr] = 0; |
383 | values[AliDielectronVarManager::kNFclsTPCrFrac] = 0; | |
572b0139 | 384 | values[AliDielectronVarManager::kNclsTRD] = 0; |
385 | values[AliDielectronVarManager::kTRDntracklets] = 0; | |
386 | values[AliDielectronVarManager::kTRDpidQuality] = 0; | |
61d106d3 | 387 | |
388 | values[AliDielectronVarManager::kTPCchi2Cl] = -1; | |
389 | values[AliDielectronVarManager::kTrackStatus] = (Double_t)particle->GetStatus(); | |
390 | ||
8df8e382 | 391 | //TRD pidProbs |
392 | //TODO: set correctly | |
393 | values[AliDielectronVarManager::kTRDprobEle] = 0; | |
394 | values[AliDielectronVarManager::kTRDprobPio] = 0; | |
395 | ||
572b0139 | 396 | //TODO: This is only an approximation!!! |
2a14a7b1 | 397 | values[AliDielectronVarManager::kTPCsignalN] = 0; |
572b0139 | 398 | |
2a14a7b1 | 399 | // Fill AliAODTrack interface information |
400 | // | |
401 | Double_t d0z0[2]; | |
402 | GetDCA(particle, d0z0); | |
403 | values[AliDielectronVarManager::kImpactParXY] = d0z0[0]; | |
404 | values[AliDielectronVarManager::kImpactParZ] = d0z0[1]; | |
572b0139 | 405 | |
406 | values[AliDielectronVarManager::kPIn]=0; | |
407 | values[AliDielectronVarManager::kTPCsignal]=0; | |
408 | ||
409 | values[AliDielectronVarManager::kTPCnSigmaEle]=0; | |
410 | values[AliDielectronVarManager::kTPCnSigmaPio]=0; | |
411 | values[AliDielectronVarManager::kTPCnSigmaMuo]=0; | |
412 | values[AliDielectronVarManager::kTPCnSigmaKao]=0; | |
413 | values[AliDielectronVarManager::kTPCnSigmaPro]=0; | |
b2a297fa | 414 | |
3505bfad | 415 | values[AliDielectronVarManager::kITSclusterMap] = particle->GetITSClusterMap(); |
572b0139 | 416 | |
417 | AliAODPid *pid=particle->GetDetPid(); | |
418 | if (pid){ | |
419 | Double_t mom =pid->GetTPCmomentum(); | |
2a14a7b1 | 420 | values[AliDielectronVarManager::kTPCsignalN] = pid->GetTPCsignalN(); |
421 | Double_t tpcNsigmaEle=fgAODpidUtil->NumberOfSigmasTPC(particle,AliPID::kElectron); | |
422 | Double_t tpcNsigmaPio=fgAODpidUtil->NumberOfSigmasTPC(particle,AliPID::kPion); | |
423 | Double_t tpcNsigmaMuo=fgAODpidUtil->NumberOfSigmasTPC(particle,AliPID::kMuon); | |
424 | Double_t tpcNsigmaKao=fgAODpidUtil->NumberOfSigmasTPC(particle,AliPID::kKaon); | |
425 | Double_t tpcNsigmaPro=fgAODpidUtil->NumberOfSigmasTPC(particle,AliPID::kProton); | |
572b0139 | 426 | |
164bfb53 | 427 | values[AliDielectronVarManager::kPIn]=mom; |
572b0139 | 428 | values[AliDielectronVarManager::kTPCsignal]=pid->GetTPCsignal(); |
429 | ||
430 | values[AliDielectronVarManager::kTPCnSigmaEle]=tpcNsigmaEle; | |
431 | values[AliDielectronVarManager::kTPCnSigmaPio]=tpcNsigmaPio; | |
432 | values[AliDielectronVarManager::kTPCnSigmaMuo]=tpcNsigmaMuo; | |
433 | values[AliDielectronVarManager::kTPCnSigmaKao]=tpcNsigmaKao; | |
434 | values[AliDielectronVarManager::kTPCnSigmaPro]=tpcNsigmaPro; | |
435 | ||
436 | values[AliDielectronVarManager::kTRDntracklets] = 0; | |
437 | values[AliDielectronVarManager::kTRDpidQuality] = 0; | |
438 | ||
439 | } | |
b2a297fa | 440 | } |
441 | ||
442 | inline void AliDielectronVarManager::FillVarMCParticle(const AliMCParticle *particle, Double_t * const values) | |
443 | { | |
444 | // | |
445 | // Fill track information available for histogramming into an array | |
446 | // | |
447 | ||
554e40f8 | 448 | values[AliDielectronVarManager::kNclsITS] = 0; |
449 | values[AliDielectronVarManager::kNclsTPC] = 0; | |
450 | values[AliDielectronVarManager::kNclsTPCiter1] = 0; | |
451 | values[AliDielectronVarManager::kNFclsTPC] = 0; | |
fb7d2d99 | 452 | values[AliDielectronVarManager::kNFclsTPCr] = 0; |
453 | values[AliDielectronVarManager::kNFclsTPCrFrac] = 0; | |
554e40f8 | 454 | values[AliDielectronVarManager::kNclsTRD] = 0; |
455 | values[AliDielectronVarManager::kTRDntracklets] = 0; | |
456 | values[AliDielectronVarManager::kTRDpidQuality] = 0; | |
457 | values[AliDielectronVarManager::kTPCchi2Cl] = 0; | |
458 | values[AliDielectronVarManager::kTrackStatus] = 0; | |
459 | values[AliDielectronVarManager::kTRDprobEle] = 0; | |
460 | values[AliDielectronVarManager::kTRDprobPio] = 0; | |
461 | values[AliDielectronVarManager::kTPCsignalN] = 0; | |
462 | values[AliDielectronVarManager::kImpactParXY] = 0; | |
463 | values[AliDielectronVarManager::kImpactParZ] = 0; | |
464 | values[AliDielectronVarManager::kPIn] = 0; | |
465 | values[AliDielectronVarManager::kTPCsignal] = 0; | |
466 | values[AliDielectronVarManager::kTPCnSigmaEle] = 0; | |
467 | values[AliDielectronVarManager::kTPCnSigmaPio] = 0; | |
468 | values[AliDielectronVarManager::kTPCnSigmaMuo] = 0; | |
469 | values[AliDielectronVarManager::kTPCnSigmaKao] = 0; | |
470 | values[AliDielectronVarManager::kTPCnSigmaPro] = 0; | |
471 | values[AliDielectronVarManager::kITSclusterMap] = 0; | |
472 | ||
473 | values[AliDielectronVarManager::kPdgCode] = 0; | |
474 | values[AliDielectronVarManager::kPdgCodeMother] = 0; | |
475 | ||
b2a297fa | 476 | // Fill common AliVParticle interface information |
477 | FillVarVParticle(particle, values); | |
8df8e382 | 478 | |
479 | AliDielectronMC *mc=AliDielectronMC::Instance(); | |
480 | ||
b2a297fa | 481 | // Fill AliMCParticle interface specific information |
482 | values[AliDielectronVarManager::kPdgCode] = particle->PdgCode(); | |
8df8e382 | 483 | |
484 | AliMCParticle *mother = mc->GetMCTrackMother(particle); | |
485 | if (mother) values[AliDielectronVarManager::kPdgCodeMother] = mother->PdgCode(); | |
486 | ||
fb7d2d99 | 487 | values[AliDielectronVarManager::kIsJpsiPrimary] = mc->IsJpsiPrimary(particle); |
8df8e382 | 488 | values[AliDielectronVarManager::kNumberOfDaughters]=mc->NumberOfDaughters(particle); |
b2a297fa | 489 | } |
490 | ||
491 | inline void AliDielectronVarManager::FillVarAODMCParticle(const AliAODMCParticle *particle, Double_t * const values) | |
492 | { | |
493 | // | |
494 | // Fill track information available for histogramming into an array | |
495 | // | |
496 | ||
554e40f8 | 497 | values[AliDielectronVarManager::kNclsITS] = 0; |
498 | values[AliDielectronVarManager::kNclsTPC] = 0; | |
499 | values[AliDielectronVarManager::kNclsTPCiter1] = 0; | |
500 | values[AliDielectronVarManager::kNFclsTPC] = 0; | |
501 | values[AliDielectronVarManager::kNclsTRD] = 0; | |
502 | values[AliDielectronVarManager::kTRDntracklets] = 0; | |
503 | values[AliDielectronVarManager::kTRDpidQuality] = 0; | |
504 | values[AliDielectronVarManager::kTPCchi2Cl] = 0; | |
505 | values[AliDielectronVarManager::kTrackStatus] = 0; | |
506 | values[AliDielectronVarManager::kTRDprobEle] = 0; | |
507 | values[AliDielectronVarManager::kTRDprobPio] = 0; | |
508 | values[AliDielectronVarManager::kTPCsignalN] = 0; | |
509 | values[AliDielectronVarManager::kImpactParXY] = 0; | |
510 | values[AliDielectronVarManager::kImpactParZ] = 0; | |
511 | values[AliDielectronVarManager::kPIn] = 0; | |
512 | values[AliDielectronVarManager::kTPCsignal] = 0; | |
513 | values[AliDielectronVarManager::kTPCnSigmaEle] = 0; | |
514 | values[AliDielectronVarManager::kTPCnSigmaPio] = 0; | |
515 | values[AliDielectronVarManager::kTPCnSigmaMuo] = 0; | |
516 | values[AliDielectronVarManager::kTPCnSigmaKao] = 0; | |
517 | values[AliDielectronVarManager::kTPCnSigmaPro] = 0; | |
518 | values[AliDielectronVarManager::kITSclusterMap] = 0; | |
519 | ||
520 | values[AliDielectronVarManager::kPdgCode] = 0; | |
521 | values[AliDielectronVarManager::kPdgCodeMother] = 0; | |
522 | ||
b2a297fa | 523 | // Fill common AliVParticle interface information |
524 | FillVarVParticle(particle, values); | |
554e40f8 | 525 | |
8df8e382 | 526 | AliDielectronMC *mc=AliDielectronMC::Instance(); |
527 | ||
528 | ||
b2a297fa | 529 | // Fill AliAODMCParticle interface specific information |
8df8e382 | 530 | values[AliDielectronVarManager::kPdgCode] = particle->PdgCode(); |
531 | ||
532 | AliVParticle *mother = mc->GetMCTrackMother(particle); | |
533 | if (mother) values[AliDielectronVarManager::kPdgCodeMother] = mother->PdgCode(); | |
fb7d2d99 | 534 | values[AliDielectronVarManager::kIsJpsiPrimary] = mc->IsJpsiPrimary(particle); |
8df8e382 | 535 | |
536 | values[AliDielectronVarManager::kNumberOfDaughters]=mc->NumberOfDaughters(particle); | |
b2a297fa | 537 | } |
538 | ||
539 | inline void AliDielectronVarManager::FillVarDielectronPair(const AliDielectronPair *pair, Double_t * const values) | |
540 | { | |
541 | // | |
542 | // Fill pair information available for histogramming into an array | |
543 | // | |
2a14a7b1 | 544 | |
545 | values[AliDielectronVarManager::kPdgCode]=0; | |
546 | values[AliDielectronVarManager::kPdgCodeMother]=0; | |
547 | ||
b2a297fa | 548 | // Fill common AliVParticle interface information |
549 | FillVarVParticle(pair, values); | |
550 | ||
551 | // Fill AliDielectronPair specific information | |
552 | const AliKFParticle &kfPair = pair->GetKFParticle(); | |
61d106d3 | 553 | |
554 | Double_t thetaHE=0; | |
555 | Double_t phiHE=0; | |
556 | Double_t thetaCS=0; | |
557 | Double_t phiCS=0; | |
558 | ||
559 | pair->GetThetaPhiCM(thetaHE,phiHE,thetaCS,phiCS); | |
560 | ||
b2a297fa | 561 | values[AliDielectronVarManager::kChi2NDF] = kfPair.GetChi2()/kfPair.GetNDF(); |
562 | values[AliDielectronVarManager::kDecayLength] = kfPair.GetDecayLength(); | |
563 | values[AliDielectronVarManager::kR] = kfPair.GetR(); | |
564 | values[AliDielectronVarManager::kOpeningAngle] = pair->OpeningAngle(); | |
61d106d3 | 565 | values[AliDielectronVarManager::kThetaHE] = thetaHE; |
566 | values[AliDielectronVarManager::kPhiHE] = phiHE; | |
567 | values[AliDielectronVarManager::kThetaCS] = thetaCS; | |
568 | values[AliDielectronVarManager::kPhiCS] = phiCS; | |
572b0139 | 569 | values[AliDielectronVarManager::kLegDist] = pair->DistanceDaughters(); |
570 | values[AliDielectronVarManager::kLegDistXY] = pair->DistanceDaughtersXY(); | |
61d106d3 | 571 | values[AliDielectronVarManager::kDeltaEta] = pair->DeltaEta(); |
572 | values[AliDielectronVarManager::kDeltaPhi] = pair->DeltaPhi(); | |
8df8e382 | 573 | values[AliDielectronVarManager::kMerr] = kfPair.GetErrMass()>1e-30&&kfPair.GetMass()>1e-30?kfPair.GetErrMass()/kfPair.GetMass():1000000; |
b2a297fa | 574 | values[AliDielectronVarManager::kPairType] = pair->GetType(); |
8df8e382 | 575 | |
576 | ||
577 | ||
578 | AliDielectronMC *mc=AliDielectronMC::Instance(); | |
579 | ||
580 | if (mc->HasMC()){ | |
581 | Bool_t samemother = mc->HaveSameMother(pair); | |
fb7d2d99 | 582 | values[AliDielectronVarManager::kIsJpsiPrimary] = mc->IsJpsiPrimary(pair); |
8df8e382 | 583 | values[AliDielectronVarManager::kHaveSameMother] = samemother ; |
584 | }//if (mc->HasMC()) | |
585 | ||
586 | ||
b2a297fa | 587 | } |
588 | ||
1201a1a9 | 589 | inline void AliDielectronVarManager::FillVarKFParticle(const AliKFParticle *particle, Double_t * const values) |
590 | { | |
591 | // | |
592 | // Fill track information available in AliVParticle into an array | |
593 | // | |
594 | values[AliDielectronVarManager::kPx] = particle->GetPx(); | |
595 | values[AliDielectronVarManager::kPy] = particle->GetPy(); | |
596 | values[AliDielectronVarManager::kPz] = particle->GetPz(); | |
597 | values[AliDielectronVarManager::kPt] = particle->GetPt(); | |
598 | values[AliDielectronVarManager::kP] = particle->GetP(); | |
599 | ||
600 | values[AliDielectronVarManager::kXv] = particle->GetX(); | |
601 | values[AliDielectronVarManager::kYv] = particle->GetY(); | |
602 | values[AliDielectronVarManager::kZv] = particle->GetZ(); | |
603 | ||
604 | values[AliDielectronVarManager::kOneOverPt] = 0; | |
605 | values[AliDielectronVarManager::kPhi] = particle->GetPhi(); | |
606 | values[AliDielectronVarManager::kTheta] = 0.; | |
607 | values[AliDielectronVarManager::kEta] = particle->GetEta(); | |
608 | values[AliDielectronVarManager::kY] = ((particle->GetE()*particle->GetE()-particle->GetPx()*particle->GetPx()-particle->GetPy()*particle->GetPy()-particle->GetPz()*particle->GetPz())>0.) ? TLorentzVector(particle->GetPx(),particle->GetPy(),particle->GetPz(),particle->GetE()).Rapidity() : -1111.; | |
609 | ||
610 | values[AliDielectronVarManager::kE] = particle->GetE(); | |
611 | values[AliDielectronVarManager::kM] = particle->GetMass(); | |
612 | values[AliDielectronVarManager::kCharge] = particle->GetQ(); | |
613 | ||
614 | values[AliDielectronVarManager::kNclsITS] = 0; | |
615 | values[AliDielectronVarManager::kNclsTPC] = 0; | |
616 | values[AliDielectronVarManager::kNclsTPCiter1] = 0; | |
617 | values[AliDielectronVarManager::kNFclsTPC] = 0; | |
618 | values[AliDielectronVarManager::kNclsTRD] = 0; | |
619 | values[AliDielectronVarManager::kTRDntracklets] = 0; | |
620 | values[AliDielectronVarManager::kTRDpidQuality] = 0; | |
621 | values[AliDielectronVarManager::kTPCchi2Cl] = 0; | |
622 | values[AliDielectronVarManager::kTrackStatus] = 0; | |
623 | values[AliDielectronVarManager::kTRDprobEle] = 0; | |
624 | values[AliDielectronVarManager::kTRDprobPio] = 0; | |
625 | values[AliDielectronVarManager::kTPCsignalN] = 0; | |
626 | values[AliDielectronVarManager::kImpactParXY] = 0; | |
627 | values[AliDielectronVarManager::kImpactParZ] = 0; | |
628 | values[AliDielectronVarManager::kPIn] = 0; | |
629 | values[AliDielectronVarManager::kTPCsignal] = 0; | |
630 | values[AliDielectronVarManager::kTPCnSigmaEle] = 0; | |
631 | values[AliDielectronVarManager::kTPCnSigmaPio] = 0; | |
632 | values[AliDielectronVarManager::kTPCnSigmaMuo] = 0; | |
633 | values[AliDielectronVarManager::kTPCnSigmaKao] = 0; | |
634 | values[AliDielectronVarManager::kTPCnSigmaPro] = 0; | |
635 | values[AliDielectronVarManager::kITSclusterMap] = 0; | |
636 | ||
637 | values[AliDielectronVarManager::kPdgCode] = 0; | |
638 | values[AliDielectronVarManager::kPdgCodeMother] = 0; | |
639 | ||
640 | ||
641 | if ( fgEvent ) AliDielectronVarManager::Fill(fgEvent, values); | |
642 | } | |
6551594b | 643 | |
644 | inline void AliDielectronVarManager::FillVarVEvent(const AliVEvent *event, Double_t * const values) | |
645 | { | |
646 | // | |
647 | // Fill event information available for histogramming into an array | |
648 | // | |
649 | const AliVVertex *primVtx = event->GetPrimaryVertex(); | |
8df8e382 | 650 | |
651 | values[AliDielectronVarManager::kXvPrim] = 0; | |
652 | values[AliDielectronVarManager::kYvPrim] = 0; | |
653 | values[AliDielectronVarManager::kZvPrim] = 0; | |
654 | values[AliDielectronVarManager::kChi2NDF] = 0; | |
655 | ||
656 | values[AliDielectronVarManager::kNTrk] = 0; | |
657 | values[AliDielectronVarManager::kNevents] = 0; //always fill bin 0; | |
658 | ||
659 | if (!primVtx) return; | |
660 | ||
6551594b | 661 | values[AliDielectronVarManager::kXvPrim] = primVtx->GetX(); |
662 | values[AliDielectronVarManager::kYvPrim] = primVtx->GetY(); | |
663 | values[AliDielectronVarManager::kZvPrim] = primVtx->GetZ(); | |
664 | values[AliDielectronVarManager::kChi2NDF] = primVtx->GetChi2perNDF(); | |
665 | ||
666 | values[AliDielectronVarManager::kNTrk] = event->GetNumberOfTracks(); | |
6551594b | 667 | } |
668 | ||
669 | inline void AliDielectronVarManager::FillVarESDEvent(const AliESDEvent *event, Double_t * const values) | |
670 | { | |
671 | // | |
672 | // Fill event information available for histogramming into an array | |
673 | // | |
674 | ||
675 | // Fill common AliVEvent interface information | |
676 | FillVarVEvent(event, values); | |
ffbede40 | 677 | |
678 | Double_t centralityF=-1; | |
4649c75b | 679 | AliCentrality *esdCentrality = const_cast<AliESDEvent*>(event)->GetCentrality(); |
ffbede40 | 680 | if (esdCentrality) centralityF = esdCentrality->GetCentralityPercentile("V0M"); |
681 | ||
6551594b | 682 | // Fill AliESDEvent interface specific information |
683 | const AliESDVertex *primVtx = event->GetPrimaryVertex(); | |
684 | values[AliDielectronVarManager::kXRes] = primVtx->GetXRes(); | |
685 | values[AliDielectronVarManager::kYRes] = primVtx->GetYRes(); | |
686 | values[AliDielectronVarManager::kZRes] = primVtx->GetZRes(); | |
ffbede40 | 687 | values[AliDielectronVarManager::kCentrality] = centralityF; |
6551594b | 688 | } |
689 | ||
690 | inline void AliDielectronVarManager::FillVarAODEvent(const AliAODEvent *event, Double_t * const values) | |
691 | { | |
692 | // | |
693 | // Fill event information available for histogramming into an array | |
694 | // | |
695 | ||
696 | // Fill common AliVEvent interface information | |
697 | FillVarVEvent(event, values); | |
698 | ||
699 | // Fill AliAODEvent interface specific information | |
700 | } | |
701 | ||
702 | inline void AliDielectronVarManager::FillVarMCEvent(const AliMCEvent *event, Double_t * const values) | |
703 | { | |
704 | // | |
705 | // Fill event information available for histogramming into an array | |
706 | // | |
707 | ||
708 | // Fill common AliVEvent interface information | |
709 | FillVarVEvent(event, values); | |
710 | ||
711 | // Fill AliMCEvent interface specific information | |
712 | } | |
713 | ||
714 | inline void AliDielectronVarManager::InitESDpid(Int_t type) | |
715 | { | |
716 | // | |
717 | // initialize PID parameters | |
718 | // type=0 is simulation | |
719 | // type=1 is data | |
720 | ||
572b0139 | 721 | if (!fgESDpid) fgESDpid=new AliESDpid; |
6551594b | 722 | Double_t alephParameters[5]; |
723 | // simulation | |
724 | alephParameters[0] = 2.15898e+00/50.; | |
725 | alephParameters[1] = 1.75295e+01; | |
726 | alephParameters[2] = 3.40030e-09; | |
727 | alephParameters[3] = 1.96178e+00; | |
728 | alephParameters[4] = 3.91720e+00; | |
8df8e382 | 729 | fgESDpid->GetTOFResponse().SetTimeResolution(80.); |
6551594b | 730 | |
731 | // data | |
83e37742 | 732 | if (type==1){ |
733 | alephParameters[0] = 0.0283086/0.97; | |
6551594b | 734 | alephParameters[1] = 2.63394e+01; |
735 | alephParameters[2] = 5.04114e-11; | |
736 | alephParameters[3] = 2.12543e+00; | |
737 | alephParameters[4] = 4.88663e+00; | |
8df8e382 | 738 | fgESDpid->GetTOFResponse().SetTimeResolution(130.); |
83e37742 | 739 | fgESDpid->GetTPCResponse().SetMip(50.); |
6551594b | 740 | } |
741 | ||
742 | fgESDpid->GetTPCResponse().SetBetheBlochParameters( | |
743 | alephParameters[0],alephParameters[1],alephParameters[2], | |
744 | alephParameters[3],alephParameters[4]); | |
745 | ||
8df8e382 | 746 | fgESDpid->GetTPCResponse().SetSigma(3.79301e-03, 2.21280e+04); |
6551594b | 747 | } |
748 | ||
2a14a7b1 | 749 | inline void AliDielectronVarManager::InitAODpidUtil(Int_t type) |
750 | { | |
751 | if (!fgAODpidUtil) fgAODpidUtil=new AliAODpidUtil; | |
752 | Double_t alephParameters[5]; | |
753 | // simulation | |
754 | alephParameters[0] = 2.15898e+00/50.; | |
755 | alephParameters[1] = 1.75295e+01; | |
756 | alephParameters[2] = 3.40030e-09; | |
757 | alephParameters[3] = 1.96178e+00; | |
758 | alephParameters[4] = 3.91720e+00; | |
759 | fgAODpidUtil->GetTOFResponse().SetTimeResolution(80.); | |
760 | ||
761 | // data | |
762 | if (type==1){ | |
763 | alephParameters[0] = 0.0283086/0.97; | |
764 | alephParameters[1] = 2.63394e+01; | |
765 | alephParameters[2] = 5.04114e-11; | |
766 | alephParameters[3] = 2.12543e+00; | |
767 | alephParameters[4] = 4.88663e+00; | |
768 | fgAODpidUtil->GetTOFResponse().SetTimeResolution(130.); | |
769 | fgAODpidUtil->GetTPCResponse().SetMip(50.); | |
770 | } | |
771 | ||
772 | fgAODpidUtil->GetTPCResponse().SetBetheBlochParameters( | |
773 | alephParameters[0],alephParameters[1],alephParameters[2], | |
774 | alephParameters[3],alephParameters[4]); | |
775 | ||
776 | fgAODpidUtil->GetTPCResponse().SetSigma(3.79301e-03, 2.21280e+04); | |
777 | } | |
778 | ||
572b0139 | 779 | |
780 | inline void AliDielectronVarManager::SetEvent(AliVEvent * const ev) | |
781 | { | |
782 | ||
783 | fgEvent = ev; | |
784 | if (fgKFVertex) delete fgKFVertex; | |
785 | fgKFVertex=0x0; | |
8df8e382 | 786 | if (ev && ev->GetPrimaryVertex()) fgKFVertex=new AliKFVertex(*ev->GetPrimaryVertex()); |
572b0139 | 787 | } |
2a14a7b1 | 788 | |
789 | ||
790 | inline Bool_t AliDielectronVarManager::GetDCA(const AliAODTrack *track, Double_t d0z0[2]) | |
791 | { | |
792 | if(track->TestBit(AliAODTrack::kIsDCA)){ | |
793 | d0z0[0]=track->DCA(); | |
794 | d0z0[1]=track->ZAtDCA(); | |
795 | return kTRUE; | |
796 | } | |
797 | ||
798 | Double_t covd0z0[3]; | |
799 | AliAODTrack copy(*track); | |
800 | AliAODVertex *vtx =(AliAODVertex*)(fgEvent->GetPrimaryVertex()); | |
801 | Double_t fBzkG = fgEvent->GetMagneticField(); // z componenent of field in kG | |
802 | Bool_t ok = copy.PropagateToDCA(vtx,fBzkG,kVeryBig,d0z0,covd0z0); | |
803 | if(!ok){ | |
804 | d0z0[0]=-999.; | |
805 | d0z0[1]=-999.; | |
806 | } | |
807 | return ok; | |
808 | } | |
809 | ||
b2a297fa | 810 | /* |
811 | inline void AliDielectronVarManager::FillValues(const TParticle *particle, Double_t *values) | |
812 | { | |
813 | // | |
814 | // Fill track information available for histogramming into an array | |
815 | // | |
816 | ||
817 | // Fill TParticle interface information | |
818 | values[AliDielectronVarManager::kPx] = particle->Px(); | |
819 | values[AliDielectronVarManager::kPy] = particle->Py(); | |
820 | values[AliDielectronVarManager::kPz] = particle->Pz(); | |
821 | values[AliDielectronVarManager::kPt] = particle->Pt(); | |
822 | values[AliDielectronVarManager::kP] = particle->P(); | |
823 | ||
824 | values[AliDielectronVarManager::kXv] = particle->Vx(); | |
825 | values[AliDielectronVarManager::kYv] = particle->Vy(); | |
826 | values[AliDielectronVarManager::kZv] = particle->Vz(); | |
827 | ||
828 | values[AliDielectronVarManager::kOneOverPt] = 1./particle->Pt(); | |
829 | values[AliDielectronVarManager::kPhi] = particle->Phi(); | |
830 | values[AliDielectronVarManager::kTheta] = | |
831 | values[AliDielectronVarManager::kEta] = particle->Eta(); | |
832 | values[AliDielectronVarManager::kY] = | |
833 | ||
834 | values[AliDielectronVarManager::kE] = particle->Energy(); | |
835 | values[AliDielectronVarManager::kM] = particle->GetMass(); | |
836 | ||
837 | values[AliDielectronVarManager::kCharge] = particle->GetPDG()->Charge()/3; // uggly | |
838 | ||
839 | }*/ | |
840 | ||
841 | #endif | |
fb7d2d99 | 842 |