]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HLT/TRD/AliHLTTRDTracklet.cxx
- added more information about the primary vertex
[u/mrichter/AliRoot.git] / HLT / TRD / AliHLTTRDTracklet.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 "AliHLTTRDTracklet.h"
0fae33c8 25
d679dd6c 26/**
27 * Default Constructor
28 */
29//============================================================================
30AliHLTTRDTracklet::AliHLTTRDTracklet():
93ce7d1b 31 fN(0),
93ce7d1b 32 fdX(-1),
33 fS2Y(-1),
e44c0591 34 fPt(-1),
d679dd6c 35 fX0(-1),
d679dd6c 36 fChi2(-1),
0fae33c8 37 // fExB(-1),
38 // fVD(-1),
39 // fT0(-1),
40 // fS2PRF(-1),
41 // fDiffL(-1),
42 // fDiffT(-1),
43 // fX(-1),
44 // fY(-1),
45 // fZ(-1),
46 // fS2Z(-1),
9630a0b8 47 fDet(-1),
0fae33c8 48 fBits(0),
9630a0b8 49 fCount(0),
93ce7d1b 50#if defined(__HP_aCC) || defined(__DECCXX) || defined(__SUNPRO_CC)
196a8c4f 51 fSize(sizeof(AliHLTTRDTracklet)-sizeof(fClusters[0])),
93ce7d1b 52#else
9630a0b8 53 fSize(sizeof(AliHLTTRDTracklet))
93ce7d1b 54#endif
d679dd6c 55{
56 InitArrays();
d679dd6c 57}
58
59/**
93ce7d1b 60 * Main Constructor
d679dd6c 61 */
62//============================================================================
93ce7d1b 63AliHLTTRDTracklet::AliHLTTRDTracklet(const AliTRDseedV1* const inTracklet):
64 fN(inTracklet->fN),
93ce7d1b 65 fdX(inTracklet->fdX),
66 fS2Y(inTracklet->fS2Y),
67 fPt(inTracklet->fPt),
93ce7d1b 68 fX0(inTracklet->fX0),
93ce7d1b 69 fChi2(inTracklet->fChi2),
0fae33c8 70 // fExB(inTracklet->fExB),
71 // fVD(inTracklet->fVD),
72 // fT0(inTracklet->fT0),
73 // fS2PRF(inTracklet->fS2PRF),
74 // fDiffL(inTracklet->fDiffL),
75 // fDiffT(inTracklet->fDiffT),
76 // fX(inTracklet->fX),
77 // fY(inTracklet->fY),
78 // fZ(inTracklet->fZ),
79 // fS2Z(inTracklet->fS2Z),
9630a0b8 80 fDet(inTracklet->fDet),
0fae33c8 81 fBits(0),
9630a0b8 82 fCount(0),
93ce7d1b 83#if defined(__HP_aCC) || defined(__DECCXX) || defined(__SUNPRO_CC)
196a8c4f 84 fSize(sizeof(AliHLTTRDTracklet)-sizeof(fClusters[0])),
93ce7d1b 85#else
9630a0b8 86 fSize(sizeof(AliHLTTRDTracklet))
93ce7d1b 87#endif
d679dd6c 88{
93ce7d1b 89 CopyDataMembers(inTracklet);
d679dd6c 90}
91
92/**
93 * Copy simple (non-pointer) data members from TRDTracklet to HLTTRDTracklet
94 */
95//============================================================================
93ce7d1b 96void AliHLTTRDTracklet::CopyDataMembers(const AliTRDseedV1* const inTracklet)
d679dd6c 97{
98 for (Int_t i=0; i < 2; i++){
93ce7d1b 99 fYref[i] = inTracklet->fYref[i];
100 fZref[i] = inTracklet->fZref[i];
101 fYfit[i] = inTracklet->fYfit[i];
102 fZfit[i] = inTracklet->fZfit[i];
d679dd6c 103 }
8c5cf34e 104 fC[0] = inTracklet->GetC();
105#ifndef HAVE_NOT_ALITRD_SEEDV1_r39693
106 fC[1] = inTracklet->GetC(1);
107#endif //HAVE_NOT_ALITRD_SEEDV1_r39693
9630a0b8 108 for (Int_t i=0; i < 3; i++){
109 fPad[i] = inTracklet->fPad[i];
0fae33c8 110 // fCov[i] = inTracklet->fCov[i];
9630a0b8 111 }
0fae33c8 112
113 // for (Int_t i=0; i < 7; i++){
114 // fRefCov[i] = inTracklet->fRefCov[i];
115 // }
116
117 // for (Int_t i=0; i < AliTRDseedV1::kNslices; i++){
118 // fdEdx[i] = inTracklet->fdEdx[i];
119 // }
d679dd6c 120
93ce7d1b 121 for (Int_t i=0; i < AliPID::kSPECIES; i++){
122 fProb[i] = inTracklet->fProb[i];
d679dd6c 123 }
124
0fae33c8 125 fBits = UInt_t(inTracklet->TestBits(-1)) >> 14;
126
127 for (Int_t iTimeBin = 0; iTimeBin < AliTRDseedV1::kNclusters; iTimeBin++){
128 AliTRDcluster* trdCluster = inTracklet->GetClusters(iTimeBin);
129 if (trdCluster){
130 fPos[fCount] = iTimeBin;
196a8c4f 131 new (&fClusters[fCount]) AliHLTTRDExtCluster(trdCluster);
0fae33c8 132 fCount++;
196a8c4f 133 fSize += sizeof(fClusters[0]);
93ce7d1b 134 }
0fae33c8 135 }
136 //if((void*)&fClusters[fCount]!=(void*)GetEndPointer()){printf("ERRR");return;}
d679dd6c 137}
138
139/**
140 * Copy data to the output TRDseedV1
141 */
142//============================================================================
93ce7d1b 143void AliHLTTRDTracklet::ExportTRDTracklet(AliTRDseedV1* const outTracklet) const
d679dd6c 144{
93ce7d1b 145 //outTracklet->Reset(); we always use a fresh trdtracklet as input, so this is useless
d8731936 146 outTracklet->SetBit(AliTRDseedV1::kOwner);
93ce7d1b 147
148 outTracklet->fN = fN;
93ce7d1b 149 outTracklet->fdX = fdX;
150 outTracklet->fX0 = fX0;
151 outTracklet->fS2Y = fS2Y;
152 outTracklet->fPt = fPt;
8c5cf34e 153 outTracklet->SetC(fC[0]);
154#ifndef HAVE_NOT_ALITRD_SEEDV1_r39693
155 outTracklet->SetC(fC[1], 1);
156#endif //HAVE_NOT_ALITRD_SEEDV1_r39693
93ce7d1b 157 outTracklet->fChi2 = fChi2;
0fae33c8 158 // outTracklet->fExB = fExB;
159 // outTracklet->fVD = fVD;
160 // outTracklet->fT0 = fT0;
161 // outTracklet->fS2PRF = fS2PRF;
162 // outTracklet->fDiffL = fDiffL;
163 // outTracklet->fDiffT = fDiffT;
164 // outTracklet->fX = fX;
165 // outTracklet->fY = fY;
166 // outTracklet->fZ = fZ;
167 // outTracklet->fS2Z = fS2Z;
168 outTracklet->fDet = fDet;
93ce7d1b 169
d679dd6c 170 for (Int_t i=0; i < 2; i++){
93ce7d1b 171 outTracklet->fYref[i] = fYref[i];
172 outTracklet->fZref[i] = fZref[i];
173 outTracklet->fYfit[i] = fYfit[i];
174 outTracklet->fZfit[i] = fZfit[i];
d679dd6c 175 }
d679dd6c 176
9630a0b8 177 for (Int_t i=0; i < 3; i++){
178 outTracklet->fPad[i] = fPad[i];
0fae33c8 179 // outTracklet->fCov[i] = fCov[i];
9630a0b8 180 }
181
0fae33c8 182 // for (Int_t i=0; i < 7; i++){
183 // outTracklet->fRefCov[i] = fRefCov[i];
184 // }
185
186 // for (Int_t i=0; i < AliTRDseedV1::kNslices; i++){
187 // outTracklet->fdEdx[i] = fdEdx[i];
188 // }
189
93ce7d1b 190 for (Int_t i=0; i < AliPID::kSPECIES; i++){
191 outTracklet->fProb[i] = fProb[i];
d679dd6c 192 }
e3cf3d02 193
0fae33c8 194 outTracklet->SetBit(UInt_t(fBits)<<14);
195
196 for(Int_t iCluster=0; iCluster < fCount; iCluster++){
93ce7d1b 197 AliTRDcluster *trdCluster = new AliTRDcluster();
d55e8c51 198 fClusters[iCluster].ExportTRDCluster(trdCluster);
196a8c4f 199 trdCluster->SetDetector(fDet);
0fae33c8 200 outTracklet->fClusters[fPos[iCluster]] = trdCluster;
201 outTracklet->fIndexes[fPos[iCluster]] = iCluster;
d679dd6c 202 }
d679dd6c 203}
204
205
206/**
207 * Init arrays
208 */
209//============================================================================
210void AliHLTTRDTracklet::InitArrays()
211{
d679dd6c 212 for (Int_t i=0; i < 2; i++){
213 fYref[i] = -1;
214 fZref[i] = -1;
d679dd6c 215 fYfit[i] = -1;
216 fZfit[i] = -1;
d679dd6c 217 }
68f9b6bd 218 fC[0] = 0.; fC[1] = 0.;
93ce7d1b 219 for (Int_t i=0; i < AliPID::kSPECIES; i++)
220 fProb[i]=0;
d679dd6c 221}
222
223/**
224 * Prints main info about tracklet
225 */
226//============================================================================
93ce7d1b 227void AliHLTTRDTracklet::Print(Bool_t printClusters) const
d679dd6c 228{
229 //printf("--hltTracklet-- addr 0x%p(%i); fSize %i\n", this, (int)this, fSize);
93ce7d1b 230 printf(" fDet %i; fPt %f; fdX %f fN %i\n", fDet, fPt, fdX, fN);
d679dd6c 231
e3cf3d02 232 if(!printClusters) return;
d55e8c51 233 for (UInt_t iCluster = 0; iCluster < fCount; iCluster++){
234 printf(" [%i] ",iCluster);
235 fClusters[iCluster].Print();
d679dd6c 236 }
d679dd6c 237}
238
239/**
196a8c4f 240 * Save tracklet at block position
d679dd6c 241 */
242//============================================================================
196a8c4f 243AliHLTUInt32_t AliHLTTRDTracklet::SaveAt(AliHLTUInt8_t *const block, const AliTRDseedV1* const inTracklet)
244{
245 AliHLTUInt32_t size=0;
246
247 memcpy(block,inTracklet,sizeof(AliTRDseedV1));
248 size+=sizeof(AliTRDseedV1);
249
250 for(int i=0; i<AliTRDseedV1::kNclusters; i++){
251 AliTRDcluster* inClust = inTracklet->GetClusters(i);
252 if(inClust) size+=AliHLTTRDCluster::SaveAt(block+size, inClust);
253 }
254
255 return size;
256}
257
258/**
259 * Read tracklet from block
260 */
261//============================================================================
262AliHLTUInt32_t AliHLTTRDTracklet::LoadFrom(AliTRDseedV1 *const outTracklet, const AliHLTUInt8_t *const block)
263{
264 AliHLTUInt32_t size=0;
265
266 memcpy(((AliHLTUInt8_t*)outTracklet)+sizeof(void*),block+sizeof(void*),sizeof(AliTRDseedV1)-sizeof(void*));
267 size+=sizeof(AliTRDseedV1);
d8731936 268
196a8c4f 269 for(int i=0; i<AliTRDseedV1::kNclusters; i++){
270 if(outTracklet->GetClusters(i)){
271 AliTRDcluster *const outClust = new AliTRDcluster;
272 outTracklet->fClusters[i]=outClust;
273 size+=AliHLTTRDCluster::LoadFrom(outClust, block+size);
274 }
275 }
276
277 outTracklet->SetBit(AliTRDseedV1::kOwner);
278
279 return size;
280}