1 #include "AliHLTTRDTracklet.h"
2 #include "AliHLTTRDCluster.h"
7 //============================================================================
8 AliHLTTRDTracklet::AliHLTTRDTracklet():
10 fSize(sizeof(AliHLTTRDTracklet)),
39 //============================================================================
40 AliHLTTRDTracklet::AliHLTTRDTracklet(AliTRDseedV1 * inTracklet):
42 fSize(sizeof(AliHLTTRDTracklet)),
67 fTRDtracklet = inTracklet;
74 * Add clusters to the HLTTRDTracklet
76 //============================================================================
77 void AliHLTTRDTracklet::AddClusters()
79 for (Int_t iTimeBin = 0; iTimeBin < AliTRDseedV1::kNTimeBins; iTimeBin++)
81 // if (fClusters[iTimeBin])
82 // HLTWarning("Trying to rewrite cluster in tracklet. Not good.");
83 AliTRDcluster* trdCluster = fTRDtracklet->GetClusters(iTimeBin);
85 AliHLTTRDCluster * hltCluster = new (GetEndPointer()) AliHLTTRDCluster(trdCluster);
86 fSize += hltCluster->GetSize();
87 //HLTInfo("cluster %i; adr 0x%x; endPointer 0x%x; fSize %i", iTimeBin, hltCluster, GetEndPointer(), fSize);
88 fClusters[iTimeBin] = hltCluster;
91 fClusters[iTimeBin] = NULL;
97 * Copy simple (non-pointer) data members from TRDTracklet to HLTTRDTracklet
99 //============================================================================
100 void AliHLTTRDTracklet::CopyDataMembers()
102 for (Int_t i=0; i < 2; i++){
103 fYref[i] = fTRDtracklet->GetYref(i);
104 fZref[i] = fTRDtracklet->GetZref(i);
106 //fSigmaY = fTRDtracklet->GetSigmaY();
107 fSigmaY2 = fTRDtracklet->GetS2Y();
108 fTilt = fTRDtracklet->GetTilt();
109 fPadLength = fTRDtracklet->GetPadLength();
111 fX0 = fTRDtracklet->GetX0();
112 for (Int_t i = 0; i < AliTRDseedV1::kNTimeBins; i++){
113 // fX[i] = fTRDtracklet->GetX(i);
114 // fY[i] = fTRDtracklet->GetY(i);
115 // fZ[i] = fTRDtracklet->GetZ(i);
116 fIndexes[i] = fTRDtracklet->GetIndexes(i);
118 fUsable = fTRDtracklet->GetUsabilityMap();
120 for (Int_t i=0; i < 2; i++){
121 fYfit[i] = fTRDtracklet->GetYfit(i);
122 fZfit[i] = fTRDtracklet->GetZfit(i);
123 fLabels[i] = fTRDtracklet->GetLabels(i);
125 fLabels[2] = fTRDtracklet->GetLabels(2);
126 fN2 = fTRDtracklet->GetN2();
127 fNUsed = fTRDtracklet->GetNUsed();
129 fC = fTRDtracklet->GetC();
130 fChi2 = fTRDtracklet->GetChi2();
131 //fChi2Z = fTRDtracklet->GetChi2Z();
133 fDet = fTRDtracklet->GetDetector();
134 fMom = fTRDtracklet->GetMomentum();
135 fdX = fTRDtracklet->GetdX();
139 * Copy data to the output TRDseedV1
141 //============================================================================
142 void AliHLTTRDTracklet::ExportTRDTracklet(AliTRDseedV1 *outTracklet)
144 outTracklet->Reset();
145 /* ======= From AliTRDseedV1 ======== */
146 outTracklet->SetDetector(fDet);
147 outTracklet->SetMomentum(fMom);
148 outTracklet->SetDX(fdX);
150 /* ======= From AliTRDseed ======== */
151 for (Int_t i=0; i < 2; i++){
152 outTracklet->SetYref(i, fYref[i]);
153 outTracklet->SetZref(i, fZref[i]);
156 //outTracklet->SetSigmaY(fSigmaY);
157 //outTracklet->SetSigmaY2(fSigmaY2);
158 outTracklet->SetTilt(fTilt);
159 outTracklet->SetPadLength(fPadLength);
160 outTracklet->SetX0(fX0);
162 for (Int_t i=0; i < AliTRDseedV1::kNTimeBins; i++){
163 // outTracklet->SetX(i,fX[i]);
164 // outTracklet->SetX(i,fY[i]);
165 // outTracklet->SetX(i,fZ[i]);
166 outTracklet->SetIndexes(i, fIndexes[i]);
168 outTracklet->SetUsabilityMap(fUsable);
170 // for (Int_t i=0; i < 2; i++){
171 // outTracklet->SetYfit(i,fYfit[i]);
172 // outTracklet->SetZfit(i,fZfit[i]);
174 outTracklet->SetLabels(fLabels);
176 //outTracklet->SetN2(fN2);
177 //outTracklet->SetNUsed(fNUsed);
178 outTracklet->SetC(fC);
179 outTracklet->SetChi2(fChi2);
181 for (Int_t iCluster = 0; iCluster < AliTRDseedV1::kNTimeBins; iCluster++){
182 if (fClusters[iCluster]){
183 AliTRDcluster *trdCluster = new AliTRDcluster();
184 fClusters[iCluster]->ExportTRDCluster(trdCluster);
185 //outTracklet->SetClusters(iCluster, trdCluster);
194 //============================================================================
195 void AliHLTTRDTracklet::InitArrays()
197 for (Int_t i=0; i < AliTRDseedV1::kNTimeBins; i++){
201 for (Int_t i=0; i < 2; i++){
205 for (Int_t i = 0; i < AliTRDseedV1::kNTimeBins; i++){
213 for (Int_t i=0; i < 2; i++){
224 * Prints main info about tracklet
226 //============================================================================
227 void AliHLTTRDTracklet::Print(Bool_t printClusters)
229 //printf("--hltTracklet-- addr 0x%p(%i); fSize %i\n", this, (int)this, fSize);
230 printf(" fDet %i; dMom %f; fdX %f fN %i\n", fDet, fMom, fdX, fN2);
232 if(!printClusters) return;
233 for (Int_t iCluster = 0; iCluster < AliTRDseedV1::kNTimeBins; iCluster++){
234 printf(" [%i] ",iCluster);
235 if (fClusters[iCluster]) fClusters[iCluster]->Print();
236 else printf(" NULL\n");
241 * Read clusters to TRDtracklet from the memory
243 //============================================================================
244 void AliHLTTRDTracklet::ReadClustersFromMemory(void *input)
246 AliHLTUInt8_t *iterPtr = (AliHLTUInt8_t*) input;
247 AliHLTTRDCluster* hltCluster = NULL;
249 for (Int_t iCluster = 0; iCluster < AliTRDseedV1::kNTimeBins; iCluster++){
250 // if we had something in the fClusters[iCluster] before copying,
251 // then this entry in the array should not be empty. Fill it.
252 if (fClusters[iCluster]){
253 hltCluster = (AliHLTTRDCluster*) iterPtr;
254 fClusters[iCluster] = hltCluster;
255 iterPtr += hltCluster->GetSize();
256 //hltCluster->Print();