]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/TRD/AliHLTTRDTracklet.cxx
3552157355374d759be03379dd6e995192584f26
[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   fdX(-1),
9   fS2Y(-1),
10   fPt(-1),
11   fX0(-1),
12   fC(-1),
13   fChi2(-1),
14   fDet(-1),
15   fCount(0),
16 #if defined(__HP_aCC) || defined(__DECCXX) || defined(__SUNPRO_CC)
17   fSize(sizeof(AliHLTTRDTracklet)-sizeof(AliHLTTRDCluster)),
18 #else
19   fSize(sizeof(AliHLTTRDTracklet))
20 #endif
21 {
22   InitArrays();
23 }
24
25 /**
26  * Main Constructor
27  */
28 //============================================================================
29 AliHLTTRDTracklet::AliHLTTRDTracklet(const AliTRDseedV1* const inTracklet):
30   fN(inTracklet->fN),
31   fdX(inTracklet->fdX),
32   fS2Y(inTracklet->fS2Y),
33   fPt(inTracklet->fPt),
34   fX0(inTracklet->fX0),
35   fC(inTracklet->fC),
36   fChi2(inTracklet->fChi2),
37   fDet(inTracklet->fDet),
38   fCount(0),
39 #if defined(__HP_aCC) || defined(__DECCXX) || defined(__SUNPRO_CC)
40   fSize(sizeof(AliHLTTRDTracklet)-sizeof(AliHLTTRDCluster)),
41 #else
42   fSize(sizeof(AliHLTTRDTracklet))
43 #endif
44 {
45   CopyDataMembers(inTracklet);
46 }
47
48 /**
49  * Copy simple (non-pointer) data members from TRDTracklet to HLTTRDTracklet 
50  */
51 //============================================================================  
52 void AliHLTTRDTracklet::CopyDataMembers(const AliTRDseedV1* const inTracklet)
53 {
54   //fChi2Z = inTracklet->GetChi2Z();
55
56   for (Int_t i=0; i < 2; i++){
57     fYref[i]   = inTracklet->fYref[i];
58     fZref[i]   = inTracklet->fZref[i];
59     fYfit[i]   = inTracklet->fYfit[i];
60     fZfit[i]   = inTracklet->fZfit[i];
61   }
62
63   for (Int_t i=0; i < 3; i++){
64     fPad[i] = inTracklet->fPad[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         new (&fClusters[fCount]) AliHLTTRDCluster(trdCluster);
76         fCount++;
77         fSize += sizeof(AliHLTTRDCluster);
78       }
79     }
80   
81   //if((void*)&fClusters[fCount].Index!=(void*)GetEndPointer()){printf("ERRR");return;}
82 }
83
84 /**
85  * Copy data to the output TRDseedV1
86  */
87 //============================================================================
88 void AliHLTTRDTracklet::ExportTRDTracklet(AliTRDseedV1* const outTracklet) const
89 {
90   //outTracklet->Reset(); we always use a fresh trdtracklet as input, so this is useless
91   outTracklet->SetBit(AliTRDseedV1::kOwner);
92
93   outTracklet->fN      = fN;
94   outTracklet->fDet    = fDet;
95   outTracklet->fdX     = fdX;
96   outTracklet->fX0     = fX0;
97   outTracklet->fS2Y    = fS2Y;
98   outTracklet->fPt     = fPt;
99   outTracklet->fC      = fC;
100   outTracklet->fChi2   = fChi2;
101
102   for (Int_t i=0; i < 2; i++){
103     outTracklet->fYref[i]   = fYref[i];
104     outTracklet->fZref[i]   = fZref[i];
105     outTracklet->fYfit[i]   = fYfit[i];
106     outTracklet->fZfit[i]   = fZfit[i];
107   }
108
109   for (Int_t i=0; i < 3; i++){
110     outTracklet->fPad[i] = fPad[i];
111   }
112
113   for (Int_t i=0; i < AliPID::kSPECIES; i++){
114     outTracklet->fProb[i] = fProb[i];
115   }
116
117   for (UInt_t iCluster=0; iCluster < fCount; iCluster++){
118     AliTRDcluster *trdCluster = new AliTRDcluster();
119     fClusters[iCluster].ExportTRDCluster(trdCluster);
120     outTracklet->fClusters[iCluster] = trdCluster;
121     outTracklet->fIndexes[iCluster] = iCluster;
122   }
123 }
124
125
126 /**
127  * Init arrays
128  */
129 //============================================================================
130 void AliHLTTRDTracklet::InitArrays()
131 {
132   for (Int_t i=0; i < 2; i++){
133     fYref[i] = -1;
134     fZref[i] = -1;
135     fYfit[i] = -1;
136     fZfit[i] = -1;
137   }
138   for (Int_t i=0; i < AliPID::kSPECIES; i++)
139     fProb[i]=0;
140 }
141
142 /**
143  * Prints main info about tracklet
144  */
145 //============================================================================
146 void AliHLTTRDTracklet::Print(Bool_t printClusters) const
147 {
148   //printf("--hltTracklet-- addr 0x%p(%i); fSize %i\n", this, (int)this, fSize);
149   printf("      fDet %i; fPt %f; fdX %f fN %i\n", fDet, fPt, fdX, fN);
150
151   if(!printClusters) return;
152   for (UInt_t iCluster = 0; iCluster < fCount; iCluster++){
153     printf(" [%i] ",iCluster);
154     fClusters[iCluster].Print();
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 // }
179