Adding some further mother volumes to speed-up the overlap checking and particle...
[u/mrichter/AliRoot.git] / ITS / AliITSPident.h
CommitLineData
e62c1aea 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////////////////////////////////////////////////////////////////////////
b68da4a2 11
e62c1aea 12#include <TObject.h>
b68da4a2 13class AliITStrackV2;
14class AliITSSteerPid;
15class TF1;
16class AliITSPidParItem;
e62c1aea 17class AliITSPident : public TObject{
18
19 public:
20 AliITSPident();
b68da4a2 21 AliITSPident(Double_t mom,Double_t dEdx,AliITSSteerPid *sp,Float_t *Qlay,Float_t *nlay,Float_t priorip=0.066,Float_t priorik=0.103,Float_t prioripi=0.83,Float_t priorie=0.001);
e62c1aea 22
b68da4a2 23 AliITSPident(AliITStrackV2 *trackITS,AliITSSteerPid *sp,Float_t *Qlay,Float_t *nlay,Float_t priorip=0.066,Float_t priorik=0.103,Float_t prioripi=0.83,Float_t priorie=0.001);
e62c1aea 24
25 virtual ~AliITSPident();
26 Float_t GetP() const {return fMom;}//local momentum (GeV/c)
27 Double_t GetdEdx() const {return fdEdx;} //dEdx (ADC units)
28 Double_t GetCondFunPro(Int_t lay) const {
29 return fCondFunProLay[lay];
30 }
b68da4a2 31 Double_t GetProdCondFunPro() const;
e62c1aea 32 Double_t GetCondFunK(Int_t lay) const {
33 return fCondFunKLay[lay];
34 }
b68da4a2 35 Double_t GetProdCondFunK() const;
e62c1aea 36 Double_t GetCondFunPi(Int_t lay) const {
37 return fCondFunPiLay[lay];
38 }
b68da4a2 39 Double_t GetProdCondFunPi() const;
e62c1aea 40 void PrintParameters() const;
41 Float_t GetPBayesp()const {return fPBayesp;}
42 Float_t GetPBayesk()const {return fPBayesk;}
43 Float_t GetPBayespi()const {return fPBayespi;}
44 Float_t GetPPriorip() const {return fPPriorip;}
45 Float_t GetPPriorik() const {return fPPriorik;}
46 Float_t GetPPrioripi() const {return fPPrioripi;}
47 Float_t GetPPriorie() const {return fPPriorie;}
b68da4a2 48 void GetNclsPerLayer(Int_t *ncls) const;
e62c1aea 49 static Double_t Langaufun(Double_t *x, Double_t *par);
50 static Double_t Langaufun2(Double_t *x, Double_t *par);
51 static Double_t Langaufunnorm(Double_t *x, Double_t *par);
52 static Double_t Gaus2(Double_t *x, Double_t *par);
53
54 private:
55
56 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);
57 void CookBayes(Double_t *condfun,Float_t *prior);
58 Float_t CookCombinedBayes(Double_t condfun[][3],Float_t *prior,Int_t part)const;
59 Float_t CookProd(Double_t condfun[][3],Int_t part) const;
60 Float_t CookSum(Double_t condfun[][3],Float_t *prior) const;
61 AliITSPident(const AliITSPident &ob); // copy constructor
94631b2f 62 AliITSPident& operator=(const AliITSPident & ob); // ass. op.
e62c1aea 63
64 Float_t fMom; // Particle momentum
65 Double_t fdEdx; // Particle dE/dx
b68da4a2 66 Double_t fCondFunProLay[8]; // one for each silicon layer
67 Double_t fCondFunKLay[8]; // cond. prob. function kaons per layer
68 Double_t fCondFunPiLay[8]; // cond. prob. function pions per layer
e62c1aea 69 Float_t fPBayesp; // Bayes prob.
70 Float_t fPBayesk; // Bayes prob. for kaons
71 Float_t fPBayespi; // Bayes prob. for pions
72 Float_t fPPriorip; // Priori prob.
73 Float_t fPPriorik; // Priori prob. for kaons
74 Float_t fPPrioripi; // Priori prob. for pions
75 Float_t fPPriorie; // Priori prob. for electrons
b68da4a2 76 Int_t fNcls[4]; // N. of clusters per layer (sdd1,sdd2,ssd1,ssd2)
77 ClassDef(AliITSPident,2);
e62c1aea 78};
79#endif