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