]> git.uio.no Git - u/mrichter/AliRoot.git/blame - STEER/STEERBase/AliPIDResponse.h
Counters for diffractive collisions
[u/mrichter/AliRoot.git] / STEER / STEERBase / AliPIDResponse.h
CommitLineData
29bf19f2 1#ifndef ALIPIDRESPONSE_H
2#define ALIPIDRESPONSE_H
3/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
5
6//---------------------------------------------------------------//
7// Base class for handling the pid response //
8// functions of all detectors //
9// and give access to the nsigmas //
10// //
11// Origin: Jens Wiechula, Uni Tuebingen, jens.wiechula@cern.ch //
12//---------------------------------------------------------------//
13
14#include "AliITSPIDResponse.h"
15#include "AliTPCPIDResponse.h"
16#include "AliTRDPIDResponse.h"
17#include "AliTOFPIDResponse.h"
e96b9916 18#include "AliEMCALPIDResponse.h"
29bf19f2 19
b79db598 20
29bf19f2 21#include "AliVParticle.h"
22#include "AliVTrack.h"
23
24#include "TNamed.h"
25
4ec8e76d 26class TF1;
644666df 27class AliOADBContainer;
00a38d07 28class TObjArray;
29
30class AliVEvent;
31class AliTRDPIDResponseObject;
32class AliTOFPIDParams;
29bf19f2 33
34class AliPIDResponse : public TNamed {
35public:
4ec8e76d 36 AliPIDResponse(Bool_t isMC=kFALSE);
37 virtual ~AliPIDResponse();
29bf19f2 38
00a38d07 39 enum EDetector {
40 kITS=0,
41 kTPC=1,
42 kTRD=2,
43 kTOF=3,
44 kHMPID=4,
45 kEMCAL=5,
46 kPHOS=6,
47 kNdetectors=7
48 };
49
fd21ec8d 50 enum EDetCode {
51 kDetITS = 0x1,
52 kDetTPC = 0x2,
53 kDetTRD = 0x4,
54 kDetTOF = 0x8,
55 kDetHMPID = 0x10,
56 kDetEMCAL = 0x20,
57 kDetPHOS = 0x40
58 };
59
29bf19f2 60 enum EStartTimeType_t {kFILL_T0,kTOF_T0, kT0_T0, kBest_T0};
fd21ec8d 61
62 enum ITSPIDmethod { kITSTruncMean, kITSLikelihood };
63
64 enum EDetPidStatus {
65 kDetNoSignal=0,
66 kDetPidOk=1,
67 kDetMismatch=2
68 };
644666df 69
29bf19f2 70 AliITSPIDResponse &GetITSResponse() {return fITSResponse;}
71 AliTPCPIDResponse &GetTPCResponse() {return fTPCResponse;}
72 AliTOFPIDResponse &GetTOFResponse() {return fTOFResponse;}
73 AliTRDPIDResponse &GetTRDResponse() {return fTRDResponse;}
e96b9916 74 AliEMCALPIDResponse &GetEMCALResponse() {return fEMCALResponse;}
fd21ec8d 75
00a38d07 76 Float_t NumberOfSigmas(EDetector detCode, const AliVParticle *track, AliPID::EParticleType type) const;
77 Float_t NumberOfSigmas(EDetCode detCode, const AliVParticle *track, AliPID::EParticleType type) const;
29bf19f2 78
00a38d07 79 virtual Float_t NumberOfSigmasITS (const AliVParticle *track, AliPID::EParticleType type) const;
80 virtual Float_t NumberOfSigmasTPC (const AliVParticle *track, AliPID::EParticleType type) const;
644666df 81 virtual Float_t NumberOfSigmasTPC (const AliVParticle *track, AliPID::EParticleType type, AliTPCPIDResponse::ETPCdEdxSource dedxSource);
00a38d07 82 virtual Float_t NumberOfSigmasEMCAL(const AliVParticle *track, AliPID::EParticleType type, Double_t &eop, Double_t showershape[4]) const;
83 virtual Float_t NumberOfSigmasTOF (const AliVParticle *track, AliPID::EParticleType type) const = 0;
84 virtual Float_t NumberOfSigmasEMCAL(const AliVParticle *track, AliPID::EParticleType type) const;
85
bd58d4b9 86 virtual Bool_t IdentifiedAsElectronTRD(const AliVTrack *track, Double_t efficiencyLevel,Double_t centrality=-1,AliTRDPIDResponse::ETRDPIDMethod PIDmethod=AliTRDPIDResponse::kLQ1D) const;
29bf19f2 87
00a38d07 88 EDetPidStatus ComputePIDProbability (EDetector detCode, const AliVTrack *track, Int_t nSpecies, Double_t p[]) const;
89 EDetPidStatus ComputePIDProbability (EDetCode detCode, const AliVTrack *track, Int_t nSpecies, Double_t p[]) const;
fd21ec8d 90
00a38d07 91 EDetPidStatus ComputeITSProbability (const AliVTrack *track, Int_t nSpecies, Double_t p[]) const;
fd21ec8d 92 EDetPidStatus ComputeTPCProbability (const AliVTrack *track, Int_t nSpecies, Double_t p[]) const;
93 EDetPidStatus ComputeTOFProbability (const AliVTrack *track, Int_t nSpecies, Double_t p[]) const;
bd58d4b9 94 EDetPidStatus ComputeTRDProbability (const AliVTrack *track, Int_t nSpecies, Double_t p[],AliTRDPIDResponse::ETRDPIDMethod PIDmethod=AliTRDPIDResponse::kLQ1D) const;
fd21ec8d 95 EDetPidStatus ComputeEMCALProbability(const AliVTrack *track, Int_t nSpecies, Double_t p[]) const;
96 EDetPidStatus ComputePHOSProbability (const AliVTrack *track, Int_t nSpecies, Double_t p[]) const;
97 EDetPidStatus ComputeHMPIDProbability(const AliVTrack *track, Int_t nSpecies, Double_t p[]) const;
98
fd21ec8d 99 void SetITSPIDmethod(ITSPIDmethod pmeth) { fITSPIDmethod = pmeth; }
ea235c90 100
4ec8e76d 101 void SetOADBPath(const char* path) {fOADBPath=path;}
80f28562 102 const char *GetOADBPath() const {return fOADBPath.Data();}
00a38d07 103
104 void SetCustomTPCpidResponse(const char* tpcpid) { fCustomTPCpidResponse = tpcpid; }
105 const char* GetCustomTPCpidResponse() const { return fCustomTPCpidResponse.Data(); }
106
107 void InitialiseEvent(AliVEvent *event, Int_t pass, Int_t run=-1);
ea235c90 108 void SetCurrentFile(const char* file) { fCurrentFile=file; }
4ec8e76d 109
00a38d07 110 // cache PID in the track
111 void FillTrackDetectorPID();
112
e96b9916 113 AliVEvent * GetCurrentEvent() const {return fCurrentEvent;}
114
fd21ec8d 115 // User settings for the MC period and reco pass
116 void SetMCperiod(const char *mcPeriod) {fMCperiodUser=mcPeriod;}
117 void SetRecoPass(Int_t recoPass) {fRecoPassUser=recoPass;}
80f28562 118
119 // event info
120 Float_t GetCurrentCentrality() const {return fCurrCentrality;};
121
0b39f221 122 // TOF setting
123 void SetTOFtail(Float_t tail=1.1){if(tail > 0) fTOFtail=tail; else printf("TOF tail should be greater than 0 (nothing done)\n");};
5f8db5fe 124 void SetTOFResponse(AliVEvent *vevent,EStartTimeType_t option);
0b39f221 125
539a5a59 126 virtual Float_t GetTPCsignalTunedOnData(const AliVTrack *t) const {return t->GetTPCsignal();};
127 Bool_t IsTunedOnData() const {return fTuneMConData;};
128 void SetTunedOnData(Bool_t flag=kTRUE,Int_t recoPass=0){fTuneMConData = flag; if(recoPass>0) fRecoPassUser = recoPass;};
129
4ec8e76d 130 AliPIDResponse(const AliPIDResponse &other);
131 AliPIDResponse& operator=(const AliPIDResponse &other);
80f28562 132
29bf19f2 133
134protected:
135 AliITSPIDResponse fITSResponse; //PID response function of the ITS
136 AliTPCPIDResponse fTPCResponse; //PID response function of the TPC
137 AliTRDPIDResponse fTRDResponse; //PID response function of the TRD
138 AliTOFPIDResponse fTOFResponse; //PID response function of the TOF
e96b9916 139 AliEMCALPIDResponse fEMCALResponse; //PID response function of the EMCAL
4ec8e76d 140
fd21ec8d 141 Float_t fRange; // nSigma max in likelihood
142 ITSPIDmethod fITSPIDmethod; // 0 = trunc mean; 1 = likelihood
143
4ec8e76d 144private:
145 Bool_t fIsMC; // If we run on MC data
146
147 TString fOADBPath; // OADB path to use
00a38d07 148 TString fCustomTPCpidResponse; // Custom TPC Pid Response file for debugging purposes
4ec8e76d 149
150 TString fBeamType; //! beam type (PP) or (PBPB)
151 TString fLHCperiod; //! LHC period
152 TString fMCperiodTPC; //! corresponding MC period to use for the TPC splines
fd21ec8d 153 TString fMCperiodUser; // MC prodution requested by the user
ea235c90 154 TString fCurrentFile; //! name of currently processed file
4ec8e76d 155 Int_t fRecoPass; //! reconstruction pass
fd21ec8d 156 Int_t fRecoPassUser; // reconstruction pass explicitly set by the user
4ec8e76d 157 Int_t fRun; //! current run number
158 Int_t fOldRun; //! current run number
fd21ec8d 159
4ec8e76d 160 TObjArray *fArrPidResponseMaster; //! TPC pid splines
161 TF1 *fResolutionCorrection; //! TPC resolution correction
644666df 162 AliOADBContainer* fOADBvoltageMaps; //! container with the voltage maps
4ec8e76d 163
db0e2c5f 164 AliTRDPIDResponseObject *fTRDPIDResponseObject; //! TRD PID Response Object
ea235c90 165
0b39f221 166 Float_t fTOFtail; //! TOF tail effect used in TOF probability
b79db598 167 AliTOFPIDParams *fTOFPIDParams; //! TOF PID Params - period depending (OADB loaded)
e96b9916 168
b2138b40 169 TObjArray *fEMCALPIDParams; //! EMCAL PID Params
170
e96b9916 171 AliVEvent *fCurrentEvent; //! event currently being processed
80f28562 172
173 Float_t fCurrCentrality; //! current centrality
4ec8e76d 174
539a5a59 175 Bool_t fTuneMConData; // switch to force the MC to be similar to data (dE/dx)
176
4ec8e76d 177 void ExecNewRun();
178
179 //
180 //setup parametrisations
181 //
182
183 //ITS
184 void SetITSParametrisation();
185
186 //TPC
187 void SetTPCPidResponseMaster();
188 void SetTPCParametrisation();
189 Double_t GetTPCMultiplicityBin(const AliVEvent * const event);
190
ea235c90 191 //TRD
192 void SetTRDPidResponseMaster();
193 void InitializeTRDResponse();
bd58d4b9 194 void SetTRDSlices(UInt_t TRDslicesForPID[2],AliTRDPIDResponse::ETRDPIDMethod method) const;
ea235c90 195
4ec8e76d 196 //TOF
b79db598 197 void SetTOFPidResponseMaster();
198 void InitializeTOFResponse();
b2138b40 199
200 //EMCAL
201 void SetEMCALPidResponseMaster();
202 void InitializeEMCALResponse();
203
4ec8e76d 204 //
205 void SetRecoInfo();
29bf19f2 206
00a38d07 207 ClassDef(AliPIDResponse, 9); //PID response handling
29bf19f2 208};
209
29bf19f2 210#endif