1 #include "AliHLTTRDTracklet.h"
5 //============================================================================
6 AliHLTTRDTracklet::AliHLTTRDTracklet():
17 #if defined(__HP_aCC) || defined(__DECCXX) || defined(__SUNPRO_CC)
18 fSize(sizeof(AliHLTTRDTracklet)-sizeof(IndexAndCluster)),
20 fSize(sizeof(AliHLTTRDTracklet)),
30 //============================================================================
31 AliHLTTRDTracklet::AliHLTTRDTracklet(const AliTRDseedV1* const inTracklet):
33 fDet(inTracklet->fDet),
35 fS2Y(inTracklet->fS2Y),
37 fPad3(inTracklet->fPad[3]),
38 fPad2(inTracklet->fPad[2]),
41 fChi2(inTracklet->fChi2),
42 #if defined(__HP_aCC) || defined(__DECCXX) || defined(__SUNPRO_CC)
43 fSize(sizeof(AliHLTTRDTracklet)-sizeof(IndexAndCluster)),
45 fSize(sizeof(AliHLTTRDTracklet)),
49 CopyDataMembers(inTracklet);
53 * Copy simple (non-pointer) data members from TRDTracklet to HLTTRDTracklet
55 //============================================================================
56 void AliHLTTRDTracklet::CopyDataMembers(const AliTRDseedV1* const inTracklet)
58 //fChi2Z = inTracklet->GetChi2Z();
60 for (Int_t i=0; i < 2; i++){
61 fYref[i] = inTracklet->fYref[i];
62 fZref[i] = inTracklet->fZref[i];
63 fYfit[i] = inTracklet->fYfit[i];
64 fZfit[i] = inTracklet->fZfit[i];
67 for (Int_t i=0; i < AliPID::kSPECIES; i++){
68 fProb[i] = inTracklet->fProb[i];
71 for (Int_t iTimeBin = 0; iTimeBin < AliTRDseedV1::kNclusters; iTimeBin++)
73 AliTRDcluster* trdCluster = inTracklet->GetClusters(iTimeBin);
75 fClusters[fCount].Index = inTracklet->fIndexes[iTimeBin];
76 new (&fClusters[fCount].Cluster) AliHLTTRDCluster(trdCluster);
78 fSize += sizeof(IndexAndCluster);
82 //if((void*)&fClusters[fCount].Index!=(void*)GetEndPointer()){printf("ERRR");return;}
86 * Copy data to the output TRDseedV1
88 //============================================================================
89 void AliHLTTRDTracklet::ExportTRDTracklet(AliTRDseedV1* const outTracklet) const
91 //outTracklet->Reset(); we always use a fresh trdtracklet as input, so this is useless
94 outTracklet->fDet = fDet;
95 outTracklet->fPad[3] = fPad3;
96 outTracklet->fPad[2] = fPad2;
97 outTracklet->fdX = fdX;
98 outTracklet->fX0 = fX0;
99 outTracklet->fS2Y = fS2Y;
100 outTracklet->fPt = fPt;
101 outTracklet->fC = fC;
102 outTracklet->fChi2 = fChi2;
104 for (Int_t i=0; i < 2; i++){
105 outTracklet->fYref[i] = fYref[i];
106 outTracklet->fZref[i] = fZref[i];
107 outTracklet->fYfit[i] = fYfit[i];
108 outTracklet->fZfit[i] = fZfit[i];
111 for (Int_t i=0; i < AliPID::kSPECIES; i++){
112 outTracklet->fProb[i] = fProb[i];
115 for (UInt_t iCluster=0; iCluster < fCount; iCluster++){
116 AliTRDcluster *trdCluster = new AliTRDcluster();
117 fClusters[iCluster].Cluster.ExportTRDCluster(trdCluster);
118 outTracklet->fClusters[iCluster] = trdCluster;
119 outTracklet->fIndexes[iCluster] = fClusters[iCluster].Index;
128 //============================================================================
129 void AliHLTTRDTracklet::InitArrays()
131 for (Int_t i=0; i < 2; i++){
137 for (Int_t i=0; i < AliPID::kSPECIES; i++)
142 * Prints main info about tracklet
144 //============================================================================
145 void AliHLTTRDTracklet::Print(Bool_t printClusters) const
147 //printf("--hltTracklet-- addr 0x%p(%i); fSize %i\n", this, (int)this, fSize);
148 printf(" fDet %i; fPt %f; fdX %f fN %i\n", fDet, fPt, fdX, fN);
150 if(!printClusters) return;
151 for (UInt_t iCount=0, iCluster = 0; iCluster < fCount; iCount++){
152 printf(" [%i] ",iCount);
153 fClusters[iCluster].Cluster.Print();
159 * Read clusters to TRDtracklet from the memory
161 //============================================================================
162 // void AliHLTTRDTracklet::ReadClustersFromMemory(void *input)
164 // AliHLTUInt8_t *iterPtr = (AliHLTUInt8_t*) input;
165 // AliHLTTRDCluster* hltCluster = NULL;
167 // for (Int_t iCluster = 0; iCluster < AliTRDseedV1::kNclusters; iCluster++){
168 // // if we had something in the fClusters[iCluster] before copying,
169 // // then this entry in the array should not be empty. Fill it.
170 // if (fClusters[iCluster]){
171 // hltCluster = (AliHLTTRDCluster*) iterPtr;
172 // fClusters[iCluster] = hltCluster;
173 // iterPtr += hltCluster->GetSize();
174 // //hltCluster->Print();