1 #include "AliHLTTRDTracklet.h"
2 #include "AliHLTTRDCluster.h"
7 //============================================================================
8 AliHLTTRDTracklet::AliHLTTRDTracklet():
10 fSize(sizeof(AliHLTTRDTracklet)),
38 //============================================================================
39 AliHLTTRDTracklet::AliHLTTRDTracklet(AliTRDseedV1 * inTracklet):
41 fSize(sizeof(AliHLTTRDTracklet)),
65 fTRDtracklet = inTracklet;
72 * Add clusters to the HLTTRDTracklet
74 //============================================================================
75 void AliHLTTRDTracklet::AddClusters()
77 for (Int_t iTimeBin = 0; iTimeBin < knTimebins; iTimeBin++)
79 // if (fClusters[iTimeBin])
80 // HLTWarning("Trying to rewrite cluster in tracklet. Not good.");
81 AliTRDcluster* trdCluster = fTRDtracklet->GetClusters(iTimeBin);
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;
89 fClusters[iTimeBin] = NULL;
95 * Copy simple (non-pointer) data members from TRDTracklet to HLTTRDTracklet
97 //============================================================================
98 void AliHLTTRDTracklet::CopyDataMembers()
100 for (Int_t i=0; i < 2; i++){
101 fYref[i] = fTRDtracklet->GetYref(i);
102 fZref[i] = fTRDtracklet->GetZref(i);
104 fSigmaY = fTRDtracklet->GetSigmaY();
105 fSigmaY2 = fTRDtracklet->GetSigmaY2();
106 fTilt = fTRDtracklet->GetTilt();
107 fPadLength = fTRDtracklet->GetPadLength();
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);
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);
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();
135 fC = fTRDtracklet->GetC();
136 fCC = fTRDtracklet->GetCC();
137 fChi2 = fTRDtracklet->GetChi2();
138 fChi2Z = fTRDtracklet->GetChi2Z();
140 fDet = fTRDtracklet->GetDetector();
141 fMom = fTRDtracklet->GetMomentum();
142 fdX = fTRDtracklet->GetdX();
147 * Copy data to the output TRDseedV1
149 //============================================================================
150 void AliHLTTRDTracklet::ExportTRDTracklet(AliTRDseedV1 *outTracklet)
152 outTracklet->Reset();
153 /* ======= From AliTRDseedV1 ======== */
154 outTracklet->SetDetector(fDet);
155 outTracklet->SetMomentum(fMom);
156 outTracklet->SetDX(fdX);
158 /* ======= From AliTRDseed ======== */
159 for (Int_t i=0; i < 2; i++){
160 outTracklet->SetYref(i, fYref[i]);
161 outTracklet->SetZref(i, fZref[i]);
164 outTracklet->SetSigmaY(fSigmaY);
165 outTracklet->SetSigmaY2(fSigmaY2);
166 outTracklet->SetTilt(fTilt);
167 outTracklet->SetPadLength(fPadLength);
168 outTracklet->SetX0(fX0);
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]);
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]);
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);
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);
212 //============================================================================
213 void AliHLTTRDTracklet::InitArrays()
215 for (Int_t i=0; i < knTimebins; i++){
219 for (Int_t i=0; i < 2; i++){
223 for (Int_t i = 0; i < knTimebins; i++){
231 for (Int_t i=0; i < 2; i++){
242 * Prints main info about tracklet
244 //============================================================================
245 void AliHLTTRDTracklet::Print(Bool_t printClusters)
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);
252 for (Int_t iCluster = 0; iCluster < knTimebins; iCluster++){
253 printf(" [%i] ",iCluster);
254 if (fClusters[iCluster]){
255 fClusters[iCluster]->Print();
265 * Read clusters to TRDtracklet from the memory
267 //============================================================================
268 void AliHLTTRDTracklet::ReadClustersFromMemory(void *input)
270 AliHLTUInt8_t *iterPtr = (AliHLTUInt8_t*) input;
271 AliHLTTRDCluster* hltCluster = NULL;
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();