]>
Commit | Line | Data |
---|---|---|
10d100d4 | 1 | #ifndef ALITPCPIDRESPONSE_H |
2 | #define ALITPCPIDRESPONSE_H | |
8c6a71ab | 3 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * |
4 | * See cxx source for full Copyright notice */ | |
5 | ||
6 | //------------------------------------------------------- | |
7 | // TPC PID class | |
8 | // A very naive design... Should be made better by the detector experts... | |
9 | // Origin: Iouri Belikov, CERN, Jouri.Belikov@cern.ch | |
aea7a46d | 10 | // With many additions and modifications suggested by |
11 | // Alexander Kalweit, GSI, alexander.philipp.kalweit@cern.ch | |
12 | // Dariusz Miskowiec, GSI, D.Miskowiec@gsi.de | |
8c6a71ab | 13 | //------------------------------------------------------- |
14 | #include <Rtypes.h> | |
d2aa6df0 | 15 | #include <TObjArray.h> |
8c6a71ab | 16 | |
aea7a46d | 17 | #include "AliPID.h" |
18 | ||
10d100d4 | 19 | class AliTPCPIDResponse { |
8c6a71ab | 20 | public: |
10d100d4 | 21 | AliTPCPIDResponse(); |
d2aa6df0 | 22 | AliTPCPIDResponse(const Double_t *param); |
10d100d4 | 23 | virtual ~AliTPCPIDResponse() {} |
24 | void SetSigma(Float_t res0, Float_t resN2); | |
aea7a46d | 25 | void SetBetheBlochParameters(Double_t kp1, |
26 | Double_t kp2, | |
27 | Double_t kp3, | |
28 | Double_t kp4, | |
29 | Double_t kp5 | |
30 | ); | |
10d100d4 | 31 | void SetMip(Float_t mip) { fMIP = mip; } // Set overall normalisation; mean dE/dx for MIP |
aea7a46d | 32 | Double_t Bethe(Double_t bg) const; |
d2aa6df0 | 33 | void SetUseDatabase(Bool_t useDatabase) { fUseDatabase = useDatabase;} |
34 | ||
35 | void SetResponseFunction(AliPID::EParticleType type, TObject * const o) { fResponseFunctions.AddAt(o,(Int_t)type); } | |
36 | const TObject * const GetResponseFunction(AliPID::EParticleType type) { return fResponseFunctions.At((Int_t)type); } | |
37 | ||
10d100d4 | 38 | Double_t GetExpectedSignal(const Float_t mom, |
aea7a46d | 39 | AliPID::EParticleType n=AliPID::kKaon) const; |
10d100d4 | 40 | Double_t GetExpectedSigma(const Float_t mom, const Int_t nPoints, |
aea7a46d | 41 | AliPID::EParticleType n=AliPID::kKaon) const; |
10d100d4 | 42 | Float_t GetNumberOfSigmas(const Float_t mom, const Float_t dEdx, |
43 | const Int_t nPoints, | |
44 | AliPID::EParticleType n=AliPID::kKaon) const { | |
45 | ||
46 | Double_t bethe=GetExpectedSignal(mom,n); | |
47 | Double_t sigma=GetExpectedSigma(mom,nPoints,n); | |
48 | return (dEdx-bethe)/sigma; | |
49 | } | |
aea7a46d | 50 | |
10d100d4 | 51 | Double_t GetMIP() const { return fMIP;} |
8c6a71ab | 52 | private: |
10d100d4 | 53 | Float_t fMIP; // dEdx for MIP |
54 | Float_t fRes0; // relative dEdx resolution rel sigma = fRes0*sqrt(1+fResN2/npoint) | |
55 | Float_t fResN2; // relative Npoint dependence rel sigma = fRes0*sqrt(1+fResN2/npoint) | |
aea7a46d | 56 | |
57 | Double_t fKp1; // Parameters | |
58 | Double_t fKp2; // of | |
59 | Double_t fKp3; // the ALEPH | |
60 | Double_t fKp4; // Bethe-Bloch | |
61 | Double_t fKp5; // formula | |
62 | ||
d2aa6df0 | 63 | Bool_t fUseDatabase; // flag if fine-tuned database-response or simple ALEPH BB should be used |
64 | TObjArray fResponseFunctions; //! ObjArray of response functions individually for each particle | |
65 | ||
66 | ClassDef(AliTPCPIDResponse,3) // TPC PID class | |
8c6a71ab | 67 | }; |
68 | ||
69 | #endif | |
70 | ||
71 |