]>
Commit | Line | Data |
---|---|---|
1 | // | |
2 | // Class AliRsnMonitorTrack | |
3 | // | |
4 | // Monitor object used | |
5 | // for storing info ina TTree | |
6 | // and studying cut values and variables. | |
7 | // | |
8 | // author: A. Pulvirenti | |
9 | // | |
10 | ||
11 | #ifndef ALIRSNMONITORTRACK_H | |
12 | #define ALIRSNMONITORTRACK_H | |
13 | ||
14 | #include "AliPID.h" | |
15 | ||
16 | class AliESDtrack; | |
17 | class AliTOFT0maker; | |
18 | class AliStack; | |
19 | ||
20 | class AliRsnMonitorTrack : public TObject | |
21 | { | |
22 | public: | |
23 | ||
24 | AliRsnMonitorTrack(); | |
25 | AliRsnMonitorTrack(const AliRsnMonitorTrack& copy); | |
26 | //AliRsnMonitorTrack& operator=(const AliRsnMonitorTrack& copy) {MakeCopy(copy); return (*this);} | |
27 | virtual ~AliRsnMonitorTrack() { /*nothing*/ } | |
28 | ||
29 | void Reset(); | |
30 | Bool_t AdoptMC(Int_t label, AliStack *stack); | |
31 | ||
32 | Bool_t& CutsPassed() {return fCutsPassed;} | |
33 | ||
34 | Double_t& PsimX() {return fPsim[0];} | |
35 | Double_t& PrecX() {return fPrec[0];} | |
36 | Double_t& PtpcX() {return fPtpc[0];} | |
37 | ||
38 | Double_t& PsimY() {return fPsim[1];} | |
39 | Double_t& PrecY() {return fPrec[1];} | |
40 | Double_t& PtpcY() {return fPtpc[1];} | |
41 | ||
42 | Double_t& PsimZ() {return fPsim[2];} | |
43 | Double_t& PrecZ() {return fPrec[2];} | |
44 | Double_t& PtpcZ() {return fPtpc[2];} | |
45 | ||
46 | Double_t PsimT() {return TMath::Sqrt(fPsim[0]*fPsim[0] + fPsim[1]*fPsim[1]);} | |
47 | Double_t PrecT() {return TMath::Sqrt(fPrec[0]*fPrec[0] + fPrec[1]*fPrec[1]);} | |
48 | Double_t PtpcT() {return TMath::Sqrt(fPtpc[0]*fPtpc[0] + fPtpc[1]*fPtpc[1]);} | |
49 | ||
50 | Double_t Psim() {return TMath::Sqrt(PsimT()*PsimT() + fPsim[2]*fPsim[2]);} | |
51 | Double_t Prec() {return TMath::Sqrt(PrecT()*PrecT() + fPrec[2]*fPrec[2]);} | |
52 | Double_t Ptpc() {return TMath::Sqrt(PtpcT()*PtpcT() + fPtpc[2]*fPtpc[2]);} | |
53 | ||
54 | Bool_t& Prim() {return fPrim;} | |
55 | Int_t& PDG() {return fPDG;} | |
56 | Int_t& PDGM() {return fPDGM;} | |
57 | Int_t& Mother() {return fMother;} | |
58 | ||
59 | Bool_t OkFlag(UInt_t f) {return ((fStatus & f) != 0);} | |
60 | UInt_t& Status() {return fStatus;} | |
61 | Double_t& Length() {return fLength;} | |
62 | Int_t& Charge() {return fCharge;} | |
63 | Double_t& DCAr() {return fDCA[0];} | |
64 | Double_t& DCAz() {return fDCA[1];} | |
65 | ||
66 | Bool_t& ITSsa() {return fITSsa;} | |
67 | Bool_t& TOFok() {return fTOFok;} | |
68 | ||
69 | Bool_t& ITSmap(Int_t i) {if (i>=0 && i<6) return fITSmap[i]; else return fITSmap[0];} | |
70 | Int_t ITScount() {return (SPDcount() + SDDcount() + SSDcount());} | |
71 | Int_t SPDcount() {Int_t count=0; if (fITSmap[0]) count++; if (fITSmap[1]) count++; return count;} | |
72 | Int_t SDDcount() {Int_t count=0; if (fITSmap[2]) count++; if (fITSmap[3]) count++; return count;} | |
73 | Int_t SSDcount() {Int_t count=0; if (fITSmap[4]) count++; if (fITSmap[5]) count++; return count;} | |
74 | Double_t& ITSchi2() {return fITSchi2;} | |
75 | Double_t& ITSsignal() {return fITSsignal;} | |
76 | Double_t& ITSnsigma(Int_t i) {if (i>=0 && i<AliPID::kSPECIES) return fITSnsigma[i]; else return fITSnsigma[0];} | |
77 | ||
78 | Int_t& TPCcount() {return fTPCcount;} | |
79 | Double_t& TPCchi2() {return fTPCchi2;} | |
80 | Double_t& TPCsignal() {return fTPCsignal;} | |
81 | Double_t& TPCnsigma(Int_t i) {if (i>=0 && i<AliPID::kSPECIES) return fTPCnsigma[i]; else return fTPCnsigma[0];} | |
82 | ||
83 | Double_t& TOFsignal() {return fTOFsignal;} | |
84 | Double_t& TOFsigma(Int_t i) {if (i>=0 && i<AliPID::kSPECIES) return fTOFsigma[i]; else return fTOFsigma[0];} | |
85 | Double_t& TOFref(Int_t i) {if (i>=0 && i<AliPID::kSPECIES) return fTOFref[i]; else return fTOFref[0];} | |
86 | Double_t TOFnsigma(Int_t i) {if (i>=0 && i<AliPID::kSPECIES) return ((fTOFsignal - fTOFref[i]) / fTOFsigma[i]); return 1E6;} | |
87 | ||
88 | private: | |
89 | ||
90 | Bool_t fCutsPassed; // did it pass all defined cuts? | |
91 | ||
92 | Bool_t fPrim; // is physical primary? | |
93 | Int_t fPDG; // true PDG code | |
94 | Int_t fPDGM; // PDG code of mother (if any) | |
95 | Int_t fMother; // label of mother (if any) | |
96 | ||
97 | UInt_t fStatus; // 'status' flag of track in ESD (0 = none) | |
98 | Double_t fLength; // integrated length | |
99 | Int_t fCharge; // track charge | |
100 | Double_t fDCA[2]; // DCA ([0] = xy, [1] = z) | |
101 | ||
102 | Bool_t fITSsa; // to know if its is ITS standalone (otherwise it is TPC) | |
103 | Bool_t fTOFok; // to know if track has a TOF match | |
104 | ||
105 | Bool_t fITSmap[6]; // ITS cluster map | |
106 | Double_t fITSchi2; // chi2 in ITS | |
107 | Double_t fITSsignal; // ITS signal used for PID | |
108 | Double_t fITSnsigma[AliPID::kSPECIES]; // number of sigmas ITS | |
109 | ||
110 | Int_t fTPCcount; // # TPC clusters | |
111 | Double_t fTPCchi2; // TPC chi 2 | |
112 | Double_t fTPCsignal; // TPC dEdx signal | |
113 | Double_t fTPCnsigma[AliPID::kSPECIES]; // number of sigmas TPC for: e, mu, pi, K, p | |
114 | ||
115 | Double_t fTOFsignal; // TOF signal | |
116 | Double_t fTOFsigma[AliPID::kSPECIES]; // TOF sigma for: e, mu, pi, K, p | |
117 | Double_t fTOFref[AliPID::kSPECIES]; // expected times for: e, mu, pi, K, p | |
118 | ||
119 | Double_t fPsim[3]; // simulated momentum | |
120 | Double_t fPrec[3]; // reconstructed momentum | |
121 | Double_t fPtpc[3]; // reconstructed momentum at the TPC inner wall | |
122 | ||
123 | ClassDef(AliRsnMonitorTrack, 1) | |
124 | }; | |
125 | ||
126 | #endif |