HLT TRD update and cleanup, changes according to offline TRD (Theodor)
[u/mrichter/AliRoot.git] / HLT / TRD / AliHLTTRDTracklet.cxx
1 #include "AliHLTTRDTracklet.h"
2 /**
3  * Default Constructor
4  */
5 //============================================================================
6 AliHLTTRDTracklet::AliHLTTRDTracklet():
7   fN(0),
8   fDet(-1),
9   fdX(-1),
10   fS2Y(-1),
11   fPt(-1),
12   fPad3(-1),
13   fPad2(-1),
14   fX0(-1),
15   fC(-1),
16   fChi2(-1),
17 #if defined(__HP_aCC) || defined(__DECCXX) || defined(__SUNPRO_CC)
18   fSize(sizeof(AliHLTTRDTracklet)-sizeof(IndexAndCluster)),
19 #else
20   fSize(sizeof(AliHLTTRDTracklet)),
21 #endif
22   fCount(0)
23 {
24   InitArrays();
25 }
26
27 /**
28  * Main Constructor
29  */
30 //============================================================================
31 AliHLTTRDTracklet::AliHLTTRDTracklet(const AliTRDseedV1* const inTracklet):
32   fN(inTracklet->fN),
33   fDet(inTracklet->fDet),
34   fdX(inTracklet->fdX),
35   fS2Y(inTracklet->fS2Y),
36   fPt(inTracklet->fPt),
37   fPad3(inTracklet->fPad[3]),
38   fPad2(inTracklet->fPad[2]),
39   fX0(inTracklet->fX0),
40   fC(inTracklet->fC),
41   fChi2(inTracklet->fChi2),
42 #if defined(__HP_aCC) || defined(__DECCXX) || defined(__SUNPRO_CC)
43   fSize(sizeof(AliHLTTRDTracklet)-sizeof(IndexAndCluster)),
44 #else
45   fSize(sizeof(AliHLTTRDTracklet)),
46 #endif
47   fCount(0)
48 {
49   CopyDataMembers(inTracklet);
50 }
51
52 /**
53  * Copy simple (non-pointer) data members from TRDTracklet to HLTTRDTracklet 
54  */
55 //============================================================================  
56 void AliHLTTRDTracklet::CopyDataMembers(const AliTRDseedV1* const inTracklet)
57 {
58   //fChi2Z = inTracklet->GetChi2Z();
59
60   for (Int_t i=0; i < 2; i++){
61     fYref[i]   = inTracklet->fYref[i];
62     fZref[i]   = inTracklet->fZref[i];
63     fYfit[i]   = inTracklet->fYfit[i];
64     fZfit[i]   = inTracklet->fZfit[i];
65   }
66   
67   for (Int_t i=0; i < AliPID::kSPECIES; i++){
68     fProb[i] = inTracklet->fProb[i];
69   }
70
71   for (Int_t iTimeBin = 0; iTimeBin < AliTRDseedV1::kNclusters; iTimeBin++)
72     {
73       AliTRDcluster* trdCluster = inTracklet->GetClusters(iTimeBin);
74       if (trdCluster){
75         fClusters[fCount].Index = inTracklet->fIndexes[iTimeBin];
76         new (&fClusters[fCount].Cluster) AliHLTTRDCluster(trdCluster);
77         fCount++;
78         fSize += sizeof(IndexAndCluster);
79       }
80     }
81   
82   //if((void*)&fClusters[fCount].Index!=(void*)GetEndPointer()){printf("ERRR");return;}
83 }
84
85 /**
86  * Copy data to the output TRDseedV1
87  */
88 //============================================================================
89 void AliHLTTRDTracklet::ExportTRDTracklet(AliTRDseedV1* const outTracklet) const
90 {
91   //outTracklet->Reset(); we always use a fresh trdtracklet as input, so this is useless
92
93   outTracklet->fN      = fN;
94   outTracklet->fDet    = fDet;
95   outTracklet->fPad[3] = fPad3;
96   outTracklet->fPad[2] = fPad2;
97   outTracklet->fdX     = fdX;
98   outTracklet->fX0     = fX0;
99   outTracklet->fS2Y    = fS2Y;
100   outTracklet->fPt     = fPt;
101   outTracklet->fC      = fC;
102   outTracklet->fChi2   = fChi2;
103
104   for (Int_t i=0; i < 2; i++){
105     outTracklet->fYref[i]   = fYref[i];
106     outTracklet->fZref[i]   = fZref[i];
107     outTracklet->fYfit[i]   = fYfit[i];
108     outTracklet->fZfit[i]   = fZfit[i];
109   }
110
111   for (Int_t i=0; i < AliPID::kSPECIES; i++){
112     outTracklet->fProb[i] = fProb[i];
113   }
114
115   for (UInt_t iCluster=0; iCluster < fCount; iCluster++){
116     AliTRDcluster *trdCluster = new AliTRDcluster();
117     fClusters[iCluster].Cluster.ExportTRDCluster(trdCluster);
118     outTracklet->fClusters[iCluster] = trdCluster;
119     outTracklet->fIndexes[iCluster] = fClusters[iCluster].Index;
120     iCluster++;
121   }
122 }
123
124
125 /**
126  * Init arrays
127  */
128 //============================================================================
129 void AliHLTTRDTracklet::InitArrays()
130 {
131   for (Int_t i=0; i < 2; i++){
132     fYref[i] = -1;
133     fZref[i] = -1;
134     fYfit[i] = -1;
135     fZfit[i] = -1;
136   }
137   for (Int_t i=0; i < AliPID::kSPECIES; i++)
138     fProb[i]=0;
139 }
140
141 /**
142  * Prints main info about tracklet
143  */
144 //============================================================================
145 void AliHLTTRDTracklet::Print(Bool_t printClusters) const
146 {
147   //printf("--hltTracklet-- addr 0x%p(%i); fSize %i\n", this, (int)this, fSize);
148   printf("      fDet %i; fPt %f; fdX %f fN %i\n", fDet, fPt, fdX, fN);
149
150   if(!printClusters) return;
151   for (UInt_t iCount=0, iCluster = 0; iCluster < fCount; iCount++){
152     printf(" [%i] ",iCount);
153     fClusters[iCluster].Cluster.Print();
154     iCluster++;
155   }
156 }
157
158 /**
159  * Read clusters to TRDtracklet from the memory
160  */
161 //============================================================================
162 // void AliHLTTRDTracklet::ReadClustersFromMemory(void *input)
163 // {
164 //   AliHLTUInt8_t *iterPtr = (AliHLTUInt8_t*) input;
165 //   AliHLTTRDCluster* hltCluster = NULL;
166   
167 //   for (Int_t iCluster = 0; iCluster < AliTRDseedV1::kNclusters; iCluster++){
168 //     // if we had something in the fClusters[iCluster] before copying,
169 //     // then this entry in the array should not be empty. Fill it.
170 //     if (fClusters[iCluster]){
171 //       hltCluster = (AliHLTTRDCluster*) iterPtr;
172 //       fClusters[iCluster] = hltCluster;
173 //       iterPtr += hltCluster->GetSize();
174 //       //hltCluster->Print();
175 //     }
176     
177 //   }
178 // }