b4fcf06563ccb28fdefd34ba568a592057eef46b
[u/mrichter/AliRoot.git] / EMCAL / AliEMCALPID.h
1 #ifndef AliEMCALPID_H
2 #define AliEMCALPID_H
3
4 /* $Id$ */
5 /* History of cvs commits:
6  *
7  * $Log$
8  * Revision 1.13  2007/07/11 13:43:29  hristov
9  * New class AliESDEvent, backward compatibility with the old AliESD (Christian)
10  *
11  * Revision 1.12  2007/02/20 20:17:43  hristov
12  * Corrected array size, removed warnings (icc)
13  *
14  * Revision 1.11  2006/12/19 08:49:35  gustavo
15  * New PID class for EMCAL, bayesian analysis done with ESD data, PID information filled when calling AliEMCALPID in AliEMCALReconstructor::FillESD()
16  *
17  *
18  */
19
20 ///////////////////////////////////////////////////////////////////////////////
21 // Class AliEMCALPID
22 ///////////////////////////////////////////////////////////////////////////////
23
24 #include "TTask.h"
25 #include "TArrayD.h"
26 #include "AliESDEvent.h"
27 #include "AliPID.h" 
28
29 class AliEMCALPID : public TTask {
30
31 public:
32   
33   AliEMCALPID();
34   virtual ~AliEMCALPID() { }
35   
36   void     RunPID(AliESDEvent *esd);
37   void     ComputePID(Double_t energy, Double_t lambda0); // give the PID of a cluster
38   TArrayD  DistLambda0(Double_t energy, Int_t nature); // compute lambda0 distributions
39   
40   Double_t GetPID(Int_t idx) const {if (idx>=0&&idx<3) return fPID[idx]; else return 0.;}
41   Double_t GetPIDFinal(Int_t idx) const {if (idx>=0&&idx<AliPID::kSPECIESN) return fPIDFinal[idx]; else return 0.;}
42   Double_t GetPIDWeight(Int_t idx) const {if (idx>=0&&idx<3) return fPIDWeight[idx]; else return 0.;}
43   
44   void     SetPID(Double_t val, Int_t idx) {if (idx>=0&&idx<3) fPID[idx] = val;}
45   void     SetPIDFinal(Double_t val, Int_t idx) {if (idx>=0&&idx<AliPID::kSPECIESN) fPIDFinal[idx] = val;}
46   void     SetPIDWeight(Double_t val, Int_t idx) {if (idx>=0&&idx<3) fPIDWeight[idx] = val;}
47   void     SetPrintInfo(Bool_t yesno) {fPrintInfo = yesno;}
48    void     SetReconstructor(Bool_t yesno) {fReconstructor = yesno;}
49  private:
50   
51   Double_t Polynomial(Double_t x, Double_t *params);
52   
53   Bool_t   fPrintInfo;          // flag to decide if details about PID must be printed
54   
55   Double_t fGamma[6][6];        // Parameter to Compute PID
56   Double_t fHadron[6][6];                 // Parameter to Compute PID
57   Double_t fPiZero5to10[6][6];  // Parameter to Compute PID
58   Double_t fPiZero10to60[6][6]; // Parameter to Compute PID
59   
60   Float_t fPID[3];
61   
62   Float_t fPIDFinal[AliPID::kSPECIESN+1];  // final PID format
63   Float_t fPIDWeight[3];                 // order: gamma, pi0, hadrons,
64   Double_t fProbGamma;                  // probility to be a Gamma
65   Double_t fProbPiZero;                 // probility to be a PiO
66   Double_t fProbHadron;                 // probility to be a Hadron
67   Bool_t    fReconstructor;               //Fill esdcalocluster when called from EMCALReconstructor
68   
69   ClassDef(AliEMCALPID, 0)
70 };
71
72 #endif // ALIEMCALPID_H
73