]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/TRD/AliHLTTRDTrack.cxx
extending trigger agent and it's HLTOUT handler
[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   fDE(-1),
11   fFakeRatio(-1),
12   fChi2(-1),
13   fN(-1),
14   fIntegratedLength(-1),
15   fX(-1),
16   fAlpha(-1),
17   fSize(sizeof(AliHLTTRDTrack))
18 {
19   InitArrays();
20   // not to be used
21 }
22
23 /**
24  * Constructor
25  * Creates hltTrack from TRDtrackV1
26  */
27 //============================================================================
28 AliHLTTRDTrack::AliHLTTRDTrack(const AliTRDtrackV1* const inTrack):
29   fDE(inTrack->fDE),
30   fFakeRatio(inTrack->fFakeRatio),
31   fChi2(inTrack->fChi2),
32   fN(inTrack->fN),
33   fIntegratedLength(inTrack->GetIntegratedLength()),
34   fX(inTrack->GetX()),
35   fAlpha(inTrack->GetAlpha()),
36   fSize(sizeof(AliHLTTRDTrack))
37 {
38   CopyDataMembers(inTrack);
39 }
40
41 /**
42  * Default Destructor
43  * In principle should not be empty, but... we do not use it
44  */
45 //============================================================================
46 AliHLTTRDTrack::~AliHLTTRDTrack()
47 {
48   
49 }
50
51 /**
52  * Copy data members (except tracklets) from TRDtrackV1 to HLTTRDTrack.
53  */
54 //============================================================================
55 void AliHLTTRDTrack::CopyDataMembers(const AliTRDtrackV1* const inTrack)
56 {
57   for(Int_t i = 0; i < AliPID::kSPECIES; i++)
58     {
59       fPID[i] = inTrack->fPID[i];
60     }
61   
62   for (Int_t i = 0; i < 3; i++)
63     {
64       fBudget[i] = inTrack->GetBudget(i);
65     }
66   
67   const Double_t* const Ptemp = inTrack->GetParameter();
68   for (Int_t i = 0; i < 5; i++)
69     {
70       fP[i] = Ptemp[i];
71     }
72   const Double_t* const Ctemp = inTrack->GetCovariance();
73   for (Int_t i = 0; i < 15; i++)
74     {
75       fC[i] = Ctemp[i];
76     }
77
78   for (Int_t iTracklet = 0; iTracklet < AliTRDtrackV1::kNplane; iTracklet++)
79     {
80       AliTRDseedV1* trdTracklet = inTrack->GetTracklet(iTracklet);
81       if (trdTracklet){
82         AliHLTTRDTracklet* hltTracklet = new (GetEndPointer()) AliHLTTRDTracklet(trdTracklet);
83         fSize += hltTracklet->GetSize();
84         fTrackletAtPlane[iTracklet] = kTRUE;
85       }
86       else fTrackletAtPlane[iTracklet] = kFALSE;
87     }
88 }
89
90 /**
91  * Copy data to the output TRDtrackV1
92  */
93 //============================================================================
94 void AliHLTTRDTrack::ExportTRDTrack(AliTRDtrackV1* const outTrack) const
95 {
96   //outTrack->Reset(); we always use a new fresh trdtrack as input, so this is useless
97   outTrack->SetBit(AliTRDtrackV1::kOwner);  
98
99   outTrack->fDE=fDE;
100   outTrack->fFakeRatio=fFakeRatio;
101   outTrack->fChi2=fChi2;
102   outTrack->fN=fN;
103   outTrack->SetIntegratedLength(fIntegratedLength);
104   outTrack->Set(fX, fAlpha, fP, fC);
105
106   for(Int_t i = 0; i < AliPID::kSPECIES; i++)
107     {
108       outTrack->fPID[i] = fPID[i];
109     }
110   for (Int_t i = 0; i < 3; i++)
111     {
112       outTrack->SetBudget(i, fBudget[i]);
113     }
114
115   AliHLTUInt8_t *iterPtr = (AliHLTUInt8_t*)this+sizeof(*this);
116   AliHLTTRDTracklet* hltTracklet;
117   
118   for (Int_t iTracklet = 0; iTracklet < AliTRDtrackV1::kNplane; iTracklet++){
119     if (fTrackletAtPlane[iTracklet]){
120       AliTRDseedV1* trdTracklet = new AliTRDseedV1();
121       hltTracklet = (AliHLTTRDTracklet*) iterPtr;
122       hltTracklet->ExportTRDTracklet(trdTracklet);
123       outTrack->SetTracklet(trdTracklet,iTracklet);
124       iterPtr += hltTracklet->GetSize();
125     }
126   }
127
128 }
129   
130
131 /**
132  * Init of arrays
133  */
134 //============================================================================
135 void AliHLTTRDTrack::InitArrays()
136 {
137   for(Int_t i = 0; i < AliTRDtrackV1::kNplane; i++){
138     fTrackletAtPlane[i]=kFALSE;
139   }
140
141   for(Int_t i = 0; i < AliPID::kSPECIES; i++)
142     {
143       fPID[i] = -1;
144     }
145   
146   for (Int_t i = 0; i < 3; i++)
147     {
148       fBudget[i] = -1;
149     }
150   for (Int_t i = 0; i < 5; i++)
151     {
152       fP[i] = -1;
153     }
154   for (Int_t i = 0; i < 15; i++)
155     {
156       fC[i] = -1;
157     }
158 }
159
160 /**
161  * Print main values for HLTTrack
162  */
163 //============================================================================
164 void AliHLTTRDTrack::Print(Bool_t printTracklets) const
165 {
166   printf("--hltTrack-- addr %p; fSize %i\n", this, fSize);
167   printf("   fX = %f; fAlpha = %f\n", fX, fAlpha);
168   printf("   ");
169   
170   for(Int_t i = 0; i < AliPID::kSPECIES; i++)
171     {
172       printf("fPID[%i] = %f; ",i, fPID[i]);
173     }
174   printf("\n   ");
175   
176   for (Int_t i = 0; i < 3; i++)
177     {
178       printf("fBudget[%i] = %f; ",i, fBudget[i]);
179     }
180   printf("\n");
181
182   if (printTracklets)
183     {
184       AliHLTUInt8_t *iterPtr = (AliHLTUInt8_t*)this+sizeof(*this);
185       AliHLTTRDTracklet* hltTracklet;
186
187       for (Int_t i = 0; i < AliTRDtrackV1::kNplane; i++){
188         if (fTrackletAtPlane[i]){
189           printf("[%i]",i);
190           hltTracklet = (AliHLTTRDTracklet*) iterPtr;
191           hltTracklet->Print();
192           iterPtr += hltTracklet->GetSize();
193         }
194         else
195           printf(" NULL ");
196       }
197     }
198
199   printf("\n");
200 }
201
202 /**
203  * Read tracklets from the memory. 
204  * Number of tracklets should be already known
205  */
206 //============================================================================
207 // void AliHLTTRDTrack::ReadTrackletsFromMemory(void* input)
208 // {
209 //   AliHLTUInt8_t *iterPtr = (AliHLTUInt8_t*) input;
210 //   AliHLTTRDTracklet* hltTracklet = NULL;
211   
212 //   for (Int_t iTracklet = 0; iTracklet < AliTRDtrackV1::kNplane; iTracklet++){
213 //     if (fTracklet[iTracklet]){
214 //       hltTracklet = (AliHLTTRDTracklet*) iterPtr;
215 //       //hltTracklet->ReadClustersFromMemory(iterPtr+sizeof(AliHLTTRDTracklet));
216 //       fTracklet[iTracklet] = hltTracklet;
217 //       iterPtr += hltTracklet->GetSize();
218 //       //hltTracklet->Print(kFALSE);
219 //     }
220 //   }
221 // }
222