]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/AliITSPident.h
Bayesian PID: new parametrization and code update (E. Biolcati - F.Prino)
[u/mrichter/AliRoot.git] / ITS / AliITSPident.h
1 #ifndef ALIITSPIDENT_H
2 #define ALIITSPIDENT_H
3
4 /////////////////////////////////////////////////////////////////////////
5 //Class for PID in the ITS                                               //
6 //The PID is based on the likelihood of all the four ITS' layers,        //
7 //without using the truncated mean for the dE/dx. The response           //
8 //functions for each layer are convoluted Landau-Gaussian functions.     // 
9 // Origin: Elena Bruna bruna@to.infn.it, Massimo Masera masera@to.infn.it//
10 ////////////////////////////////////////////////////////////////////////
11
12 #include <TObject.h>
13 class AliESDtrack;
14 class TF1;
15 class AliITSPidParams;
16
17 class AliITSPident : public TObject{
18
19  public:
20   AliITSPident();
21   AliITSPident(Double_t mom,AliITSPidParams *pars,Double_t *Qlay,Double_t priorip=0.066,Double_t priorik=0.103,Double_t prioripi=0.83,Double_t priorie=0.001);
22   
23   AliITSPident(AliESDtrack *track,AliITSPidParams *pars,Double_t priorip=0.066,Double_t priorik=0.103,Double_t prioripi=0.83,Double_t priorie=0.001);
24
25   virtual ~AliITSPident();
26   Double_t GetCondFunPro(Int_t lay) const {
27     return fCondFunProLay[lay];
28   }
29   Double_t GetProdCondFunPro() const;
30   Double_t GetCondFunK(Int_t lay) const {
31     return fCondFunKLay[lay];
32   }
33   Double_t GetProdCondFunK() const;
34   Double_t GetCondFunPi(Int_t lay) const {
35     return fCondFunPiLay[lay];
36   }
37   Double_t GetProdCondFunPi() const;
38
39   Double_t GetPBayesp()const {return fPBayesp;}
40   Double_t GetPBayesk()const {return fPBayesk;}
41   Double_t GetPBayespi()const {return fPBayespi;}
42   Double_t GetPPriorip() const {return fPPriorip;}
43   Double_t GetPPriorik() const {return fPPriorik;}
44   Double_t GetPPrioripi() const {return fPPrioripi;}
45   Double_t GetPPriorie() const {return fPPriorie;}
46   
47  private:
48
49   void CalculateResponses(Double_t mom,AliITSPidParams *pars, Double_t *Qlay);
50   Double_t CookCombinedBayes(Double_t condfun[][3],Double_t *prior,Int_t part)const;
51   Double_t CookProd(Double_t condfun[][3],Int_t part) const;
52   Double_t CookSum(Double_t condfun[][3],Double_t *prior) const;
53
54   AliITSPident(const AliITSPident &ob); // copy constructor
55   AliITSPident& operator=(const AliITSPident & ob); // ass. op.
56
57   Double_t fCondFunProLay[8];     // one for each silicon layer
58   Double_t fCondFunKLay[8];       // cond. prob. function kaons per layer
59   Double_t fCondFunPiLay[8];      // cond. prob. function pions per layer
60   Double_t fPBayesp;               // Bayes prob. 
61   Double_t fPBayesk;               // Bayes prob. for kaons
62   Double_t fPBayespi;              // Bayes prob. for pions 
63   Double_t fPPriorip;              // Priori prob. 
64   Double_t fPPriorik;              // Priori prob. for kaons
65   Double_t fPPrioripi;             // Priori prob. for pions
66   Double_t fPPriorie;              // Priori prob. for electrons
67
68   ClassDef(AliITSPident,4);
69 };
70 #endif