Added V0A23 (V0 rings 2-3), V0C01 (V0 rings 0-1) and V0S = V0A23+V0C01
[u/mrichter/AliRoot.git] / STEER / STEERBase / AliTOFPIDResponse.h
CommitLineData
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 18class AliTOFPIDParams;
3cb11031 19class TH1F;
20class TH1D;
b79db598 21
10d100d4 22class AliTOFPIDResponse : public TObject {
23public:
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