]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STEER/AliPID.h
Added AddTrackParams() method for convenience + some comments
[u/mrichter/AliRoot.git] / STEER / AliPID.h
1 #ifndef ALIPID_H
2 #define ALIPID_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 ///////////////////////////////////////////////////////////////////////////////
8 ///                                                                          //
9 /// particle id probability densities                                        //
10 ///                                                                          //
11 ///////////////////////////////////////////////////////////////////////////////
12
13 /* $Id$ */
14
15
16 #include <TObject.h>
17
18
19 class AliPID : public TObject {
20  public:
21   enum {
22     kSPECIES = 5,    // Number of particle species recognized by the PID
23     kSPECIESN = 10   // Number of charged+neutral particle species recognized by the PHOS/EMCAL PID
24   };
25   enum EParticleType {
26     kElectron = 0, 
27     kMuon = 1, 
28     kPion = 2, 
29     kKaon = 3, 
30     kProton = 4, 
31     kPhoton = 5, 
32     kPi0 = 6, 
33     kNeutron = 7, 
34     kKaon0 = 8, 
35     kEleCon = 9,
36     kUnknown = 10
37   };
38   static Float_t       ParticleMass(Int_t iType) 
39     {return fgkParticleMass[iType];};
40   static const char*   ParticleName(Int_t iType) 
41     {return fgkParticleName[iType];};
42   static const char*   ParticleShortName(Int_t iType) 
43     {return fgkParticleShortName[iType];};
44   static const char*   ParticleLatexName(Int_t iType) 
45     {return fgkParticleLatexName[iType];};
46   static Int_t         ParticleCode(Int_t iType) 
47     {return fgkParticleCode[iType];};
48
49   AliPID();
50   AliPID(const Double_t* probDensity, Bool_t charged = kTRUE);
51   AliPID(const Float_t* probDensity, Bool_t charged = kTRUE);
52   AliPID(const AliPID& pid);
53   AliPID& operator = (const AliPID& pid);
54
55   Double_t             GetProbability(EParticleType iType,
56                                       const Double_t* prior) const;
57   Double_t             GetProbability(EParticleType iType) const;
58   void                 GetProbabilities(Double_t* probabilities,
59                                         const Double_t* prior) const;
60   void                 GetProbabilities(Double_t* probabilities) const;
61   EParticleType        GetMostProbable(const Double_t* prior) const;
62   EParticleType        GetMostProbable() const;
63   
64   void                 SetProbabilities(const Double_t* probabilities,
65                                         Bool_t charged = kTRUE);
66
67   static void          SetPriors(const Double_t* prior,
68                                  Bool_t charged = kTRUE);
69   static void          SetPrior(EParticleType iType, Double_t prior);
70
71   AliPID&              operator *= (const AliPID& pid);
72
73  private:
74
75   void                 Init();
76
77   Bool_t               fCharged;                   // flag for charged/neutral
78   Double_t             fProbDensity[kSPECIESN];    // probability densities
79   static Double_t      fgPrior[kSPECIESN];         // a priori probabilities
80
81   static /*const*/ Float_t fgkParticleMass[kSPECIESN+1]; // particle masses
82   static const char*   fgkParticleName[kSPECIESN+1]; // particle names
83   static const char*   fgkParticleShortName[kSPECIESN+1]; // particle names
84   static const char*   fgkParticleLatexName[kSPECIESN+1]; // particle names
85   static const Int_t   fgkParticleCode[kSPECIESN+1]; // particle codes
86
87   ClassDef(AliPID, 2)    // particle id probability densities
88 };
89
90
91 AliPID operator * (const AliPID& pid1, const AliPID& pid2);
92
93
94 #endif