]>
Commit | Line | Data |
---|---|---|
775f67d7 | 1 | // $Id:$ |
dc2e6604 | 2 | /************************************************************************** |
3 | * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
4 | * * | |
5 | * Author: The ALICE Off-line Project. * | |
6 | * Contributors are mentioned in the code where appropriate. * | |
7 | * * | |
8 | * Permission to use, copy, modify and distribute this software and its * | |
9 | * documentation strictly for non-commercial purposes is hereby granted * | |
10 | * without fee, provided that the above copyright notice appears in all * | |
11 | * copies and that both the copyright notice and this permission notice * | |
12 | * appear in the supporting documentation. The authors make no claims * | |
13 | * about the suitability of this software for any purpose. It is * | |
14 | * provided "as is" without express or implied warranty. * | |
15 | **************************************************************************/ | |
16 | ||
17 | /////////////////////////////////////////////////////////////////////////////// | |
18 | // // | |
19 | // HLT TRD Utillities Class // | |
20 | // // | |
21 | /////////////////////////////////////////////////////////////////////////////// | |
22 | ||
23 | #include "AliHLTTRDUtils.h" | |
24 | #include <TClonesArray.h> | |
25 | #include "AliHLTTRDTrack.h" | |
26 | #include "AliHLTTRDCluster.h" | |
18ada816 | 27 | #include "AliHLTExternalTrackParam.h" |
28 | #include "AliESDEvent.h" | |
29 | #include "AliESDtrack.h" | |
30 | #include "AliPID.h" | |
31 | ||
32 | ClassImp(AliHLTTRDUtils) | |
dc2e6604 | 33 | |
34 | AliHLTUInt32_t AliHLTTRDUtils::AddClustersToOutput(TClonesArray* inClusterArray, AliHLTUInt8_t* outBlockPtr) | |
35 | { | |
36 | AliTRDcluster* cluster = 0; | |
37 | AliHLTUInt32_t addedSize = 0; | |
38 | // == OUTdatatype pointer | |
39 | AliHLTTRDCluster * outPtr = (AliHLTTRDCluster*)outBlockPtr; | |
40 | ||
41 | if (inClusterArray){ | |
42 | Int_t nbEntries = inClusterArray->GetEntries(); | |
43 | for (Int_t iCluster = 0; iCluster<nbEntries; iCluster++){ | |
44 | //cout << "Geting cluster #" << iCluster << endl; | |
45 | UInt_t blockSize=0; | |
46 | ||
47 | cluster = dynamic_cast<AliTRDcluster*>(inClusterArray->At(iCluster)); | |
48 | ||
49 | AliHLTTRDCluster *hltCluster = new (outPtr) AliHLTTRDCluster(cluster); | |
50 | //cout << Form("cluster added at 0x%x (%i)\n",outPtr,outPtr); | |
51 | ||
52 | blockSize = sizeof(*hltCluster); | |
53 | ||
54 | addedSize += blockSize; | |
55 | outBlockPtr += blockSize; | |
56 | outPtr = (AliHLTTRDCluster*)outBlockPtr; | |
57 | } | |
58 | } | |
59 | return addedSize; | |
60 | ||
61 | } | |
62 | ||
63 | AliHLTUInt32_t AliHLTTRDUtils::AddTracksToOutput(TClonesArray* inTrackArray, AliHLTUInt8_t* output) | |
64 | { | |
18ada816 | 65 | //cout << "\nWriting tracks to the Memory\n ============= \n"; |
dc2e6604 | 66 | AliTRDtrackV1* track = 0; |
67 | AliHLTUInt32_t addedSize = 0; | |
68 | AliHLTUInt8_t *iterPtr = output; | |
69 | AliHLTTRDTrack * outPtr = (AliHLTTRDTrack*)iterPtr; | |
70 | ||
71 | if (inTrackArray){ | |
72 | Int_t nbTracks = inTrackArray->GetEntries(); | |
73 | for (Int_t iTrack = 0; iTrack<nbTracks; iTrack++){ | |
74 | AliHLTUInt32_t trackSize=0; | |
75 | ||
76 | track = dynamic_cast<AliTRDtrackV1*>(inTrackArray->At(iTrack)); | |
77 | //track->Print(); | |
78 | ||
79 | AliHLTTRDTrack *hltTrack = new (outPtr) AliHLTTRDTrack(track); | |
80 | trackSize = hltTrack->GetSize(); | |
81 | addedSize += trackSize; | |
e3e5ac39 | 82 | //HLTDebug("addedSize %i, trackSize %i", addedSize, trackSize); |
dc2e6604 | 83 | |
84 | iterPtr += trackSize; | |
85 | outPtr = (AliHLTTRDTrack*)iterPtr; | |
86 | } | |
87 | } | |
88 | return addedSize; | |
89 | ||
90 | } | |
91 | ||
92 | /** | |
93 | * Read cluster to the TClonesArray from the memory | |
94 | */ | |
95 | //============================================================================ | |
96 | AliHLTUInt32_t AliHLTTRDUtils::ReadClusters(TClonesArray *outArray, void* inputPtr, AliHLTUInt32_t size) | |
97 | { | |
98 | //HLTDebug("\nReading clusters from the Memory\n ============= \n"); | |
99 | AliHLTTRDCluster * curCluster; | |
100 | UInt_t clusterSize = sizeof(AliHLTTRDCluster), curSize = 0; | |
101 | Int_t i=0; | |
102 | ||
103 | curCluster = (AliHLTTRDCluster*) inputPtr; | |
104 | while (curSize + clusterSize <= size) | |
105 | { | |
e3e5ac39 | 106 | //HLTDebug(" fX = %f; fY = %f; fZ = %f", curCluster->fX, curCluster->fY, curCluster->fZ); |
dc2e6604 | 107 | |
108 | AliTRDcluster* curTRDCluster = new((*outArray)[i]) AliTRDcluster(); | |
109 | curCluster->ExportTRDCluster(curTRDCluster); | |
775f67d7 | 110 | curTRDCluster->SetRPhiMethod(AliTRDcluster::kCOG); |
e3e5ac39 | 111 | //HLTDebug(" fX = %f; fY = %f; fZ = %f", curTRDCluster->GetX(), curTRDCluster->GetY(), curTRDCluster->GetZ()); |
dc2e6604 | 112 | curSize += clusterSize; |
113 | i++; | |
114 | curCluster++; | |
115 | //cout << " current readed size is " << curSize << "/" << size << endl; | |
116 | } | |
117 | ||
118 | return i; | |
119 | } | |
120 | ||
121 | AliHLTUInt32_t AliHLTTRDUtils::ReadTracks(TClonesArray *outArray, void* inputPtr, AliHLTUInt32_t size) | |
122 | { | |
123 | AliHLTUInt8_t* iterPtr = (AliHLTUInt8_t* )inputPtr; | |
124 | ||
125 | //cout << "\nReading tracks from the Memory\n ============= \n"; | |
e3e5ac39 | 126 | //HLTDebug ("\nReading tracks from the Memory\n ============= \n"); |
dc2e6604 | 127 | AliHLTTRDTrack * hltTrack; |
128 | AliHLTUInt32_t trackSize = 0, curSize = 0; | |
129 | Int_t counter=0; | |
130 | ||
131 | while (curSize < size) | |
132 | { | |
133 | hltTrack = (AliHLTTRDTrack*) iterPtr; | |
e3e5ac39 | 134 | //HLTDebug("curSize %i, size %i",curSize, size); |
dc2e6604 | 135 | |
136 | trackSize = hltTrack->GetSize(); | |
e3e5ac39 | 137 | //HLTDebug("GetSize() %i", trackSize); |
dc2e6604 | 138 | |
139 | hltTrack->ReadTrackletsFromMemory(iterPtr + sizeof(AliHLTTRDTrack)); | |
140 | ||
141 | AliTRDtrackV1* curTRDTrack = new((*outArray)[counter]) AliTRDtrackV1(); | |
142 | hltTrack->ExportTRDTrack(curTRDTrack); | |
143 | ||
144 | curSize += trackSize; | |
145 | iterPtr += trackSize; | |
146 | counter++; | |
147 | } | |
148 | ||
149 | //CheckTrackArray(outArray); | |
150 | ||
151 | return counter; | |
152 | } | |
153 | ||
18ada816 | 154 | AliHLTUInt32_t AliHLTTRDUtils::AddESDToOutput(const AliESDEvent* const esd, AliHLTUInt8_t* const outBlockPtr) |
155 | { | |
156 | AliESDtrack* esdTrack = 0; | |
157 | AliHLTUInt8_t* iterPtr = outBlockPtr; | |
158 | ||
159 | AliHLTTracksData* trksData = new(iterPtr) AliHLTTracksData; | |
160 | iterPtr += sizeof(AliHLTTracksData); | |
161 | trksData->fCount=0; | |
162 | ||
163 | if(esd){ | |
164 | Double_t pid[5]; | |
165 | for(Int_t i=0; i<esd->GetNumberOfTracks(); i++){ | |
166 | esdTrack=esd->GetTrack(i); | |
167 | if(!esdTrack)continue; | |
168 | AliHLTExternalTrackParam* trk = new(iterPtr) AliHLTExternalTrackParam; | |
169 | iterPtr += sizeof(AliHLTExternalTrackParam); | |
170 | trk->fAlpha = esdTrack->GetAlpha(); | |
171 | trk->fX = esdTrack->GetX(); | |
172 | trk->fY = esdTrack->GetY(); | |
173 | trk->fZ = esdTrack->GetZ(); | |
174 | trk->fSinPsi = esdTrack->GetSnp(); | |
175 | trk->fTgl = esdTrack->GetTgl(); | |
176 | trk->fq1Pt = esdTrack->GetSigned1Pt(); | |
177 | trk->fC[0] = esdTrack->GetSigmaY2(); | |
178 | trk->fC[1] = esdTrack->GetSigmaZY(); | |
179 | trk->fC[2] = esdTrack->GetSigmaZ2(); | |
180 | trk->fC[3] = esdTrack->GetSigmaSnpY(); | |
181 | trk->fC[4] = esdTrack->GetSigmaSnpZ(); | |
182 | trk->fC[5] = esdTrack->GetSigmaSnp2(); | |
183 | trk->fC[6] = esdTrack->GetSigmaTglY(); | |
184 | trk->fC[7] = esdTrack->GetSigmaTglZ(); | |
185 | trk->fC[8] = esdTrack->GetSigmaTglSnp(); | |
186 | trk->fC[9] = esdTrack->GetSigmaTgl2(); | |
187 | trk->fC[10] = esdTrack->GetSigma1PtY(); | |
188 | trk->fC[11] = esdTrack->GetSigma1PtZ(); | |
189 | trk->fC[12] = esdTrack->GetSigma1PtSnp(); | |
190 | trk->fC[13] = esdTrack->GetSigma1PtTgl(); | |
191 | trk->fC[14] = esdTrack->GetSigma1Pt2(); | |
192 | esdTrack->GetTRDpid(pid); | |
193 | //trk->fTRDpid = pid[AliPID::kElectron]; ... | |
194 | trk->fNPoints = 0; | |
195 | trksData->fCount++; | |
196 | } | |
197 | } | |
198 | return iterPtr - outBlockPtr; | |
199 | } |