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