restoring backward compatibility after changes in AliTRDseedV1 r39693
[u/mrichter/AliRoot.git] / HLT / TRD / AliHLTTRDTracklet.cxx
1 #include "AliHLTTRDTracklet.h"
2
3 /**
4  * Default Constructor
5  */
6 //============================================================================
7 AliHLTTRDTracklet::AliHLTTRDTracklet():
8   fN(0),
9   fdX(-1),
10   fS2Y(-1),
11   fPt(-1),
12   fX0(-1),
13   fChi2(-1),
14   // fExB(-1),
15   // fVD(-1),
16   // fT0(-1),
17   // fS2PRF(-1),
18   // fDiffL(-1),
19   // fDiffT(-1),
20   // fX(-1),
21   // fY(-1),
22   // fZ(-1),
23   // fS2Z(-1),
24   fDet(-1),
25   fBits(0),
26   fCount(0),
27 #if defined(__HP_aCC) || defined(__DECCXX) || defined(__SUNPRO_CC)
28   fSize(sizeof(AliHLTTRDTracklet)-sizeof(AliHLTTRDCluster)),
29 #else
30   fSize(sizeof(AliHLTTRDTracklet))
31 #endif
32 {
33   InitArrays();
34 }
35
36 /**
37  * Main Constructor
38  */
39 //============================================================================
40 AliHLTTRDTracklet::AliHLTTRDTracklet(const AliTRDseedV1* const inTracklet):
41   fN(inTracklet->fN),
42   fdX(inTracklet->fdX),
43   fS2Y(inTracklet->fS2Y),
44   fPt(inTracklet->fPt),
45   fX0(inTracklet->fX0),
46   fChi2(inTracklet->fChi2),
47   // fExB(inTracklet->fExB),
48   // fVD(inTracklet->fVD),
49   // fT0(inTracklet->fT0),
50   // fS2PRF(inTracklet->fS2PRF),
51   // fDiffL(inTracklet->fDiffL),
52   // fDiffT(inTracklet->fDiffT),
53   // fX(inTracklet->fX),
54   // fY(inTracklet->fY),
55   // fZ(inTracklet->fZ),
56   // fS2Z(inTracklet->fS2Z),
57   fDet(inTracklet->fDet),
58   fBits(0),
59   fCount(0),
60 #if defined(__HP_aCC) || defined(__DECCXX) || defined(__SUNPRO_CC)
61   fSize(sizeof(AliHLTTRDTracklet)-sizeof(AliHLTTRDCluster)),
62 #else
63   fSize(sizeof(AliHLTTRDTracklet))
64 #endif
65 {
66   CopyDataMembers(inTracklet);
67 }
68
69 /**
70  * Copy simple (non-pointer) data members from TRDTracklet to HLTTRDTracklet 
71  */
72 //============================================================================  
73 void AliHLTTRDTracklet::CopyDataMembers(const AliTRDseedV1* const inTracklet)
74 {
75   for (Int_t i=0; i < 2; i++){
76     fYref[i]   = inTracklet->fYref[i];
77     fZref[i]   = inTracklet->fZref[i];
78     fYfit[i]   = inTracklet->fYfit[i];
79     fZfit[i]   = inTracklet->fZfit[i];
80   }
81   fC[0] = inTracklet->GetC();
82 #ifndef HAVE_NOT_ALITRD_SEEDV1_r39693
83   fC[1] = inTracklet->GetC(1);
84 #endif //HAVE_NOT_ALITRD_SEEDV1_r39693
85   for (Int_t i=0; i < 3; i++){
86     fPad[i] = inTracklet->fPad[i];
87     // fCov[i] = inTracklet->fCov[i];
88   }
89
90   // for (Int_t i=0; i < 7; i++){
91   //   fRefCov[i] = inTracklet->fRefCov[i];
92   // }
93
94   // for (Int_t i=0; i < AliTRDseedV1::kNslices; i++){
95   //   fdEdx[i] = inTracklet->fdEdx[i];
96   // }
97   
98   for (Int_t i=0; i < AliPID::kSPECIES; i++){
99     fProb[i] = inTracklet->fProb[i];
100   }
101
102   fBits = UInt_t(inTracklet->TestBits(-1)) >> 14;
103
104   for (Int_t iTimeBin = 0; iTimeBin < AliTRDseedV1::kNclusters; iTimeBin++){
105     AliTRDcluster* trdCluster = inTracklet->GetClusters(iTimeBin);
106     if (trdCluster){
107       fPos[fCount] = iTimeBin;
108       new (&fClusters[fCount]) AliHLTTRDCluster(trdCluster);
109       fCount++;
110       fSize += sizeof(AliHLTTRDCluster);
111     }
112   }  
113   //if((void*)&fClusters[fCount]!=(void*)GetEndPointer()){printf("ERRR");return;}
114 }
115
116 /**
117  * Copy data to the output TRDseedV1
118  */
119 //============================================================================
120 void AliHLTTRDTracklet::ExportTRDTracklet(AliTRDseedV1* const outTracklet) const
121 {
122   //outTracklet->Reset(); we always use a fresh trdtracklet as input, so this is useless
123   outTracklet->SetBit(AliTRDseedV1::kOwner);
124
125   outTracklet->fN      = fN;
126   outTracklet->fdX     = fdX;
127   outTracklet->fX0     = fX0;
128   outTracklet->fS2Y    = fS2Y;
129   outTracklet->fPt     = fPt;
130   outTracklet->SetC(fC[0]);
131 #ifndef HAVE_NOT_ALITRD_SEEDV1_r39693
132   outTracklet->SetC(fC[1], 1);
133 #endif //HAVE_NOT_ALITRD_SEEDV1_r39693
134   outTracklet->fChi2   = fChi2;
135   // outTracklet->fExB    = fExB;
136   // outTracklet->fVD     = fVD;
137   // outTracklet->fT0     = fT0;
138   // outTracklet->fS2PRF  = fS2PRF;
139   // outTracklet->fDiffL  = fDiffL;
140   // outTracklet->fDiffT  = fDiffT;
141   // outTracklet->fX      = fX;
142   // outTracklet->fY      = fY;
143   // outTracklet->fZ      = fZ;
144   // outTracklet->fS2Z    = fS2Z;
145   outTracklet->fDet    = fDet;
146
147   for (Int_t i=0; i < 2; i++){
148     outTracklet->fYref[i]   = fYref[i];
149     outTracklet->fZref[i]   = fZref[i];
150     outTracklet->fYfit[i]   = fYfit[i];
151     outTracklet->fZfit[i]   = fZfit[i];
152   }
153
154   for (Int_t i=0; i < 3; i++){
155     outTracklet->fPad[i] = fPad[i];
156     // outTracklet->fCov[i] = fCov[i];
157   }
158
159   // for (Int_t i=0; i < 7; i++){
160   //   outTracklet->fRefCov[i] = fRefCov[i];
161   // }
162
163   // for (Int_t i=0; i < AliTRDseedV1::kNslices; i++){
164   //   outTracklet->fdEdx[i] = fdEdx[i];
165   // }
166
167   for (Int_t i=0; i < AliPID::kSPECIES; i++){
168     outTracklet->fProb[i] = fProb[i];
169   }
170
171   outTracklet->SetBit(UInt_t(fBits)<<14);
172
173   for(Int_t iCluster=0; iCluster < fCount; iCluster++){
174     AliTRDcluster *trdCluster = new AliTRDcluster();
175     fClusters[iCluster].ExportTRDCluster(trdCluster);
176     outTracklet->fClusters[fPos[iCluster]] = trdCluster;
177     outTracklet->fIndexes[fPos[iCluster]] = iCluster;
178   }
179 }
180
181
182 /**
183  * Init arrays
184  */
185 //============================================================================
186 void AliHLTTRDTracklet::InitArrays()
187 {
188   for (Int_t i=0; i < 2; i++){
189     fYref[i] = -1;
190     fZref[i] = -1;
191     fYfit[i] = -1;
192     fZfit[i] = -1;
193   }
194   fC[0] = 0.; fC[1] = 0.; 
195   for (Int_t i=0; i < AliPID::kSPECIES; i++)
196     fProb[i]=0;
197 }
198
199 /**
200  * Prints main info about tracklet
201  */
202 //============================================================================
203 void AliHLTTRDTracklet::Print(Bool_t printClusters) const
204 {
205   //printf("--hltTracklet-- addr 0x%p(%i); fSize %i\n", this, (int)this, fSize);
206   printf("      fDet %i; fPt %f; fdX %f fN %i\n", fDet, fPt, fdX, fN);
207
208   if(!printClusters) return;
209   for (UInt_t iCluster = 0; iCluster < fCount; iCluster++){
210     printf(" [%i] ",iCluster);
211     fClusters[iCluster].Print();
212   }
213 }
214
215 /**
216  * Read clusters to TRDtracklet from the memory
217  */
218 //============================================================================
219 // void AliHLTTRDTracklet::ReadClustersFromMemory(void *input)
220 // {
221 //   AliHLTUInt8_t *iterPtr = (AliHLTUInt8_t*) input;
222 //   AliHLTTRDCluster* hltCluster = NULL;
223   
224 //   for (Int_t iCluster = 0; iCluster < AliTRDseedV1::kNclusters; iCluster++){
225 //     // if we had something in the fClusters[iCluster] before copying,
226 //     // then this entry in the array should not be empty. Fill it.
227 //     if (fClusters[iCluster]){
228 //       hltCluster = (AliHLTTRDCluster*) iterPtr;
229 //       fClusters[iCluster] = hltCluster;
230 //       iterPtr += hltCluster->GetSize();
231 //       //hltCluster->Print();
232 //     }
233     
234 //   }
235 // }
236