]>
Commit | Line | Data |
---|---|---|
6aecf4fd | 1 | #include <TParticle.h> |
2 | ||
3 | #include "AliLog.h" | |
4 | #include "AliStack.h" | |
5 | #include "AliESDtrack.h" | |
6 | #include "AliTOFT0maker.h" | |
7 | ||
8 | #include "AliRsnMonitorTrack.h" | |
9 | ||
10 | ClassImp(AliRsnMonitorTrack) | |
11 | ||
12 | AliRsnMonitorTrack::AliRsnMonitorTrack() : | |
2a1c7696 | 13 | fCutsPassed(kFALSE), |
14 | fPrim(kFALSE), | |
15 | fPDG(0), | |
16 | fPDGM(0), | |
17 | fMother(-1), | |
18 | fStatus(0), | |
19 | fLength(0.0), | |
20 | fCharge(0), | |
21 | fITSsa(kFALSE), | |
22 | fTOFok(kFALSE), | |
23 | fITSchi2(1E10), | |
24 | fITSsignal(0.0), | |
25 | fTPCcount(0), | |
26 | fTPCchi2(1E10), | |
27 | fTPCsignal(1E10), | |
28 | fTOFsignal(0.0) | |
6aecf4fd | 29 | { |
30 | // | |
31 | // Unique constructor | |
32 | // | |
4d921955 | 33 | |
34 | Int_t k; | |
35 | ||
36 | for (k = 0; k < 2; k++) fDCA[k] = 0.0; | |
37 | for (k = 0; k < 6; k++) fITSmap[k] = 0; | |
38 | for (k = 0; k < AliPID::kSPECIES; k++) { | |
39 | fITSnsigma[k] = 0.0; | |
40 | fTPCnsigma[k] = 0.0; | |
41 | fTOFref [k] = 0.0; | |
42 | fTOFsigma [k] = 0.0; | |
43 | } | |
44 | for (k = 0; k < 3; k++) { | |
45 | fPsim[k] = 0.0; | |
46 | fPrec[k] = 0.0; | |
47 | fPtpc[k] = 0.0; | |
48 | } | |
6aecf4fd | 49 | } |
50 | ||
51 | AliRsnMonitorTrack::AliRsnMonitorTrack(const AliRsnMonitorTrack& copy) : | |
2a1c7696 | 52 | TObject(copy), |
53 | fCutsPassed(copy.fCutsPassed), | |
54 | fPrim(copy.fPrim), | |
55 | fPDG(copy.fPDG), | |
56 | fPDGM(copy.fPDGM), | |
57 | fMother(copy.fMother), | |
58 | fStatus(copy.fStatus), | |
59 | fLength(copy.fLength), | |
60 | fCharge(copy.fCharge), | |
61 | fITSsa(copy.fITSsa), | |
62 | fTOFok(copy.fTOFok), | |
63 | fITSchi2(copy.fITSchi2), | |
64 | fITSsignal(copy.fITSsignal), | |
65 | fTPCcount(copy.fTPCcount), | |
66 | fTPCchi2(copy.fTPCchi2), | |
67 | fTPCsignal(copy.fTPCsignal), | |
68 | fTOFsignal(copy.fTOFsignal) | |
6aecf4fd | 69 | { |
70 | // | |
71 | // Copy constructor | |
72 | // | |
73 | ||
2a1c7696 | 74 | Int_t k; |
75 | ||
76 | for (k = 0; k < 2; k++) fDCA[k] = copy.fDCA[k]; | |
77 | for (k = 0; k < 6; k++) fITSmap[k] = copy.fITSmap[k]; | |
78 | for (k = 0; k < AliPID::kSPECIES; k++) { | |
79 | fITSnsigma[k] = copy.fITSnsigma[k]; | |
80 | fTPCnsigma[k] = copy.fTPCnsigma[k]; | |
81 | fTOFref [k] = copy.fTOFref [k]; | |
82 | fTOFsigma [k] = copy.fTOFsigma [k]; | |
83 | } | |
84 | for (k = 0; k < 3; k++) { | |
85 | fPsim[k] = copy.fPsim[k]; | |
86 | fPrec[k] = copy.fPrec[k]; | |
87 | fPtpc[k] = copy.fPtpc[k]; | |
88 | } | |
6aecf4fd | 89 | } |
90 | ||
91 | //_____________________________________________________________________________________________ | |
92 | void AliRsnMonitorTrack::Reset() | |
93 | { | |
94 | // | |
95 | // Generic reset method, to set all fields to meaningless values | |
96 | // | |
2a1c7696 | 97 | |
98 | Int_t k; | |
99 | ||
100 | fCutsPassed = kFALSE; | |
101 | fITSsa = kFALSE; | |
102 | fTOFok = kFALSE; | |
103 | fPrim = kFALSE; | |
104 | fPDG = 0; | |
105 | fMother = -1; | |
106 | fPDGM = 0; | |
107 | fStatus = 0; | |
108 | fLength = 0.0; | |
109 | fCharge = 0; | |
110 | ||
111 | for (k = 0; k < 2; k++) fDCA[k] = 1E10; | |
112 | ||
113 | for (k = 0; k < 6; k++) fITSmap[k] = kFALSE; | |
114 | fITSchi2 = 1E10; | |
115 | fITSsignal = 0.0; | |
116 | ||
117 | fTPCchi2 = 1E10; | |
118 | fTPCsignal = 1E10; | |
119 | fTPCcount = 0; | |
120 | ||
121 | fTOFsignal = 1E10; | |
122 | ||
123 | for (k = 0; k < AliPID::kSPECIES; k++) { | |
124 | fITSnsigma[k] = 1E10; | |
125 | fTPCnsigma[k] = 1E10; | |
126 | fTOFref [k] = 1E10; | |
127 | fTOFsigma [k] = 1E10; | |
128 | } | |
129 | ||
130 | for (k = 0; k < 3; k++) fPsim[k] = fPrec[k] = fPtpc[k] = 0.0; | |
6aecf4fd | 131 | } |
132 | ||
133 | //__________________________________________________________________________________________________ | |
134 | Bool_t AliRsnMonitorTrack::AdoptMC(Int_t label, AliStack *stack) | |
135 | { | |
136 | // | |
137 | // Get info from MC for a given track in the stack | |
138 | // | |
139 | ||
2a1c7696 | 140 | if (!stack) return kFALSE; |
141 | ||
142 | Int_t nPart = stack->GetNtrack(); | |
143 | if (label < 0 || label > nPart) { | |
144 | AliError(Form("Label = %d -- MAX = %d", label, nPart)); | |
145 | return kFALSE; | |
146 | } | |
147 | ||
148 | TParticle *mc = stack->Particle(label); | |
149 | if (!mc) return kFALSE; | |
150 | ||
151 | // 'direct' data | |
152 | fPDG = (Int_t)mc->GetPdgCode(); | |
153 | fMother = (Int_t)mc->GetFirstMother(); | |
154 | fPrim = (Bool_t)stack->IsPhysicalPrimary(label); | |
155 | fPDGM = 0; | |
156 | fPsim[0] = mc->Px(); | |
157 | fPsim[1] = mc->Py(); | |
158 | fPsim[2] = mc->Pz(); | |
159 | ||
160 | // assign mother (if any) | |
161 | if (fMother >= 0 && fMother < nPart) { | |
162 | TParticle *m = stack->Particle(fMother); | |
163 | if (m) fPDGM = (Int_t)TMath::Abs(m->GetPdgCode()); | |
164 | } | |
165 | ||
166 | return kTRUE; | |
6aecf4fd | 167 | } |