]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/AliITSPident.h
Adding copy constructor and assignment operator
[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 #include "AliITStrackV2.h"
12 #include <TObject.h>
13 #include <Riostream.h>
14 #include <TF1.h>
15 #include <TTree.h>
16 #include "AliITSPidParItem.h"
17 #include "AliITSSteerPid.h"
18 class AliITSPident : public TObject{
19
20  public:
21   AliITSPident();
22   AliITSPident(Double_t mom,Double_t invPt,Double_t dEdx,AliITSSteerPid *sp,Float_t *Qlay,Float_t priorip=0.066,Float_t priorik=0.103,Float_t prioripi=0.83,Float_t priorie=0.001);
23   
24   AliITSPident(AliITStrackV2 *trackITS,AliITSSteerPid *sp,Float_t *Qlay,Float_t priorip=0.066,Float_t priorik=0.103,Float_t prioripi=0.83,Float_t priorie=0.001);
25
26   virtual ~AliITSPident();
27   Float_t GetP() const {return fMom;}//local momentum (GeV/c)
28   Double_t GetdEdx() const {return fdEdx;} //dEdx (ADC units)
29   Double_t GetCondFunPro(Int_t lay) const {
30     return fCondFunProLay[lay];
31   }
32   Double_t GetProdCondFunPro() const {
33     Double_t rv=1.; for(Int_t i=0;i<4;i++)rv*=GetCondFunPro(i);
34     return rv;
35   }
36   Double_t GetCondFunK(Int_t lay) const {
37     return fCondFunKLay[lay];
38   }
39   Double_t GetProdCondFunK() const {
40     Double_t rv=1.; for(Int_t i=0;i<4;i++)rv*=GetCondFunK(i);
41     return rv;
42   }
43   Double_t GetCondFunPi(Int_t lay) const {
44     return fCondFunPiLay[lay];
45   }
46   Double_t GetProdCondFunPi() const {
47     Double_t rv=1.; for(Int_t i=0;i<4;i++)rv*=GetCondFunPi(i);
48     return rv;
49   }
50   Float_t GetInvPt() const {return fInvPt;}
51   void PrintParameters() const;
52   Float_t GetPBayesp()const {return fPBayesp;}
53   Float_t GetPBayesk()const {return fPBayesk;}
54   Float_t GetPBayespi()const {return fPBayespi;}
55   Float_t GetPPriorip() const {return fPPriorip;}
56   Float_t GetPPriorik() const {return fPPriorik;}
57   Float_t GetPPrioripi() const {return fPPrioripi;}
58   Float_t GetPPriorie() const {return fPPriorie;}
59   
60   static Double_t Langaufun(Double_t *x, Double_t *par);
61   static Double_t Langaufun2(Double_t *x, Double_t *par);
62   static Double_t Langaufunnorm(Double_t *x, Double_t *par);
63   static Double_t Gaus2(Double_t *x, Double_t *par);
64   
65  private:
66
67   void CookFunItsLay(Int_t lay,Int_t opt,Double_t *par,Double_t dedx,Double_t mom,Double_t rangei,Double_t rangef,TString comment);
68   void CookBayes(Double_t *condfun,Float_t *prior);
69   Float_t CookCombinedBayes(Double_t condfun[][3],Float_t *prior,Int_t part)const;
70   Float_t CookProd(Double_t condfun[][3],Int_t part) const;
71   Float_t CookSum(Double_t condfun[][3],Float_t *prior) const;
72   AliITSPident(const AliITSPident &ob); // copy constructor
73   AliITSPident& operator=(const AliITSPident & /* source */); // ass. op.
74
75   Float_t fMom;                   // Particle momentum
76   Double_t fdEdx;                 // Particle dE/dx
77   Double_t fCondFunProLay[4];     // one for each silicon layer
78   Double_t fCondFunKLay[4];       // cond. prob. function kaons per layer
79   Double_t fCondFunPiLay[4];      // cond. prob. function pions per layer
80   Float_t fPBayesp;               // Bayes prob. 
81   Float_t fPBayesk;               // Bayes prob. for kaons
82   Float_t fPBayespi;              // Bayes prob. for pions 
83   Float_t fPPriorip;              // Priori prob. 
84   Float_t fPPriorik;              // Priori prob. for kaons
85   Float_t fPPrioripi;             // Priori prob. for pions
86   Float_t fPPriorie;              // Priori prob. for electrons
87   Float_t fInvPt;                 // Particle Inverse Transverse momentum
88
89   ClassDef(AliITSPident,1);
90 };
91 #endif