Double check if SM is running added. Some redundant output removed from SM
[u/mrichter/AliRoot.git] / ITS / AliITSPid.h
1 #ifndef ALIITSPID_H
2 #define ALIITSPID_H
3 /////////////////////////////////////////////////////////////////
4 // Class for identification of pions,kaons and protons in ITS  //
5 // Prior particles population (probabilities) are taken from   //
6 // Hijing event generator.                                     //
7 /////////////////////////////////////////////////////////////////
8
9 #include <TObject.h>
10 #include <TVectorfwd.h>
11
12 class TClonesArray;
13 class AliITSIOTrack;
14 class AliKalmanTrack;
15 class AliITStrackV2;
16 class TF1;
17
18
19 class  AliITSPid : public TObject {
20
21 public:
22                 AliITSPid(Int_t ntrs=1000);
23                 virtual ~AliITSPid(){}
24
25         void    SetEdep(Int_t track,Float_t Edep);
26         void    SetPmom(Int_t track,Float_t Pmom);
27         void    SetPcod(Int_t track,Int_t Pcod);
28         void    Print(Int_t track);
29         virtual void Print(Option_t *option="") const {TObject::Print(option);}
30         void    Tab(void);
31         void    Reset(void);
32         void    SetVec(Int_t track,const TVector& info) const;
33         TVector* GetVec(Int_t track) const;
34         Int_t   GetPcode(TClonesArray* rps,Float_t pm);
35         Int_t   GetPcode(Float_t p,Float_t pm);
36         Int_t   GetPcode(AliKalmanTrack* track);
37         Int_t   GetPcode(AliITSIOTrack* track); 
38         Int_t   GetPcode(AliITStrackV2* track);
39         void    SetCut(Int_t n,Float_t pm,Float_t pilo,Float_t pihi,
40                        Float_t klo,Float_t khi,Float_t plo,Float_t phi);
41         void    SetAProb(Int_t ivar,Int_t icut,Float_t apro){ fAprob[ivar][icut]=apro; } 
42         Float_t GetAProb(Int_t ivar,Int_t icut) const { return fAprob[ivar][icut]; } 
43         Float_t GetWpi() const {return fWpi;}
44         Float_t GetWk() const {return fWk;}
45         Float_t GetWp() const {return fWp;}
46         Int_t   GetPid() const {return fPcode;};
47 protected:
48         // copy constructor and assignment operator are protected
49         // since they are not allowed
50         AliITSPid(const AliITSPid &source); // copy constructor. 
51         AliITSPid& operator=(const AliITSPid&  source); // = operator.
52
53         int     Qcomp(Float_t* qa,Float_t* qb) const {return qa[0]>qb[0]?1:0;}
54         Float_t Qtrm(Int_t track);
55         Float_t Qtrm(Float_t qarr[6],Int_t narr) const;
56         Int_t   Wpik(Float_t pm,Float_t q);
57         Int_t   Wpikp(Float_t pm,Float_t q);
58         Int_t   Pion(){return fWpi=1.,fPcode=211;}
59         Int_t   Kaon(){return fWk=1.,fPcode=321;}
60         Int_t   Proton(){return fWp=1.,fPcode=2212;}
61         //================ Data members ========================
62         Float_t fCut[13][7],fAprob[3][8]; //Cuts and prior probs tables
63         Int_t       fMxtrs; //Maximum tracks limit
64         TClonesArray *fTrs; //Tracks set under investigation
65         Float_t fWpi,fWk,fWp; //Probabilities for pions,kaons,protons        
66         Float_t fRpik,fRppi,fRpka,fRp; //Signal ratios
67         Int_t   fPcode;  //Particle code
68         Float_t fSigmin; // Tuning parameter
69         Int_t   fSilent; // Output suppresion flag
70         TF1*    fCutKa;  // Pions-kaons cut function
71         TF1*    fCutPr;  // Kaons-protons cut function
72         TF1*    fGGpi[6];// Pions signal parametrization for Hijing
73         TF1*    fGGka[3];// Kaons          --//--
74         TF1*    fGGpr[3];// Protons        --//--
75         TF1*    fggpi;   // Pions signal for given momentum
76         TF1*    fggka;   // Kaons          --//--
77         TF1*    fggpr;   // Protons        --//--
78   ClassDef(AliITSPid,2) // Class for ITS PID
79 };
80
81 #endif  
82
83
84
85