]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STEER/STEERBase/AliITSPIDResponse.h
New MFT analysis tools
[u/mrichter/AliRoot.git] / STEER / STEERBase / AliITSPIDResponse.h
1 #ifndef ALIITSPIDRESPONSE_H
2 #define ALIITSPIDRESPONSE_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7
8 //-------------------------------------------------------
9 //                    ITS PID response class
10 //
11 //
12 //-------------------------------------------------------
13 //#include <Rtypes.h>
14 #include <TObject.h>
15 #include "AliPID.h"
16
17 class AliVTrack;
18
19 class AliITSPIDResponse : public TObject {
20
21 public:
22   AliITSPIDResponse(Bool_t isMC=kFALSE);
23   //AliITSPIDResponse(Double_t *param);
24  ~AliITSPIDResponse() {}
25
26  void SetBetheBlochParamsITSTPC(Double_t* param){
27    for(Int_t iPar=0; iPar<5; iPar++) fBBtpcits[iPar]=param[iPar];
28  }
29  void SetBetheBlochParamsITSTPCDeuteron(Double_t* param){
30    for(Int_t iPar=0; iPar<5; iPar++) fBBdeu[iPar]=param[iPar];
31  }
32  void SetBetheBlochParamsITSTPCTriton(Double_t* param){
33    for(Int_t iPar=0; iPar<5; iPar++) fBBtri[iPar]=param[iPar];
34  }
35  void SetBetheBlochParamsITSsa(Double_t* param){
36    for(Int_t iPar=0; iPar<5; iPar++) fBBsa[iPar]=param[iPar];
37  }
38  void SetBetheBlochHybridParamsITSsa(Double_t* param){
39    for(Int_t iPar=0; iPar<9; iPar++) fBBsaHybrid[iPar]=param[iPar];
40  }
41  void SetElectronBetheBlochParamsITSsa(Double_t* param){
42    for(Int_t iPar=0; iPar<5; iPar++) fBBsaElectron[iPar]=param[iPar];
43  }
44
45  Double_t BetheAleph(Double_t p,Double_t mass) const;
46  Double_t Bethe(Double_t p, Double_t mass, Bool_t isSA=kFALSE) const;
47  Double_t Bethe(Double_t p, AliPID::EParticleType species, Bool_t isSA=kFALSE) const;
48  Double_t BetheITSsaHybrid(Double_t p, Double_t mass) const;
49  Double_t GetResolution(Double_t bethe, Int_t nPtsForPid=4, Bool_t isSA=kFALSE,Double_t p=0., AliPID::EParticleType type=AliPID::kPion) const;
50  void GetITSProbabilities(Float_t mom, Double_t qclu[4], Double_t condprobfun[AliPID::kSPECIES],Bool_t isMC=kFALSE) const;
51
52  Double_t GetNumberOfSigmas( const AliVTrack* track, AliPID::EParticleType species) const;
53
54  Double_t GetSignalDelta( const AliVTrack* track, AliPID::EParticleType species, Bool_t ratio=kFALSE) const;
55  
56  Float_t GetNumberOfSigmas(Float_t mom, Float_t signal, AliPID::EParticleType type, Int_t nPtsForPid=4, Bool_t isSA=kFALSE) const {
57    if(type==AliPID::kDeuteron && mom<0.4) return -999.;
58    if(type==AliPID::kTriton && mom<0.55) return -999.;
59    const Double_t chargeFactor = TMath::Power(AliPID::ParticleCharge(type),2.);
60    Float_t bethe = Bethe(mom,type,isSA)*chargeFactor;
61    return (signal - bethe)/GetResolution(bethe,nPtsForPid,isSA,mom,type);
62  }
63  Int_t GetParticleIdFromdEdxVsP(Float_t mom, Float_t signal, Bool_t isSA=kFALSE) const;
64
65 private:
66
67
68   // Data members for truncated mean method
69   Float_t  fRes;             // relative dEdx resolution
70   Double_t fKp1;             // ALEPH BB param 1
71   Double_t fKp2;             // ALEPH BB param 2
72   Double_t fKp3;             // ALEPH BB param 3
73   Double_t fKp4;             // ALEPH BB param 4
74   Double_t fKp5;             // ALEPH BB param 
75   Double_t  fBBsa[5];        // parameters of BB for SA tracks
76   Double_t  fBBsaHybrid[9];  // parameters of Hybrid BB for SA tracks, PHOB + Polinomial al low beta*gamma
77   Double_t  fBBsaElectron[5];// parameters of electron BB for SA tracks
78   Double_t  fBBtpcits[5];     // parameters of BB for TPC+ITS tracks
79   Double_t fBBdeu[5]; // parameters of deuteron BB for TPC+ITS tracks
80   Double_t fBBtri[5]; // parameters of triton BB for TPC+ITS tracks
81   Float_t  fResolSA[5];      // resolutions vs. n. of SDD/SSD points
82   Float_t  fResolTPCITS[5];  // resolutions vs. n. of SDD/SSD points
83   Double_t fResolTPCITSDeu3[3]; // deuteron resolutions vs. p for tracks with 3 SDD/SSD points
84   Double_t fResolTPCITSDeu4[3]; // deuteron resolutions vs. p for tracks with 4 SDD/SSD points
85   Double_t fResolTPCITSTri3[3]; // triton resolutions vs. p for tracks with 3 SDD/SSD points
86   Double_t fResolTPCITSTri4[3]; // triton resolutions vs. p for tracks with 4 SDD/SSD points
87
88   Double_t Bethe(Double_t bg, const Double_t * const par, Bool_t isNuclei) const;
89   ClassDef(AliITSPIDResponse,5)   // ITS PID class
90 };
91
92 #endif
93
94