]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HLT/TRD/AliHLTTRDTrack.cxx
Adding new component for TRD monitoring (Theodor)
[u/mrichter/AliRoot.git] / HLT / TRD / AliHLTTRDTrack.cxx
CommitLineData
d679dd6c 1#include "AliHLTTRDTrack.h"
2#include "AliHLTTRDTracklet.h"
3
4
5/**
6 * Default Constructor
7 */
8//============================================================================
9AliHLTTRDTrack::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//============================================================================
32AliHLTTRDTrack::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//============================================================================
61AliHLTTRDTrack::~AliHLTTRDTrack()
62{
63
64}
65
66/**
67 * Copy tracklets to the HLTTRDTrack
68 */
69//============================================================================
70void 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//============================================================================
93void AliHLTTRDTrack::CopyDataMembers()
94{
95
44be2bf1 96 fPIDquality = fTRDtrack->GetNumberOfTrackletsPID();
d679dd6c 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//============================================================================
134void 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//============================================================================
174void 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//============================================================================
203void 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//============================================================================
241void 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}