]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HLT/TRD/AliHLTTRDTrack.cxx
removing the CTPData from the HLTGlobalTrigger decision because of bug #88431 until...
[u/mrichter/AliRoot.git] / HLT / TRD / AliHLTTRDTrack.cxx
CommitLineData
196a8c4f 1// $Id$
2
3/**************************************************************************
4 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * *
6 * Authors: *
7 * for The ALICE HLT Project. *
8 * *
9 * Permission to use, copy, modify and distribute this software and its *
10 * documentation strictly for non-commercial purposes is hereby granted *
11 * without fee, provided that the above copyright notice appears in all *
12 * copies and that both the copyright notice and this permission notice *
13 * appear in the supporting documentation. The authors make no claims *
14 * about the suitability of this software for any purpose. It is *
15 * provided "as is" without express or implied warranty. *
16 **************************************************************************/
17
18// @file AliHLTTRDTracklet.cxx
19// @author Theodor Rascanu
20// @date
21// @brief A datacontainer for tracklets for the HLT.
22//
23
d679dd6c 24#include "AliHLTTRDTrack.h"
25#include "AliHLTTRDTracklet.h"
26
d679dd6c 27/**
28 * Default Constructor
29 */
30//============================================================================
31AliHLTTRDTrack::AliHLTTRDTrack():
d679dd6c 32 fDE(-1),
33 fFakeRatio(-1),
34 fChi2(-1),
0fae33c8 35 // fMass(-1),
d679dd6c 36 fN(-1),
37 fIntegratedLength(-1),
38 fX(-1),
93ce7d1b 39 fAlpha(-1),
0fae33c8 40 fSize(sizeof(AliHLTTRDTrack)),
41 fBits(0)
d679dd6c 42{
43 InitArrays();
44 // not to be used
45}
46
47/**
48 * Constructor
49 * Creates hltTrack from TRDtrackV1
50 */
51//============================================================================
93ce7d1b 52AliHLTTRDTrack::AliHLTTRDTrack(const AliTRDtrackV1* const inTrack):
53 fDE(inTrack->fDE),
54 fFakeRatio(inTrack->fFakeRatio),
55 fChi2(inTrack->fChi2),
0fae33c8 56 // fMass(inTrack->fMass),
93ce7d1b 57 fN(inTrack->fN),
58 fIntegratedLength(inTrack->GetIntegratedLength()),
59 fX(inTrack->GetX()),
60 fAlpha(inTrack->GetAlpha()),
0fae33c8 61 fSize(sizeof(AliHLTTRDTrack)),
62 fBits(0)
d679dd6c 63{
93ce7d1b 64 CopyDataMembers(inTrack);
d679dd6c 65}
66
67/**
68 * Default Destructor
69 * In principle should not be empty, but... we do not use it
70 */
71//============================================================================
72AliHLTTRDTrack::~AliHLTTRDTrack()
73{
74
75}
76
d679dd6c 77/**
78 * Copy data members (except tracklets) from TRDtrackV1 to HLTTRDTrack.
79 */
80//============================================================================
93ce7d1b 81void AliHLTTRDTrack::CopyDataMembers(const AliTRDtrackV1* const inTrack)
d679dd6c 82{
d679dd6c 83 for(Int_t i = 0; i < AliPID::kSPECIES; i++)
84 {
93ce7d1b 85 fPID[i] = inTrack->fPID[i];
d679dd6c 86 }
87
88 for (Int_t i = 0; i < 3; i++)
89 {
0fae33c8 90 fBudget[i] = inTrack->fBudget[i];
d679dd6c 91 }
d679dd6c 92
93ce7d1b 93 const Double_t* const Ptemp = inTrack->GetParameter();
d679dd6c 94 for (Int_t i = 0; i < 5; i++)
95 {
96 fP[i] = Ptemp[i];
97 }
0fae33c8 98
93ce7d1b 99 const Double_t* const Ctemp = inTrack->GetCovariance();
d679dd6c 100 for (Int_t i = 0; i < 15; i++)
101 {
102 fC[i] = Ctemp[i];
103 }
93ce7d1b 104
0fae33c8 105 UInt_t mask = inTrack->TestBits(-1);
106 fBits = mask >> 14;
107
93ce7d1b 108 for (Int_t iTracklet = 0; iTracklet < AliTRDtrackV1::kNplane; iTracklet++)
109 {
110 AliTRDseedV1* trdTracklet = inTrack->GetTracklet(iTracklet);
111 if (trdTracklet){
112 AliHLTTRDTracklet* hltTracklet = new (GetEndPointer()) AliHLTTRDTracklet(trdTracklet);
113 fSize += hltTracklet->GetSize();
114 fTrackletAtPlane[iTracklet] = kTRUE;
115 }
116 else fTrackletAtPlane[iTracklet] = kFALSE;
117 }
d679dd6c 118}
119
120/**
121 * Copy data to the output TRDtrackV1
122 */
123//============================================================================
93ce7d1b 124void AliHLTTRDTrack::ExportTRDTrack(AliTRDtrackV1* const outTrack) const
d679dd6c 125{
93ce7d1b 126 //outTrack->Reset(); we always use a new fresh trdtrack as input, so this is useless
196a8c4f 127 outTrack->SetBit(AliTRDtrackV1::kOwner);
d8731936 128
93ce7d1b 129 outTrack->fDE=fDE;
130 outTrack->fFakeRatio=fFakeRatio;
131 outTrack->fChi2=fChi2;
0fae33c8 132 // outTrack->fMass=fMass;
93ce7d1b 133 outTrack->fN=fN;
134 outTrack->SetIntegratedLength(fIntegratedLength);
135 outTrack->Set(fX, fAlpha, fP, fC);
136
d679dd6c 137 for(Int_t i = 0; i < AliPID::kSPECIES; i++)
138 {
93ce7d1b 139 outTrack->fPID[i] = fPID[i];
d679dd6c 140 }
141 for (Int_t i = 0; i < 3; i++)
142 {
0fae33c8 143 outTrack->fBudget[i]=fBudget[i];
d679dd6c 144 }
93ce7d1b 145
0fae33c8 146 outTrack->SetBit(UInt_t(fBits)<<14);
147
93ce7d1b 148 AliHLTUInt8_t *iterPtr = (AliHLTUInt8_t*)this+sizeof(*this);
149 AliHLTTRDTracklet* hltTracklet;
150
151 for (Int_t iTracklet = 0; iTracklet < AliTRDtrackV1::kNplane; iTracklet++){
152 if (fTrackletAtPlane[iTracklet]){
d679dd6c 153 AliTRDseedV1* trdTracklet = new AliTRDseedV1();
93ce7d1b 154 hltTracklet = (AliHLTTRDTracklet*) iterPtr;
155 hltTracklet->ExportTRDTracklet(trdTracklet);
d679dd6c 156 outTrack->SetTracklet(trdTracklet,iTracklet);
93ce7d1b 157 iterPtr += hltTracklet->GetSize();
d679dd6c 158 }
159 }
160
d679dd6c 161}
162
163
164/**
165 * Init of arrays
166 */
167//============================================================================
168void AliHLTTRDTrack::InitArrays()
169{
93ce7d1b 170 for(Int_t i = 0; i < AliTRDtrackV1::kNplane; i++){
171 fTrackletAtPlane[i]=kFALSE;
d679dd6c 172 }
173
174 for(Int_t i = 0; i < AliPID::kSPECIES; i++)
175 {
176 fPID[i] = -1;
177 }
178
179 for (Int_t i = 0; i < 3; i++)
180 {
181 fBudget[i] = -1;
182 }
183 for (Int_t i = 0; i < 5; i++)
184 {
185 fP[i] = -1;
186 }
187 for (Int_t i = 0; i < 15; i++)
188 {
189 fC[i] = -1;
190 }
191}
192
193/**
194 * Print main values for HLTTrack
195 */
196//============================================================================
93ce7d1b 197void AliHLTTRDTrack::Print(Bool_t printTracklets) const
d679dd6c 198{
e03c1166 199 printf("--hltTrack-- addr %p; fSize %i\n", this, fSize);
93ce7d1b 200 printf(" fX = %f; fAlpha = %f\n", fX, fAlpha);
d679dd6c 201 printf(" ");
202
203 for(Int_t i = 0; i < AliPID::kSPECIES; i++)
204 {
205 printf("fPID[%i] = %f; ",i, fPID[i]);
206 }
207 printf("\n ");
208
209 for (Int_t i = 0; i < 3; i++)
210 {
211 printf("fBudget[%i] = %f; ",i, fBudget[i]);
212 }
213 printf("\n");
214
215 if (printTracklets)
216 {
93ce7d1b 217 AliHLTUInt8_t *iterPtr = (AliHLTUInt8_t*)this+sizeof(*this);
218 AliHLTTRDTracklet* hltTracklet;
219
220 for (Int_t i = 0; i < AliTRDtrackV1::kNplane; i++){
221 if (fTrackletAtPlane[i]){
d679dd6c 222 printf("[%i]",i);
93ce7d1b 223 hltTracklet = (AliHLTTRDTracklet*) iterPtr;
224 hltTracklet->Print();
225 iterPtr += hltTracklet->GetSize();
d679dd6c 226 }
227 else
228 printf(" NULL ");
229 }
230 }
231
232 printf("\n");
233}
234
235/**
196a8c4f 236 * Save track at block position
d679dd6c 237 */
238//============================================================================
196a8c4f 239AliHLTUInt32_t AliHLTTRDTrack::SaveAt(AliHLTUInt8_t *const block, const AliTRDtrackV1* const inTrack)
240{
241 AliHLTUInt32_t size=0;
242
243 memcpy(block,inTrack,sizeof(AliTRDtrackV1));
244 size+=sizeof(AliTRDtrackV1);
245
246 for(int i=0; i<AliTRDtrackV1::kNplane; i++){
247 AliTRDseedV1* inTracklet = inTrack->GetTracklet(i);
248 if(inTracklet) size+=AliHLTTRDTracklet::SaveAt(block+size, inTracklet);
249 }
250
251 return size;
252}
d8731936 253
196a8c4f 254/**
255 * Read track from block
256 */
257//============================================================================
258AliHLTUInt32_t AliHLTTRDTrack::LoadFrom(AliTRDtrackV1 *const outTrack, const AliHLTUInt8_t *const block)
259{
260 AliHLTUInt32_t size=0;
261
262 memcpy(((AliHLTUInt8_t*)outTrack)+sizeof(void*),block+sizeof(void*),sizeof(AliTRDtrackV1)-sizeof(void*));
263 size+=sizeof(AliTRDtrackV1);
264
265 for(int i=0; i<AliTRDtrackV1::kNplane; i++){
266 if(outTrack->GetTracklet(i)){
267 AliTRDseedV1 *const outTracklet = new AliTRDseedV1;
268 outTrack->fTracklet[i]=outTracklet;
269 size+=AliHLTTRDTracklet::LoadFrom(outTracklet, block+size);
270 }
271 }
272
273 outTrack->SetBit(AliTRDtrackV1::kOwner);
274 outTrack->fBackupTrack=NULL;
275 outTrack->fTrackLow=NULL;
276 outTrack->fTrackHigh=NULL;
277 return size;
278}