]>
Commit | Line | Data |
---|---|---|
d679dd6c | 1 | #include "AliHLTTRDTrack.h" |
2 | #include "AliHLTTRDTracklet.h" | |
3 | ||
4 | ||
5 | /** | |
6 | * Default Constructor | |
7 | */ | |
8 | //============================================================================ | |
9 | AliHLTTRDTrack::AliHLTTRDTrack(): | |
10 | fSize(sizeof(AliHLTTRDTrack)), | |
11 | fTRDtrack(NULL), | |
12 | fPIDquality(0), | |
13 | fDE(-1), | |
14 | fFakeRatio(-1), | |
15 | fChi2(-1), | |
16 | fMass(-1), | |
17 | fLab(-1), | |
18 | fN(-1), | |
19 | fIntegratedLength(-1), | |
20 | fX(-1), | |
21 | fAlpha(-1) | |
22 | { | |
23 | InitArrays(); | |
24 | // not to be used | |
25 | } | |
26 | ||
27 | /** | |
28 | * Constructor | |
29 | * Creates hltTrack from TRDtrackV1 | |
30 | */ | |
31 | //============================================================================ | |
32 | AliHLTTRDTrack::AliHLTTRDTrack(AliTRDtrackV1 * inTrack): | |
33 | fSize(sizeof(AliHLTTRDTrack)), | |
34 | fTRDtrack(NULL), | |
35 | fPIDquality(0), | |
36 | fDE(-1), | |
37 | fFakeRatio(-1), | |
38 | fChi2(-1), | |
39 | fMass(-1), | |
40 | fLab(-1), | |
41 | fN(-1), | |
42 | fIntegratedLength(-1), | |
43 | fX(-1), | |
44 | fAlpha(-1) | |
45 | { | |
46 | InitArrays(); | |
47 | ||
48 | fTRDtrack = inTrack; | |
49 | ||
50 | CopyDataMembers(); | |
51 | ||
52 | AddTracklets(); | |
53 | ||
54 | } | |
55 | ||
56 | /** | |
57 | * Default Destructor | |
58 | * In principle should not be empty, but... we do not use it | |
59 | */ | |
60 | //============================================================================ | |
61 | AliHLTTRDTrack::~AliHLTTRDTrack() | |
62 | { | |
63 | ||
64 | } | |
65 | ||
66 | /** | |
67 | * Copy tracklets to the HLTTRDTrack | |
68 | */ | |
69 | //============================================================================ | |
70 | void AliHLTTRDTrack::AddTracklets() | |
71 | { | |
72 | for (Int_t iTracklet = 0; iTracklet < kNplane; iTracklet++) | |
73 | { | |
74 | // if (fTracklet[iTracklet]) | |
75 | // HLTWarning("Trying to rewrite tracklets in the Track. Not good."); | |
76 | AliTRDseedV1 * trdTracklet = fTRDtrack->GetTracklet(iTracklet); | |
77 | if (trdTracklet){ | |
78 | AliHLTTRDTracklet * hltTracklet = new (GetEndPointer()) AliHLTTRDTracklet(trdTracklet); | |
79 | fSize += hltTracklet->GetSize(); | |
80 | //HLTDebug("tracklet %i; adr 0x%x; endPointer 0x%x; fSize %i", iTracklet, hltTracklet, hltTracklet->GetEndPointer(), fSize); | |
81 | fTracklet[iTracklet] = hltTracklet; | |
82 | } | |
83 | else | |
84 | fTracklet[iTracklet] = NULL; | |
85 | } | |
86 | } | |
87 | ||
88 | ||
89 | /** | |
90 | * Copy data members (except tracklets) from TRDtrackV1 to HLTTRDTrack. | |
91 | */ | |
92 | //============================================================================ | |
93 | void AliHLTTRDTrack::CopyDataMembers() | |
94 | { | |
95 | ||
44be2bf1 | 96 | fPIDquality = fTRDtrack->GetNumberOfTrackletsPID(); |
d679dd6c | 97 | |
98 | for(Int_t i = 0; i < AliPID::kSPECIES; i++) | |
99 | { | |
100 | fPID[i] = fTRDtrack->GetPID(i); | |
101 | } | |
102 | ||
103 | for (Int_t i = 0; i < 3; i++) | |
104 | { | |
105 | fBudget[i] = fTRDtrack->GetBudget(i); | |
106 | } | |
107 | fDE = fTRDtrack->GetEdep(); | |
108 | fFakeRatio = fTRDtrack->GetFakeRatio(); | |
109 | fChi2 = fTRDtrack->GetChi2(); | |
110 | fMass = fTRDtrack->GetMass(); | |
111 | fLab = fTRDtrack->GetLabel(); | |
112 | fN = fTRDtrack->GetNumberOfClusters(); | |
113 | fIntegratedLength = fTRDtrack->GetIntegratedLength(); | |
114 | ||
115 | fX = fTRDtrack->GetX(); | |
116 | fAlpha = fTRDtrack->GetAlpha(); | |
117 | const Double_t *Ptemp = fTRDtrack->GetParameter(); | |
118 | for (Int_t i = 0; i < 5; i++) | |
119 | { | |
120 | fP[i] = Ptemp[i]; | |
121 | } | |
122 | const Double_t *Ctemp = fTRDtrack->GetCovariance(); | |
123 | for (Int_t i = 0; i < 15; i++) | |
124 | { | |
125 | fC[i] = Ctemp[i]; | |
126 | } | |
127 | ||
128 | } | |
129 | ||
130 | /** | |
131 | * Copy data to the output TRDtrackV1 | |
132 | */ | |
133 | //============================================================================ | |
134 | void AliHLTTRDTrack::ExportTRDTrack(AliTRDtrackV1 *outTrack) | |
135 | { | |
136 | outTrack->Reset(); | |
137 | ||
138 | //Set members from AliTRDtrackV1 | |
139 | outTrack->SetPIDquality(fPIDquality); | |
140 | outTrack->SetEdep(fDE); | |
141 | for(Int_t i = 0; i < AliPID::kSPECIES; i++) | |
142 | { | |
143 | outTrack->SetPID(i,fPID[i]); | |
144 | } | |
145 | for (Int_t i = 0; i < 3; i++) | |
146 | { | |
147 | outTrack->SetBudget(i, fBudget[i]); | |
148 | } | |
149 | for (Int_t iTracklet = 0; iTracklet < kNplane; iTracklet++){ | |
150 | if (fTracklet[iTracklet]){ | |
151 | AliTRDseedV1* trdTracklet = new AliTRDseedV1(); | |
152 | fTracklet[iTracklet]->ExportTRDTracklet(trdTracklet); | |
153 | outTrack->SetTracklet(trdTracklet,iTracklet); | |
154 | } | |
155 | } | |
156 | ||
157 | //Set members from AliKalmanTrack | |
158 | outTrack->SetFakeRatio(fFakeRatio); | |
159 | //outTrack->SetChi2(fChi2); | |
160 | outTrack->SetMass(fMass); | |
161 | outTrack->SetLabel(fLab); | |
162 | (dynamic_cast<AliKalmanTrack*>(outTrack))->SetNumberOfClusters(fN); | |
163 | outTrack->SetIntegratedLength(fIntegratedLength); | |
164 | ||
165 | //Set members from AliExternalTrackParam | |
166 | outTrack->Set(fX, fAlpha, fP, fC); | |
167 | } | |
168 | ||
169 | ||
170 | /** | |
171 | * Init of arrays | |
172 | */ | |
173 | //============================================================================ | |
174 | void AliHLTTRDTrack::InitArrays() | |
175 | { | |
176 | for(Int_t i = 0; i < kNplane; i++){ | |
177 | fTracklet[i]=NULL; | |
178 | } | |
179 | ||
180 | for(Int_t i = 0; i < AliPID::kSPECIES; i++) | |
181 | { | |
182 | fPID[i] = -1; | |
183 | } | |
184 | ||
185 | for (Int_t i = 0; i < 3; i++) | |
186 | { | |
187 | fBudget[i] = -1; | |
188 | } | |
189 | for (Int_t i = 0; i < 5; i++) | |
190 | { | |
191 | fP[i] = -1; | |
192 | } | |
193 | for (Int_t i = 0; i < 15; i++) | |
194 | { | |
195 | fC[i] = -1; | |
196 | } | |
197 | } | |
198 | ||
199 | /** | |
200 | * Print main values for HLTTrack | |
201 | */ | |
202 | //============================================================================ | |
203 | void AliHLTTRDTrack::Print(Bool_t printTracklets) | |
204 | { | |
205 | //printf("--hltTrack-- addr 0x%p(%i); fSize %i\n", this, (int)this, fSize); | |
206 | //printf(" fPIDquality = %s; fX = %f; fAlpha = %f\n", fPIDquality, fX, fAlpha); | |
207 | printf(" "); | |
208 | ||
209 | for(Int_t i = 0; i < AliPID::kSPECIES; i++) | |
210 | { | |
211 | printf("fPID[%i] = %f; ",i, fPID[i]); | |
212 | } | |
213 | printf("\n "); | |
214 | ||
215 | for (Int_t i = 0; i < 3; i++) | |
216 | { | |
217 | printf("fBudget[%i] = %f; ",i, fBudget[i]); | |
218 | } | |
219 | printf("\n"); | |
220 | ||
221 | if (printTracklets) | |
222 | { | |
223 | for (Int_t i = 0; i < kNplane; i++){ | |
224 | if (fTracklet[i]){ | |
225 | printf("[%i]",i); | |
226 | fTracklet[i]->Print(); | |
227 | } | |
228 | else | |
229 | printf(" NULL "); | |
230 | } | |
231 | } | |
232 | ||
233 | printf("\n"); | |
234 | } | |
235 | ||
236 | /** | |
237 | * Read tracklets from the memory. | |
238 | * Number of tracklets should be already known | |
239 | */ | |
240 | //============================================================================ | |
241 | void AliHLTTRDTrack::ReadTrackletsFromMemory(void* input) | |
242 | { | |
243 | AliHLTUInt8_t *iterPtr = (AliHLTUInt8_t*) input; | |
244 | AliHLTTRDTracklet* hltTracklet = NULL; | |
245 | ||
246 | for (Int_t iTracklet = 0; iTracklet < kNplane; iTracklet++){ | |
247 | if (fTracklet[iTracklet]){ | |
248 | hltTracklet = (AliHLTTRDTracklet*) iterPtr; | |
249 | hltTracklet->ReadClustersFromMemory(iterPtr+sizeof(AliHLTTRDTracklet)); | |
250 | fTracklet[iTracklet] = hltTracklet; | |
251 | iterPtr += hltTracklet->GetSize(); | |
252 | //hltTracklet->Print(kFALSE); | |
253 | } | |
254 | } | |
255 | } |