]>
Commit | Line | Data |
---|---|---|
10d100d4 | 1 | #ifndef ALITOFPIDRESPONSE_H |
2 | #define ALITOFPIDRESPONSE_H | |
3 | ||
4 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
5 | * See cxx source for full Copyright notice */ | |
6 | ||
7 | //------------------------------------------------------- | |
8 | // TOF PID class | |
9 | // Origin: Iouri Belikov, CERN, Jouri.Belikov@cern.ch | |
10 | //------------------------------------------------------- | |
11 | ||
b3f687a1 | 12 | #include <TObject.h> |
13 | #include <TF1.h> | |
10d100d4 | 14 | #include "AliPID.h" |
67376d1d | 15 | #include "AliVParticle.h" |
16 | #include "AliVTrack.h" | |
10d100d4 | 17 | |
b79db598 | 18 | class AliTOFPIDParams; |
3cb11031 | 19 | class TH1F; |
20 | class TH1D; | |
b79db598 | 21 | |
10d100d4 | 22 | class AliTOFPIDResponse : public TObject { |
23 | public: | |
f858b00e | 24 | |
10d100d4 | 25 | AliTOFPIDResponse(); |
26 | AliTOFPIDResponse(Double_t *param); | |
f858b00e | 27 | ~AliTOFPIDResponse(){} |
10d100d4 | 28 | |
29 | void SetTimeResolution(Float_t res) { fSigma = res; } | |
30 | void SetTimeZero(Double_t t0) { fTime0=t0; } | |
31 | Double_t GetTimeZero() const { return fTime0; } | |
32 | ||
33 | void SetMaxMismatchProbability(Double_t p) {fPmax=p;} | |
34 | Double_t GetMaxMismatchProbability() const {return fPmax;} | |
35 | ||
67376d1d | 36 | Double_t GetExpectedSigma(Float_t mom, Float_t tof, Float_t massZ) const; |
37 | Double_t GetExpectedSigma(Float_t mom, Float_t tof, AliPID::EParticleType type) const; | |
38 | Double_t GetExpectedSignal(const AliVTrack *track, AliPID::EParticleType type) const; | |
10d100d4 | 39 | |
4fc0f532 | 40 | Double_t GetMismatchProbability(Double_t time,Double_t eta) const; |
10d100d4 | 41 | |
c53e310b | 42 | static Double_t GetTailRandomValue(Float_t pt=1.0,Float_t eta=0.0,Float_t time=0.0,Float_t addmism=0.0); // generate a random value to add a tail to TOF time (for MC analyses), addmism = additional mismatch in percentile |
3cb11031 | 43 | static Double_t GetMismatchRandomValue(Float_t eta); // generate a random value for mismatched tracks (for MC analyses) |
a2c30af1 | 44 | |
6c68754e | 45 | void SetT0event(Float_t *t0event){for(Int_t i=0;i < fNmomBins;i++) fT0event[i] = t0event[i];}; |
46 | void SetT0resolution(Float_t *t0resolution){for(Int_t i=0;i < fNmomBins;i++) fT0resolution[i] = t0resolution[i];}; | |
d4d15b21 | 47 | void ResetT0info(){ for(Int_t i=0;i < fNmomBins;i++){ fT0event[i] = 0.0; fT0resolution[i] = 0.0; fMaskT0[i] = 0;} }; |
6c68754e | 48 | void SetMomBoundary(); |
49 | Int_t GetMomBin(Float_t p) const; | |
50 | Int_t GetNmomBins(){return fNmomBins;}; | |
cbc50aad | 51 | Float_t GetMinMom(Int_t ibin) const {if(ibin >=0 && ibin < fNmomBins) return fPCutMin[ibin]; else return 0.0;}; // overrun static array - coverity |
52 | Float_t GetMaxMom(Int_t ibin) const {if(ibin >=0 && ibin < fNmomBins) return fPCutMin[ibin+1]; else return 0.0;}; // overrun static array - coverity | |
53 | void SetT0bin(Int_t ibin,Float_t t0bin){if(ibin >=0 && ibin < fNmomBins) fT0event[ibin] = t0bin;}; // overrun static array - coverity | |
54 | void SetT0binRes(Int_t ibin,Float_t t0binRes){if(ibin >=0 && ibin < fNmomBins) fT0resolution[ibin] = t0binRes;}; // overrun static array - coverity | |
55 | void SetT0binMask(Int_t ibin,Int_t t0binMask){if(ibin >=0 && ibin < fNmomBins) fMaskT0[ibin] = t0binMask;}; // overrun static array - coverity | |
56 | Float_t GetT0bin(Int_t ibin) const {if(ibin >=0 && ibin < fNmomBins) return fT0event[ibin]; else return 0.0;}; // overrun static array - coverity | |
57 | Float_t GetT0binRes(Int_t ibin) const {if(ibin >=0 && ibin < fNmomBins) return fT0resolution[ibin]; else return 0.0;}; // overrun static array - coverity | |
58 | Int_t GetT0binMask(Int_t ibin) const {if(ibin >=0 && ibin < fNmomBins) return fMaskT0[ibin]; else return 0;}; // overrun static array - coverity | |
f858b00e | 59 | |
60 | // Get Start Time for a track | |
7170298c | 61 | Float_t GetStartTime(Float_t mom) const; |
62 | Float_t GetStartTimeRes(Float_t mom) const; | |
d4d15b21 | 63 | Int_t GetStartTimeMask(Float_t mom) const; |
6c68754e | 64 | |
95ad1018 | 65 | // Tracking resolution for expected times |
66 | void SetTrackParameter(Int_t ip,Float_t value){if(ip>=0 && ip < 4) fPar[ip] = value;}; | |
67 | Float_t GetTrackParameter(Int_t ip){if(ip>=0 && ip < 4) return fPar[ip]; else return -1.0;}; | |
c53e310b | 68 | Int_t GetTOFchannel(AliVParticle *trk) const; |
95ad1018 | 69 | |
b3f687a1 | 70 | Float_t GetTOFtail() {if(fTOFtailResponse) return fTOFtailResponse->GetParameter(3);else return -1;}; |
71 | void SetTOFtail(Float_t tail); | |
72 | ||
10d100d4 | 73 | private: |
74 | Double_t fSigma; // intrinsic TOF resolution | |
f858b00e | 75 | |
76 | // obsolete | |
10d100d4 | 77 | Double_t fPmax; // "maximal" probability of mismathing (at ~0.5 GeV/c) |
78 | Double_t fTime0; // time zero | |
f858b00e | 79 | //-------------- |
10d100d4 | 80 | |
6c68754e | 81 | // About event time (t0) info |
82 | static const Int_t fNmomBins = 10; // number of momentum bin | |
83 | Float_t fT0event[fNmomBins]; // t0 (best, T0, T0-TOF, ...) of the event as a function of p | |
84 | Float_t fT0resolution[fNmomBins]; // t0 (best, T0, T0-TOF, ...) resolution as a function of p | |
85 | Float_t fPCutMin[fNmomBins+1]; // min values for p bins | |
d4d15b21 | 86 | Int_t fMaskT0[fNmomBins]; // mask withthe T0 used (0x1=T0-TOF,0x2=T0A,0x3=TOC) for p bins |
95ad1018 | 87 | Float_t fPar[4]; // parameter for expected times resolution |
d4d15b21 | 88 | |
a2c30af1 | 89 | static TF1 *fTOFtailResponse; // function to generate a TOF tail |
3cb11031 | 90 | static TH1F *fHmismTOF; // TOF mismatch distribution |
91 | static TH1D *fHchannelTOFdistr;// TOF channel distance distribution | |
a2c30af1 | 92 | |
93 | ClassDef(AliTOFPIDResponse,5) // TOF PID class | |
10d100d4 | 94 | }; |
95 | ||
96 | #endif |