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)), |
e3cf3d02 |
11 | //fSigmaY(-1), |
d679dd6c |
12 | fSigmaY2(-1), |
13 | fTilt(-1), |
14 | fPadLength(-1), |
15 | fX0(-1), |
e3cf3d02 |
16 | //fMeanz(-1), |
17 | //fZProb(-1), |
18 | //fN(-1), |
d679dd6c |
19 | fN2(-1), |
20 | fNUsed(-1), |
e3cf3d02 |
21 | //fFreq(-1), |
22 | //fNChange(-1), |
23 | //fMPads(-1), |
d679dd6c |
24 | fC(-1), |
e3cf3d02 |
25 | //fCC(-1), |
d679dd6c |
26 | fChi2(-1), |
e3cf3d02 |
27 | //fChi2Z(-1), |
d679dd6c |
28 | fDet(-1), |
e44c0591 |
29 | fPt(-1), |
d679dd6c |
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)), |
e3cf3d02 |
42 | //fSigmaY(-1), |
d679dd6c |
43 | fSigmaY2(-1), |
44 | fTilt(-1), |
45 | fPadLength(-1), |
46 | fX0(-1), |
e3cf3d02 |
47 | //fMeanz(-1), |
48 | //fZProb(-1), |
49 | //fN(-1), |
d679dd6c |
50 | fN2(-1), |
51 | fNUsed(-1), |
e3cf3d02 |
52 | //fFreq(-1), |
53 | //fNChange(-1), |
54 | //fMPads(-1), |
d679dd6c |
55 | fC(-1), |
e3cf3d02 |
56 | //fCC(-1), |
d679dd6c |
57 | fChi2(-1), |
e3cf3d02 |
58 | //fChi2Z(-1), |
d679dd6c |
59 | fDet(-1), |
e44c0591 |
60 | fPt(-1), |
d679dd6c |
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 | { |
b36fa46e |
77 | for (Int_t iTimeBin = 0; iTimeBin < AliTRDseedV1::kNclusters; iTimeBin++) |
d679dd6c |
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 | } |
e3cf3d02 |
104 | //fSigmaY = fTRDtracklet->GetSigmaY(); |
105 | fSigmaY2 = fTRDtracklet->GetS2Y(); |
d679dd6c |
106 | fTilt = fTRDtracklet->GetTilt(); |
107 | fPadLength = fTRDtracklet->GetPadLength(); |
108 | |
109 | fX0 = fTRDtracklet->GetX0(); |
b36fa46e |
110 | for (Int_t i = 0; i < AliTRDseedV1::kNclusters; i++){ |
e3cf3d02 |
111 | // fX[i] = fTRDtracklet->GetX(i); |
112 | // fY[i] = fTRDtracklet->GetY(i); |
113 | // fZ[i] = fTRDtracklet->GetZ(i); |
d679dd6c |
114 | fIndexes[i] = fTRDtracklet->GetIndexes(i); |
d679dd6c |
115 | } |
116 | |
117 | for (Int_t i=0; i < 2; i++){ |
118 | fYfit[i] = fTRDtracklet->GetYfit(i); |
119 | fZfit[i] = fTRDtracklet->GetZfit(i); |
d679dd6c |
120 | fLabels[i] = fTRDtracklet->GetLabels(i); |
121 | } |
e3cf3d02 |
122 | fLabels[2] = fTRDtracklet->GetLabels(2); |
d679dd6c |
123 | fN2 = fTRDtracklet->GetN2(); |
124 | fNUsed = fTRDtracklet->GetNUsed(); |
d679dd6c |
125 | |
126 | fC = fTRDtracklet->GetC(); |
d679dd6c |
127 | fChi2 = fTRDtracklet->GetChi2(); |
e3cf3d02 |
128 | //fChi2Z = fTRDtracklet->GetChi2Z(); |
d679dd6c |
129 | |
130 | fDet = fTRDtracklet->GetDetector(); |
e44c0591 |
131 | fPt = fTRDtracklet->GetPt(); |
d679dd6c |
132 | fdX = fTRDtracklet->GetdX(); |
d679dd6c |
133 | } |
134 | |
135 | /** |
136 | * Copy data to the output TRDseedV1 |
137 | */ |
138 | //============================================================================ |
139 | void AliHLTTRDTracklet::ExportTRDTracklet(AliTRDseedV1 *outTracklet) |
140 | { |
141 | outTracklet->Reset(); |
142 | /* ======= From AliTRDseedV1 ======== */ |
143 | outTracklet->SetDetector(fDet); |
e44c0591 |
144 | outTracklet->SetPt(fPt); |
d679dd6c |
145 | outTracklet->SetDX(fdX); |
146 | |
147 | /* ======= From AliTRDseed ======== */ |
148 | for (Int_t i=0; i < 2; i++){ |
149 | outTracklet->SetYref(i, fYref[i]); |
150 | outTracklet->SetZref(i, fZref[i]); |
151 | } |
152 | |
e3cf3d02 |
153 | //outTracklet->SetSigmaY(fSigmaY); |
154 | //outTracklet->SetSigmaY2(fSigmaY2); |
d679dd6c |
155 | outTracklet->SetTilt(fTilt); |
156 | outTracklet->SetPadLength(fPadLength); |
157 | outTracklet->SetX0(fX0); |
158 | |
b36fa46e |
159 | for (Int_t i=0; i < AliTRDseedV1::kNclusters; i++){ |
e3cf3d02 |
160 | // outTracklet->SetX(i,fX[i]); |
161 | // outTracklet->SetX(i,fY[i]); |
162 | // outTracklet->SetX(i,fZ[i]); |
d679dd6c |
163 | outTracklet->SetIndexes(i, fIndexes[i]); |
d679dd6c |
164 | } |
e3cf3d02 |
165 | |
166 | // for (Int_t i=0; i < 2; i++){ |
167 | // outTracklet->SetYfit(i,fYfit[i]); |
168 | // outTracklet->SetZfit(i,fZfit[i]); |
169 | // } |
170 | outTracklet->SetLabels(fLabels); |
d679dd6c |
171 | |
e3cf3d02 |
172 | //outTracklet->SetN2(fN2); |
173 | //outTracklet->SetNUsed(fNUsed); |
d679dd6c |
174 | outTracklet->SetC(fC); |
d679dd6c |
175 | outTracklet->SetChi2(fChi2); |
d679dd6c |
176 | |
b36fa46e |
177 | for (Int_t iCluster = 0; iCluster < AliTRDseedV1::kNclusters; iCluster++){ |
d679dd6c |
178 | if (fClusters[iCluster]){ |
179 | AliTRDcluster *trdCluster = new AliTRDcluster(); |
180 | fClusters[iCluster]->ExportTRDCluster(trdCluster); |
e3cf3d02 |
181 | //outTracklet->SetClusters(iCluster, trdCluster); |
d679dd6c |
182 | } |
183 | } |
d679dd6c |
184 | } |
185 | |
186 | |
187 | /** |
188 | * Init arrays |
189 | */ |
190 | //============================================================================ |
191 | void AliHLTTRDTracklet::InitArrays() |
192 | { |
b36fa46e |
193 | for (Int_t i=0; i < AliTRDseedV1::kNclusters; i++){ |
d679dd6c |
194 | fClusters[i] = NULL; |
195 | } |
196 | |
197 | for (Int_t i=0; i < 2; i++){ |
198 | fYref[i] = -1; |
199 | fZref[i] = -1; |
200 | } |
b36fa46e |
201 | for (Int_t i = 0; i < AliTRDseedV1::kNclusters; i++){ |
e3cf3d02 |
202 | // fX[i] = -1; |
203 | // fY[i] = -1; |
204 | // fZ[i] = -1; |
d679dd6c |
205 | fIndexes[i] = -1; |
d679dd6c |
206 | } |
207 | |
208 | for (Int_t i=0; i < 2; i++){ |
209 | fYfit[i] = -1; |
210 | fZfit[i] = -1; |
e3cf3d02 |
211 | // fYfitR[i] = -1; |
212 | // fZfitR[i] = -1; |
d679dd6c |
213 | fLabels[i] = -1; |
214 | } |
e3cf3d02 |
215 | fLabels[2] = 0; |
d679dd6c |
216 | } |
217 | |
218 | /** |
219 | * Prints main info about tracklet |
220 | */ |
221 | //============================================================================ |
222 | void AliHLTTRDTracklet::Print(Bool_t printClusters) |
223 | { |
224 | //printf("--hltTracklet-- addr 0x%p(%i); fSize %i\n", this, (int)this, fSize); |
e44c0591 |
225 | printf(" fDet %i; fPt %f; fdX %f fN %i\n", fDet, fPt, fdX, fN2); |
d679dd6c |
226 | |
e3cf3d02 |
227 | if(!printClusters) return; |
b36fa46e |
228 | for (Int_t iCluster = 0; iCluster < AliTRDseedV1::kNclusters; iCluster++){ |
e3cf3d02 |
229 | printf(" [%i] ",iCluster); |
230 | if (fClusters[iCluster]) fClusters[iCluster]->Print(); |
231 | else printf(" NULL\n"); |
d679dd6c |
232 | } |
d679dd6c |
233 | } |
234 | |
235 | /** |
236 | * Read clusters to TRDtracklet from the memory |
237 | */ |
238 | //============================================================================ |
239 | void AliHLTTRDTracklet::ReadClustersFromMemory(void *input) |
240 | { |
241 | AliHLTUInt8_t *iterPtr = (AliHLTUInt8_t*) input; |
242 | AliHLTTRDCluster* hltCluster = NULL; |
243 | |
b36fa46e |
244 | for (Int_t iCluster = 0; iCluster < AliTRDseedV1::kNclusters; iCluster++){ |
d679dd6c |
245 | // if we had something in the fClusters[iCluster] before copying, |
246 | // then this entry in the array should not be empty. Fill it. |
247 | if (fClusters[iCluster]){ |
248 | hltCluster = (AliHLTTRDCluster*) iterPtr; |
249 | fClusters[iCluster] = hltCluster; |
250 | iterPtr += hltCluster->GetSize(); |
251 | //hltCluster->Print(); |
252 | } |
253 | |
254 | } |
255 | } |