]> git.uio.no Git - u/mrichter/AliRoot.git/blame - STEER/AOD/AliAODPid.h
Reverting accidental commit
[u/mrichter/AliRoot.git] / STEER / AOD / AliAODPid.h
CommitLineData
5d8eaff6 1#ifndef AliAODPID_H
2#define AliAODPID_H
1c28d174 3/* Copyright(c) 1998-2007, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
5
6/* $Id$ */
7
8//-------------------------------------------------------------------------
9// AOD Pid object for additional pid information
d7bdc804 10// Author: Annalisa Mastroserio, CERN
1c28d174 11//-------------------------------------------------------------------------
12
13#include <TObject.h>
14
af48efa8 15class AliTPCdEdxInfo;
16
1c28d174 17class AliAODPid : public TObject {
18
19 public:
1c28d174 20 AliAODPid();
21 virtual ~AliAODPid();
22 AliAODPid(const AliAODPid& pid);
23 AliAODPid& operator=(const AliAODPid& pid);
d7bdc804 24
25 enum{kSPECIES=5, kTRDnPlanes=6};
26
373fc041 27 //setters
28 void SetITSsignal(Double_t its) {fITSsignal=its;}
6d354ed1 29 void SetITSdEdxSamples(const Double_t s[4]);
373fc041 30 void SetTPCsignal(Double_t tpc) {fTPCsignal=tpc;}
597b16d8 31 void SetTPCsignalN(UShort_t tpcN) {fTPCsignalN=tpcN;}
febefa51 32 void SetTPCmomentum(Double_t tpcMom) {fTPCmomentum=tpcMom;}
af48efa8 33 void SetTPCdEdxInfo(AliTPCdEdxInfo * dEdxInfo);
59a8e853 34 inline void SetTRDsignal(Int_t nslices, const Double_t * const trdslices);
febefa51 35 void SetTRDmomentum(Int_t nplane, Float_t trdMom) {fTRDmomentum[nplane]=trdMom;}
59a8e853 36 inline void SetTRDncls(UChar_t ncls, Int_t layer = -1);
37 void SetTRDntrackletsPID(UChar_t ntls) {fTRDntls = ntls;}
373fc041 38 void SetTOFsignal(Double_t tof) {fTOFesdsignal=tof;}
b13bcc35 39 void SetTOFpidResolution(Double_t tofPIDres[5]);
373fc041 40 void SetIntegratedTimes(Double_t timeint[5]);
41 void SetHMPIDsignal(Double_t hmpid) {fHMPIDsignal=hmpid;}
028c7a2c 42 void SetHMPIDprobs(Double_t hmpPid[5]);
d7bdc804 43
febefa51 44 Double_t GetITSsignal() const {return fITSsignal;}
6d354ed1 45 void GetITSdEdxSamples(Double_t *s) const;
46 Double_t GetITSdEdxSample(Int_t i) const {
47 if(i>=0 && i<4) return fITSdEdxSamples[i];
48 else return 0.;
49 }
febefa51 50 Double_t GetTPCsignal() const {return fTPCsignal;}
597b16d8 51 UShort_t GetTPCsignalN() const {return fTPCsignalN;}
af48efa8 52 AliTPCdEdxInfo * GetTPCdEdxInfo()const{return fTPCdEdxInfo;}
53
febefa51 54 Double_t GetTPCmomentum() const {return fTPCmomentum;}
55 Int_t GetTRDnSlices() const {return fTRDnSlices;}
56 Double_t* GetTRDsignal() const {return fTRDslices;}
59a8e853 57 const Float_t* GetTRDmomentum() const {return fTRDmomentum;}
58 UChar_t GetTRDncls(UChar_t layer) const { if(layer > 5) return 0; return fTRDncls[layer];}
59 inline UChar_t GetTRDncls() const;
60 UChar_t GetTRDntrackletsPID() const {return fTRDntls;}
febefa51 61 Double_t GetTOFsignal() const {return fTOFesdsignal;}
62 Double_t GetHMPIDsignal() const {return fHMPIDsignal;}
ea235c90 63 void GetHMPIDprobs(Double_t *p) const;
febefa51 64
65 void GetIntegratedTimes(Double_t timeint[5]) const;
b13bcc35 66 void GetTOFpidResolution (Double_t tofRes[5]) const;
1c28d174 67
68 private :
febefa51 69 Double32_t fITSsignal; //[0.,0.,10] detector raw signal
6d354ed1 70 Double32_t fITSdEdxSamples[4];//[0.,0.,10] ITS dE/dx samples
febefa51 71 Double32_t fTPCsignal; //[0.,0.,10] detector raw signal
597b16d8 72 UShort_t fTPCsignalN; // number of points used for TPC dE/dx
febefa51 73 Double_t fTPCmomentum; // momentum at the inner wall of TPC;
74 Int_t fTRDnSlices; // N slices used for PID in the TRD
59a8e853 75 UChar_t fTRDntls; // number of tracklets used for PID calculation
76 UChar_t fTRDncls[6]; // number of clusters used for dE/dx calculation
771ec43e 77 Double32_t* fTRDslices; //[fTRDnSlices]
78 Float_t fTRDmomentum[6]; // momentum at the TRD layers
febefa51 79 Double32_t fTOFesdsignal; // TOF signal - t0 (T0 interaction time)
771ec43e 80 Double32_t fTOFpidResolution[5]; // TOF pid resolution for each mass hypotesys
81 Double32_t fIntTime[5]; // track time hypothesis
febefa51 82 Double32_t fHMPIDsignal; // detector raw signal
771ec43e 83 Double32_t fHMPIDprobs[5]; // detector pid probabilities
996918c5 84
771ec43e 85 AliTPCdEdxInfo * fTPCdEdxInfo; // object containing dE/dx information for different pad regions
febefa51 86
996918c5 87 ClassDef(AliAODPid, 10);
1c28d174 88};
89
59a8e853 90//_____________________________________________________________
91void AliAODPid::SetTRDsignal(Int_t nslices, const Double_t * const trdslices) {
92 //
93 // Set TRD dE/dx slices and the number of dE/dx slices per track
94 //
95 if(fTRDslices && fTRDnSlices != nslices) {
96 delete [] fTRDslices; fTRDslices = NULL;
97 };
98 if(!fTRDslices) fTRDslices = new Double32_t[nslices];
99 fTRDnSlices = nslices;
100 for(Int_t is = 0; is < fTRDnSlices; is++) fTRDslices[is] = trdslices[is];
101}
102
103//_____________________________________________________________
104void AliAODPid::SetTRDncls(UChar_t ncls, Int_t layer) {
105 //
106 // Set the number of clusters / tracklet
107 // If no layer is specified the full number of clusters will be put in layer 0
108 //
109 if(layer > 5) return;
110 if(layer < 0) fTRDncls[0] = ncls;
111 else fTRDncls[layer] = ncls;
112}
113
114//_____________________________________________________________
115UChar_t AliAODPid::GetTRDncls() const{
116 //
117 // Get number of clusters per track
118 // Calculated as sum of the number of clusters per tracklet
119 //
120 UChar_t ncls = 0;
121 for(Int_t ily = 0; ily < 6; ily++) ncls += fTRDncls[ily];
122 return ncls;
123}
1c28d174 124#endif