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