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"
13 #include <Riostream.h>
16 #include "AliITSPidParItem.h"
17 #include "AliITSSteerPid.h"
18 class AliITSPident : public TObject{
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);
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);
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];
32 Double_t GetProdCondFunPro() const {
33 Double_t rv=1.; for(Int_t i=0;i<4;i++)rv*=GetCondFunPro(i);
36 Double_t GetCondFunK(Int_t lay) const {
37 return fCondFunKLay[lay];
39 Double_t GetProdCondFunK() const {
40 Double_t rv=1.; for(Int_t i=0;i<4;i++)rv*=GetCondFunK(i);
43 Double_t GetCondFunPi(Int_t lay) const {
44 return fCondFunPiLay[lay];
46 Double_t GetProdCondFunPi() const {
47 Double_t rv=1.; for(Int_t i=0;i<4;i++)rv*=GetCondFunPi(i);
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;}
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);
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 & ob); // ass. op.
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
89 ClassDef(AliITSPident,1);