]>
Commit | Line | Data |
---|---|---|
d679dd6c | 1 | #include "AliHLTTRDTracklet.h" |
2 | #include "AliHLTTRDCluster.h" | |
3 | ||
4 | /** | |
5 | * Default Constructor | |
6 | */ | |
7 | //============================================================================ | |
8 | AliHLTTRDTracklet::AliHLTTRDTracklet(): | |
9 | fTRDtracklet(NULL), | |
10 | fSize(sizeof(AliHLTTRDTracklet)), | |
11 | fSigmaY(-1), | |
12 | fSigmaY2(-1), | |
13 | fTilt(-1), | |
14 | fPadLength(-1), | |
15 | fX0(-1), | |
16 | fMeanz(-1), | |
17 | fZProb(-1), | |
18 | fN(-1), | |
19 | fN2(-1), | |
20 | fNUsed(-1), | |
21 | fFreq(-1), | |
22 | fNChange(-1), | |
23 | fMPads(-1), | |
24 | fC(-1), | |
25 | fCC(-1), | |
26 | fChi2(-1), | |
27 | fChi2Z(-1), | |
28 | fDet(-1), | |
29 | fMom(-1), | |
30 | fdX(-1) | |
31 | { | |
32 | InitArrays(); | |
33 | } | |
34 | ||
35 | /** | |
36 | * Main Constructor | |
37 | */ | |
38 | //============================================================================ | |
39 | AliHLTTRDTracklet::AliHLTTRDTracklet(AliTRDseedV1 * inTracklet): | |
40 | fTRDtracklet(NULL), | |
41 | fSize(sizeof(AliHLTTRDTracklet)), | |
42 | fSigmaY(-1), | |
43 | fSigmaY2(-1), | |
44 | fTilt(-1), | |
45 | fPadLength(-1), | |
46 | fX0(-1), | |
47 | fMeanz(-1), | |
48 | fZProb(-1), | |
49 | fN(-1), | |
50 | fN2(-1), | |
51 | fNUsed(-1), | |
52 | fFreq(-1), | |
53 | fNChange(-1), | |
54 | fMPads(-1), | |
55 | fC(-1), | |
56 | fCC(-1), | |
57 | fChi2(-1), | |
58 | fChi2Z(-1), | |
59 | fDet(-1), | |
60 | fMom(-1), | |
61 | fdX(-1) | |
62 | { | |
63 | InitArrays(); | |
64 | ||
65 | fTRDtracklet = inTracklet; | |
66 | CopyDataMembers(); | |
67 | // Print(kFALSE); | |
68 | AddClusters(); | |
69 | } | |
70 | ||
71 | /** | |
72 | * Add clusters to the HLTTRDTracklet | |
73 | */ | |
74 | //============================================================================ | |
75 | void AliHLTTRDTracklet::AddClusters() | |
76 | { | |
77 | for (Int_t iTimeBin = 0; iTimeBin < knTimebins; iTimeBin++) | |
78 | { | |
79 | // if (fClusters[iTimeBin]) | |
80 | // HLTWarning("Trying to rewrite cluster in tracklet. Not good."); | |
81 | AliTRDcluster* trdCluster = fTRDtracklet->GetClusters(iTimeBin); | |
82 | if (trdCluster){ | |
83 | AliHLTTRDCluster * hltCluster = new (GetEndPointer()) AliHLTTRDCluster(trdCluster); | |
84 | fSize += hltCluster->GetSize(); | |
85 | //HLTInfo("cluster %i; adr 0x%x; endPointer 0x%x; fSize %i", iTimeBin, hltCluster, GetEndPointer(), fSize); | |
86 | fClusters[iTimeBin] = hltCluster; | |
87 | } | |
88 | else | |
89 | fClusters[iTimeBin] = NULL; | |
90 | ||
91 | } | |
92 | } | |
93 | ||
94 | /** | |
95 | * Copy simple (non-pointer) data members from TRDTracklet to HLTTRDTracklet | |
96 | */ | |
97 | //============================================================================ | |
98 | void AliHLTTRDTracklet::CopyDataMembers() | |
99 | { | |
100 | for (Int_t i=0; i < 2; i++){ | |
101 | fYref[i] = fTRDtracklet->GetYref(i); | |
102 | fZref[i] = fTRDtracklet->GetZref(i); | |
103 | } | |
104 | fSigmaY = fTRDtracklet->GetSigmaY(); | |
105 | fSigmaY2 = fTRDtracklet->GetSigmaY2(); | |
106 | fTilt = fTRDtracklet->GetTilt(); | |
107 | fPadLength = fTRDtracklet->GetPadLength(); | |
108 | ||
109 | fX0 = fTRDtracklet->GetX0(); | |
110 | for (Int_t i = 0; i < knTimebins; i++){ | |
111 | fX[i] = fTRDtracklet->GetX(i); | |
112 | fY[i] = fTRDtracklet->GetY(i); | |
113 | fZ[i] = fTRDtracklet->GetZ(i); | |
114 | fIndexes[i] = fTRDtracklet->GetIndexes(i); | |
115 | fUsable[i] = fTRDtracklet->IsUsable(i); | |
116 | } | |
117 | ||
118 | for (Int_t i=0; i < 2; i++){ | |
119 | fYfit[i] = fTRDtracklet->GetYfit(i); | |
120 | fZfit[i] = fTRDtracklet->GetZfit(i); | |
121 | fYfitR[i] = fTRDtracklet->GetYfitR(i); | |
122 | fZfitR[i] = fTRDtracklet->GetZfitR(i); | |
123 | fLabels[i] = fTRDtracklet->GetLabels(i); | |
124 | } | |
125 | ||
126 | fMeanz = fTRDtracklet->GetMeanz(); | |
127 | fZProb = fTRDtracklet->GetZProb(); | |
128 | fN = fTRDtracklet->GetNbClusters(); | |
129 | fN2 = fTRDtracklet->GetN2(); | |
130 | fNUsed = fTRDtracklet->GetNUsed(); | |
131 | fFreq = fTRDtracklet->GetFreq(); | |
132 | fNChange = fTRDtracklet->GetNChange(); | |
133 | fMPads = fTRDtracklet->GetMPads(); | |
134 | ||
135 | fC = fTRDtracklet->GetC(); | |
136 | fCC = fTRDtracklet->GetCC(); | |
137 | fChi2 = fTRDtracklet->GetChi2(); | |
138 | fChi2Z = fTRDtracklet->GetChi2Z(); | |
139 | ||
140 | fDet = fTRDtracklet->GetDetector(); | |
141 | fMom = fTRDtracklet->GetMomentum(); | |
142 | fdX = fTRDtracklet->GetdX(); | |
143 | ||
144 | } | |
145 | ||
146 | /** | |
147 | * Copy data to the output TRDseedV1 | |
148 | */ | |
149 | //============================================================================ | |
150 | void AliHLTTRDTracklet::ExportTRDTracklet(AliTRDseedV1 *outTracklet) | |
151 | { | |
152 | outTracklet->Reset(); | |
153 | /* ======= From AliTRDseedV1 ======== */ | |
154 | outTracklet->SetDetector(fDet); | |
155 | outTracklet->SetMomentum(fMom); | |
156 | outTracklet->SetDX(fdX); | |
157 | ||
158 | /* ======= From AliTRDseed ======== */ | |
159 | for (Int_t i=0; i < 2; i++){ | |
160 | outTracklet->SetYref(i, fYref[i]); | |
161 | outTracklet->SetZref(i, fZref[i]); | |
162 | } | |
163 | ||
164 | outTracklet->SetSigmaY(fSigmaY); | |
165 | outTracklet->SetSigmaY2(fSigmaY2); | |
166 | outTracklet->SetTilt(fTilt); | |
167 | outTracklet->SetPadLength(fPadLength); | |
168 | outTracklet->SetX0(fX0); | |
169 | ||
170 | for (Int_t i=0; i < knTimebins; i++){ | |
171 | outTracklet->SetX(i,fX[i]); | |
172 | outTracklet->SetX(i,fY[i]); | |
173 | outTracklet->SetX(i,fZ[i]); | |
174 | outTracklet->SetIndexes(i, fIndexes[i]); | |
175 | outTracklet->SetUsable(i, fUsable[i]); | |
176 | } | |
177 | for (Int_t i=0; i < 2; i++){ | |
178 | outTracklet->SetYfit(i,fYfit[i]); | |
179 | outTracklet->SetYfitR(i,fYfitR[i]); | |
180 | outTracklet->SetZfit(i,fZfit[i]); | |
181 | outTracklet->SetZfitR(i,fZfitR[i]); | |
182 | outTracklet->SetLabels(i,fLabels[i]); | |
183 | } | |
184 | ||
185 | outTracklet->SetMeanz(fMeanz); | |
186 | outTracklet->SetZProb(fZProb); | |
187 | outTracklet->SetN(fN); | |
188 | outTracklet->SetN2(fN2); | |
189 | outTracklet->SetNUsed(fNUsed); | |
190 | outTracklet->SetFreq(fFreq); | |
191 | outTracklet->SetNChange(fNChange); | |
192 | outTracklet->SetMPads(fMPads); | |
193 | outTracklet->SetC(fC); | |
194 | outTracklet->SetCC(fCC); | |
195 | outTracklet->SetChi2(fChi2); | |
196 | outTracklet->SetChi2Z(fChi2Z); | |
197 | ||
198 | for (Int_t iCluster = 0; iCluster < knTimebins; iCluster++){ | |
199 | if (fClusters[iCluster]){ | |
200 | AliTRDcluster *trdCluster = new AliTRDcluster(); | |
201 | fClusters[iCluster]->ExportTRDCluster(trdCluster); | |
202 | outTracklet->SetClusters(iCluster, trdCluster); | |
203 | } | |
204 | } | |
205 | ||
206 | } | |
207 | ||
208 | ||
209 | /** | |
210 | * Init arrays | |
211 | */ | |
212 | //============================================================================ | |
213 | void AliHLTTRDTracklet::InitArrays() | |
214 | { | |
215 | for (Int_t i=0; i < knTimebins; i++){ | |
216 | fClusters[i] = NULL; | |
217 | } | |
218 | ||
219 | for (Int_t i=0; i < 2; i++){ | |
220 | fYref[i] = -1; | |
221 | fZref[i] = -1; | |
222 | } | |
223 | for (Int_t i = 0; i < knTimebins; i++){ | |
224 | fX[i] = -1; | |
225 | fY[i] = -1; | |
226 | fZ[i] = -1; | |
227 | fIndexes[i] = -1; | |
228 | fUsable[i] = -1; | |
229 | } | |
230 | ||
231 | for (Int_t i=0; i < 2; i++){ | |
232 | fYfit[i] = -1; | |
233 | fZfit[i] = -1; | |
234 | fYfitR[i] = -1; | |
235 | fZfitR[i] = -1; | |
236 | fLabels[i] = -1; | |
237 | } | |
238 | ||
239 | } | |
240 | ||
241 | /** | |
242 | * Prints main info about tracklet | |
243 | */ | |
244 | //============================================================================ | |
245 | void AliHLTTRDTracklet::Print(Bool_t printClusters) | |
246 | { | |
247 | //printf("--hltTracklet-- addr 0x%p(%i); fSize %i\n", this, (int)this, fSize); | |
248 | printf(" fDet %i; dMom %f; fdX %f fN %i\n", fDet, fMom, fdX, fN); | |
249 | ||
250 | if (printClusters){ | |
251 | ||
252 | for (Int_t iCluster = 0; iCluster < knTimebins; iCluster++){ | |
253 | printf(" [%i] ",iCluster); | |
254 | if (fClusters[iCluster]){ | |
255 | fClusters[iCluster]->Print(); | |
256 | } | |
257 | else | |
258 | printf(" NULL\n"); | |
259 | } | |
260 | } | |
261 | ||
262 | } | |
263 | ||
264 | /** | |
265 | * Read clusters to TRDtracklet from the memory | |
266 | */ | |
267 | //============================================================================ | |
268 | void AliHLTTRDTracklet::ReadClustersFromMemory(void *input) | |
269 | { | |
270 | AliHLTUInt8_t *iterPtr = (AliHLTUInt8_t*) input; | |
271 | AliHLTTRDCluster* hltCluster = NULL; | |
272 | ||
273 | for (Int_t iCluster = 0; iCluster < knTimebins; iCluster++){ | |
274 | // if we had something in the fClusters[iCluster] before copying, | |
275 | // then this entry in the array should not be empty. Fill it. | |
276 | if (fClusters[iCluster]){ | |
277 | hltCluster = (AliHLTTRDCluster*) iterPtr; | |
278 | fClusters[iCluster] = hltCluster; | |
279 | iterPtr += hltCluster->GetSize(); | |
280 | //hltCluster->Print(); | |
281 | } | |
282 | ||
283 | } | |
284 | } |