]>
Commit | Line | Data |
---|---|---|
304864ab | 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 Int_t ParticleCode(Int_t iType) | |
43 | {return fgkParticleCode[iType];}; | |
44 | ||
45 | AliPID(); | |
46 | AliPID(const Double_t* probDensity, Bool_t charged = kTRUE); | |
47 | AliPID(const Float_t* probDensity, Bool_t charged = kTRUE); | |
48 | AliPID(const AliPID& pid); | |
49 | AliPID& operator = (const AliPID& pid); | |
50 | ||
51 | Double_t GetProbability(EParticleType iType, | |
52 | const Double_t* prior) const; | |
53 | Double_t GetProbability(EParticleType iType) const; | |
54 | void GetProbabilities(Double_t* probabilities, | |
55 | const Double_t* prior) const; | |
56 | void GetProbabilities(Double_t* probabilities) const; | |
57 | EParticleType GetMostProbable(const Double_t* prior) const; | |
58 | EParticleType GetMostProbable() const; | |
59 | ||
60 | static void SetPriors(const Double_t* prior, | |
61 | Bool_t charged = kTRUE); | |
62 | static void SetPrior(EParticleType iType, Double_t prior); | |
63 | ||
304864ab | 64 | AliPID& operator *= (const AliPID& pid); |
65 | ||
66 | private: | |
a9bbb414 | 67 | |
68 | void Init(); | |
69 | ||
304864ab | 70 | Bool_t fCharged; // flag for charged/neutral |
71 | Double_t fProbDensity[kSPECIESN]; // probability densities | |
72 | static Double_t fgPrior[kSPECIESN]; // a priori probabilities | |
73 | ||
a9bbb414 | 74 | static /*const*/ Float_t fgkParticleMass[kSPECIESN+1]; // particle masses |
304864ab | 75 | static const char* fgkParticleName[kSPECIESN+1]; // particle names |
76 | static const Int_t fgkParticleCode[kSPECIESN+1]; // particle codes | |
77 | ||
78 | ClassDef(AliPID, 1) // particle id probability densities | |
79 | }; | |
80 | ||
81 | ||
82 | AliPID operator * (const AliPID& pid1, const AliPID& pid2); | |
83 | ||
84 | ||
85 | #endif |