]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG3/dielectron/AliDielectronVarManager.h
Updates and additions: Classes for signal and spectrum extraction; saving of
[u/mrichter/AliRoot.git] / PWG3 / dielectron / AliDielectronVarManager.h
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       #
15 //#   Markus    Köhler,   GSI / M.Koehler@gsi.de              #
16 //#   Frederick Kramer,   Uni Ffm / Frederick.Kramer@cern.ch  #
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>
28 #include <AliAODEvent.h>
29 #include <AliMCEvent.h>
30 #include <AliVVertex.h>
31 #include <AliESDVertex.h>
32
33 #include <AliVParticle.h>
34 #include <AliESDtrack.h>
35 #include <AliAODTrack.h>
36 #include <AliAODPid.h>
37 #include <AliKFParticle.h>
38 #include <AliKFVertex.h>
39 #include <AliMCParticle.h>
40 #include <AliAODMCParticle.h>
41 #include <AliVTrack.h>  // ?
42
43 #include <AliExternalTrackParam.h>
44 #include <AliESDpid.h>
45
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
86       
87     kTPCnSigmaEle,           // number of sigmas to the dE/dx electron line in the TPC
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       
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
105     kLegDist,                // distance of the legs
106     kLegDistXY,              // distance of the legs in XY
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
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
118     kNTrk,                   // number of tracks (or tracklets)
119     kTracks,                 // ESD tracks
120     kNevents,                // event counter
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
131   static void InitESDpid(Int_t type=0);
132   static void SetESDpid(AliESDpid * const pid) {fgESDpid=pid;}
133   static AliESDpid* GetESDpid() {return fgESDpid;}
134   static void SetEvent(AliVEvent * const ev);
135
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);
144   static void FillVarMCParticle(const AliMCParticle *particle,      Double_t * const values);
145   static void FillVarAODMCParticle(const AliAODMCParticle *particle, Double_t * const values);
146   static void FillVarDielectronPair(const AliDielectronPair *pair,   Double_t * const values);
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
154   static AliKFVertex *fgKFVertex;          // kf vertex
155   
156   AliDielectronVarManager(const AliDielectronVarManager &c);
157   AliDielectronVarManager &operator=(const AliDielectronVarManager &c);
158   
159   ClassDef(AliDielectronVarManager,1);
160 };
161
162
163 //Inline functions
164 inline void AliDielectronVarManager::Fill(const TObject* object, Double_t * const values)
165 {
166   //
167   // Main function to fill all available variables according to the type of particle
168   //
169
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
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();
209
210   if ( fgEvent ) AliDielectronVarManager::Fill(fgEvent, values);
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();
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();
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);
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);
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);
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
280   // ...
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;
292
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   }
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();
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;
374   values[AliDielectronVarManager::kPairType]     = pair->GetType();
375 }
376
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
440   if (!fgESDpid) fgESDpid=new AliESDpid;
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
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 }
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