]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/TRD/AliHLTTRDTrack.cxx
fix broken compilation
[u/mrichter/AliRoot.git] / HLT / TRD / AliHLTTRDTrack.cxx
1 #include "AliHLTTRDTrack.h"
2 #include "AliHLTTRDTracklet.h"
3
4
5 /**
6  * Default Constructor
7  */
8 //============================================================================
9 AliHLTTRDTrack::AliHLTTRDTrack():
10   fSize(sizeof(AliHLTTRDTrack)),
11   fTRDtrack(NULL),
12   fPIDquality(0),
13   fDE(-1),
14   fFakeRatio(-1),
15   fChi2(-1),
16   fMass(-1),
17   fLab(-1),
18   fN(-1),
19   fIntegratedLength(-1),
20   fX(-1),
21   fAlpha(-1)
22 {
23   InitArrays();
24   // not to be used
25 }
26
27 /**
28  * Constructor
29  * Creates hltTrack from TRDtrackV1
30  */
31 //============================================================================
32 AliHLTTRDTrack::AliHLTTRDTrack(AliTRDtrackV1 * inTrack):
33   fSize(sizeof(AliHLTTRDTrack)),
34   fTRDtrack(NULL),
35   fPIDquality(0),
36   fDE(-1),
37   fFakeRatio(-1),
38   fChi2(-1),
39   fMass(-1),
40   fLab(-1),
41   fN(-1),
42   fIntegratedLength(-1),
43   fX(-1),
44   fAlpha(-1)
45 {
46   InitArrays();
47   
48   fTRDtrack = inTrack;
49
50   CopyDataMembers();
51   
52   AddTracklets();
53   
54 }
55
56 /**
57  * Default Destructor
58  * In principle should not be empty, but... we do not use it
59  */
60 //============================================================================
61 AliHLTTRDTrack::~AliHLTTRDTrack()
62 {
63   
64 }
65
66 /**
67  * Copy tracklets to the HLTTRDTrack
68  */
69 //============================================================================
70 void AliHLTTRDTrack::AddTracklets()
71 {
72   for (Int_t iTracklet = 0; iTracklet < kNplane; iTracklet++)
73     {
74       //      if (fTracklet[iTracklet])
75         //      HLTWarning("Trying to rewrite tracklets in the Track. Not good.");
76       AliTRDseedV1 * trdTracklet = fTRDtrack->GetTracklet(iTracklet);
77       if (trdTracklet){
78         AliHLTTRDTracklet * hltTracklet = new (GetEndPointer()) AliHLTTRDTracklet(trdTracklet);
79         fSize += hltTracklet->GetSize();
80         //HLTDebug("tracklet %i; adr 0x%x; endPointer 0x%x; fSize %i", iTracklet, hltTracklet, hltTracklet->GetEndPointer(), fSize);
81         fTracklet[iTracklet] = hltTracklet;
82       }
83       else 
84         fTracklet[iTracklet] = NULL;
85     }
86 }
87
88
89 /**
90  * Copy data members (except tracklets) from TRDtrackV1 to HLTTRDTrack.
91  */
92 //============================================================================
93 void AliHLTTRDTrack::CopyDataMembers()
94 {
95
96   fPIDquality = fTRDtrack->GetNumberOfTrackletsPID();
97   
98   for(Int_t i = 0; i < AliPID::kSPECIES; i++)
99     {
100       fPID[i] = fTRDtrack->GetPID(i);
101     }
102   
103   for (Int_t i = 0; i < 3; i++)
104     {
105       fBudget[i] = fTRDtrack->GetBudget(i);
106     }
107   fDE = fTRDtrack->GetEdep();
108   fFakeRatio = fTRDtrack->GetFakeRatio();
109   fChi2 = fTRDtrack->GetChi2();
110   fMass = fTRDtrack->GetMass();
111   fLab = fTRDtrack->GetLabel();
112   fN = fTRDtrack->GetNumberOfClusters();
113   fIntegratedLength = fTRDtrack->GetIntegratedLength();
114   
115   fX = fTRDtrack->GetX();
116   fAlpha = fTRDtrack->GetAlpha();
117   const Double_t *Ptemp = fTRDtrack->GetParameter();
118   for (Int_t i = 0; i < 5; i++)
119     {
120       fP[i] = Ptemp[i];
121     }
122   const Double_t *Ctemp = fTRDtrack->GetCovariance();
123   for (Int_t i = 0; i < 15; i++)
124     {
125       fC[i] = Ctemp[i];
126     }
127   
128 }
129
130 /**
131  * Copy data to the output TRDtrackV1
132  */
133 //============================================================================
134 void AliHLTTRDTrack::ExportTRDTrack(AliTRDtrackV1 *outTrack)
135 {
136   outTrack->Reset();
137   
138   //Set members from AliTRDtrackV1
139   outTrack->SetPIDquality(fPIDquality);
140   outTrack->SetEdep(fDE);
141   for(Int_t i = 0; i < AliPID::kSPECIES; i++)
142     {
143       outTrack->SetPID(i,fPID[i]);
144     }
145   for (Int_t i = 0; i < 3; i++)
146     {
147       outTrack->SetBudget(i, fBudget[i]);
148     }
149   for (Int_t iTracklet = 0; iTracklet < kNplane; iTracklet++){
150     if (fTracklet[iTracklet]){
151       AliTRDseedV1* trdTracklet = new AliTRDseedV1();
152       fTracklet[iTracklet]->ExportTRDTracklet(trdTracklet);
153       outTrack->SetTracklet(trdTracklet,iTracklet);
154     }
155   }
156
157   //Set members from AliKalmanTrack
158   outTrack->SetFakeRatio(fFakeRatio);
159   //outTrack->SetChi2(fChi2);
160   outTrack->SetMass(fMass);
161   outTrack->SetLabel(fLab);
162   (dynamic_cast<AliKalmanTrack*>(outTrack))->SetNumberOfClusters(fN);
163   outTrack->SetIntegratedLength(fIntegratedLength);
164   
165   //Set members from AliExternalTrackParam
166   outTrack->Set(fX, fAlpha, fP, fC);
167 }
168   
169
170 /**
171  * Init of arrays
172  */
173 //============================================================================
174 void AliHLTTRDTrack::InitArrays()
175 {
176   for(Int_t i = 0; i < kNplane; i++){
177     fTracklet[i]=NULL;
178   }
179
180   for(Int_t i = 0; i < AliPID::kSPECIES; i++)
181     {
182       fPID[i] = -1;
183     }
184   
185   for (Int_t i = 0; i < 3; i++)
186     {
187       fBudget[i] = -1;
188     }
189   for (Int_t i = 0; i < 5; i++)
190     {
191       fP[i] = -1;
192     }
193   for (Int_t i = 0; i < 15; i++)
194     {
195       fC[i] = -1;
196     }
197 }
198
199 /**
200  * Print main values for HLTTrack
201  */
202 //============================================================================
203 void AliHLTTRDTrack::Print(Bool_t printTracklets)
204 {
205   //printf("--hltTrack-- addr 0x%p(%i); fSize %i\n", this, (int)this, fSize);
206   //printf("   fPIDquality = %s; fX = %f; fAlpha = %f\n", fPIDquality, fX, fAlpha);
207   printf("   ");
208   
209   for(Int_t i = 0; i < AliPID::kSPECIES; i++)
210     {
211       printf("fPID[%i] = %f; ",i, fPID[i]);
212     }
213   printf("\n   ");
214   
215   for (Int_t i = 0; i < 3; i++)
216     {
217       printf("fBudget[%i] = %f; ",i, fBudget[i]);
218     }
219   printf("\n");
220
221   if (printTracklets)
222     {
223       for (Int_t i = 0; i < kNplane; i++){
224         if (fTracklet[i]){
225           printf("[%i]",i);
226           fTracklet[i]->Print();
227         }
228         else
229           printf(" NULL ");
230       }
231     }
232
233   printf("\n");
234 }
235
236 /**
237  * Read tracklets from the memory. 
238  * Number of tracklets should be already known
239  */
240 //============================================================================
241 void AliHLTTRDTrack::ReadTrackletsFromMemory(void* input)
242 {
243   AliHLTUInt8_t *iterPtr = (AliHLTUInt8_t*) input;
244   AliHLTTRDTracklet* hltTracklet = NULL;
245   
246   for (Int_t iTracklet = 0; iTracklet < kNplane; iTracklet++){
247     if (fTracklet[iTracklet]){
248       hltTracklet = (AliHLTTRDTracklet*) iterPtr;
249       hltTracklet->ReadClustersFromMemory(iterPtr+sizeof(AliHLTTRDTracklet));
250       fTracklet[iTracklet] = hltTracklet;
251       iterPtr += hltTracklet->GetSize();
252       //hltTracklet->Print(kFALSE);
253     }
254   }
255 }