Implement fixed due to Boris Batyunya. Including a fix for a bug with the
[u/mrichter/AliRoot.git] / ITS / AliITSRawCluster.h
CommitLineData
b0f5e3fc 1#ifndef ALIITSRAWCLUSTER_H
2#define ALIITSRAWCLUSTER_H
3
4
5////////////////////////////////////////////////////
6// Cluster classes for set:ITS //
7////////////////////////////////////////////////////
8
9#include <TObject.h>
10
11
12class AliITSRawCluster : public TObject {
13
14 // this class is subject to changes ! - info used for declustering
15 // and eventual debugging
16
17public:
18
19 AliITSRawCluster() {
e8189707 20 fMultiplicity=0;
b0f5e3fc 21 /*
22 for (int k=0;k<100;k++) {
e8189707 23 fIndexMap[k]=-1;
b0f5e3fc 24 }
25 fNcluster[0]=fNcluster[1]=-1;
26 fChi2=-1;
27 */
b0f5e3fc 28 }
29
30 virtual ~AliITSRawCluster() {
31 // destructor
32 }
33 virtual Bool_t IsSortable() const {
34 // is sortable
35 return kTRUE;
36 }
37
38public:
39
e8189707 40 Int_t fMultiplicity; // cluster multiplicity
b0f5e3fc 41 //Int_t fIndexMap[100]; // indices of digits
42 //Int_t fNcluster[2];
43 //Float_t fChi2;
44
45 ClassDef(AliITSRawCluster,1) // AliITSRawCluster class
46 };
47
48//---------------------------------------------
49class AliITSRawClusterSPD : public AliITSRawCluster {
50
51 // these classes are subject to changes - keep them temporarily for
52 // compatibility !!!
53
54public:
55
56 AliITSRawClusterSPD() {
57 // constructor
58 fX=fZ=fQ;
59 fZStart=fZStop;
a3e16987 60 fNClZ=fNClX=fXStart=fXStop=fXStartf=fXStopf=fZend=fNTracks;
b0f5e3fc 61 }
62
a3e16987 63 AliITSRawClusterSPD(Float_t clz,Float_t clx,Float_t Charge,Int_t ClusterSizeZ,Int_t ClusterSizeX,Int_t xstart,Int_t xstop,Int_t xstartf,Int_t xstopf,Float_t zstart,Float_t zstop,Int_t zend);
b0f5e3fc 64 virtual ~AliITSRawClusterSPD() {
65 // destructor
66 }
67
68 void Add(AliITSRawClusterSPD* clJ);
69 Bool_t Brother(AliITSRawClusterSPD* cluster,Float_t dz,Float_t dx);
e8189707 70 void PrintInfo();
b0f5e3fc 71 // Getters
72 Float_t Q() const {
73 // Q
74 return fQ ;
75 }
76 Float_t Z() const {
77 // Z
78 return fZ ;
79 }
80 Float_t X() const {
81 // X
82 return fX ;
83 }
a3e16987 84 // Float_t NclZ() const {
85 Int_t NclZ() const {
b0f5e3fc 86 // NclZ
87 return fNClZ ;
88 }
a3e16987 89 // Float_t NclX() const {
90 Int_t NclX() const {
b0f5e3fc 91 // NclX
92 return fNClX ;
93 }
94 Int_t XStart() const {
95 //XStart
96 return fXStart;
97 }
98 Int_t XStop() const {
99 //XStop
100 return fXStop;
101 }
102 Int_t XStartf() const {
103 //XStartf
104 return fXStartf;
105 }
106 Int_t XStopf() const {
107 //XStopf
108 return fXStopf;
109 }
110 Float_t ZStart() const {
111 //ZStart
112 return fZStart;
113 }
114 Float_t ZStop() const {
115 //ZStop
116 return fZStop;
117 }
118 Int_t Zend() const {
119 //Zend
120 return fZend;
121 }
a3e16987 122 Int_t NTracks() const {
123 //NTracks
124 return fNTracks;
125 }
126
127 void GetTracks(Int_t &track0,Int_t &track1,Int_t &track2) const {
128 // returns tracks created a cluster
129
130 track0=fTracks[0];
131 track1=fTracks[1];
132 track2=fTracks[2];
133 return;
134 };
135
136 void SetTracks(Int_t track0, Int_t track1, Int_t track2) {
137 // set tracks in cluster (not more than three ones)
138 fTracks[0]=track0;
139 fTracks[1]=track1;
140 fTracks[2]=track2;
141 }
142 void SetNTracks(Int_t ntracks) {
143 // set ntracks
144 fNTracks=ntracks;
145 }
b0f5e3fc 146
147protected:
148
149 Float_t fX; // X of cluster
150 Float_t fZ; // Z of cluster
151 Float_t fQ; // Q of cluster
152 Int_t fNClZ; // Cluster size in Z direction
153 Int_t fNClX; // Cluster size in X direction
154 Int_t fXStart; // number of first pixel in cluster
155 Int_t fXStop; // number of last pixel in cluster
156 Int_t fXStartf; // number of first pixel in full cluster
157 Int_t fXStopf; // number of last pixel in full cluster
158 Float_t fZStart; // number of first pixel in cluster
159 Float_t fZStop; // number of last pixel in cluster
160 Int_t fZend; // Zend
a3e16987 161 Int_t fNTracks; // number of tracks created a cluster
162 Int_t fTracks[3]; // tracks created a cluster
b0f5e3fc 163
164 ClassDef(AliITSRawClusterSPD,1) // AliITSRawCluster class for SPD
165
166 };
167
168//---------------------------------------------
169class AliITSRawClusterSDD : public AliITSRawCluster {
170
171public:
172
173 AliITSRawClusterSDD() {
174 // constructor
175 fX=fZ=fQ;
176 fWing=fNsamples=0;
177 fNanodes=1;
178 fAnode=fTime=fPeakAmplitude=0;
179 }
180
181 AliITSRawClusterSDD(Int_t wing, Float_t Anode,Float_t Time,Float_t Charge,
182 Float_t PeakAmplitude,Float_t Asigma, Float_t Tsigma,Float_t DriftPath, Float_t AnodeOffset,Int_t Samples);
183 virtual ~AliITSRawClusterSDD() {
184 // destructor
185 }
186
187 void Add(AliITSRawClusterSDD* clJ);
188 Bool_t Brother(AliITSRawClusterSDD* cluster,Float_t dz,Float_t dx);
e8189707 189 void PrintInfo();
b0f5e3fc 190 // Getters
191 Float_t X() const {
192 //X
193 return fX ;
194 }
195 Float_t Z() const {
196 //Z
197 return fZ ;
198 }
199 Float_t Q() const {
200 //Q
201 return fQ ;
202 }
203 Float_t A() const {
204 //A
205 return fAnode ;
206 }
207 Float_t T() const {
208 //T
209 return fTime ;
210 }
211 Float_t W() const {
212 //W
213 return fWing ;
214 }
215 Int_t Anodes() const {
216 //Anodes
217 return fNanodes ;
218 }
219 Int_t Samples() const {
220 //Samples
221 return fNsamples ;
222 }
223 Float_t PeakAmpl() const {
224 //PeakAmpl
225 return fPeakAmplitude ;
226 }
227
228protected:
229
230 Float_t fX; // X of cluster
231 Float_t fZ; // Z of cluster
232 Float_t fQ; // Q of cluster
233 Int_t fWing; // Wing number
234 Float_t fAnode; // Anode number
235 Float_t fTime; // Drift Time
236 Float_t fPeakAmplitude; // Peak Amplitude
237 Int_t fNanodes; // N of anodes used for the cluster
238 Int_t fNsamples; // N of samples used for the cluster
239
240 ClassDef(AliITSRawClusterSDD,1) // AliITSRawCluster class for SDD
241 };
242
243//-----------------------------------------
244class AliITSRawClusterSSD : public AliITSRawCluster {
245
246public:
247
248 AliITSRawClusterSSD() {
e8189707 249 fMultiplicityN=0;
250 fQErr=0;
251 fStatus=-1;
b0f5e3fc 252 /*
253 for (int k=0;k<100;k++) {
e8189707 254 fIndexMapN[k]=-1;
b0f5e3fc 255 }
e8189707 256 fProbability=0;
257 fChi2N=-1;
b0f5e3fc 258 */
b0f5e3fc 259 }
260 AliITSRawClusterSSD(Float_t Prob,Int_t Sp,Int_t Sn);
261 virtual ~AliITSRawClusterSSD() {
262 // destructor
263 }
264
265 Int_t GetStatus() const {
266 // get status
267 return fStatus;
268 }
269 void SetStatus(Int_t status) {
270 // set status
271 fStatus=status;
272 }
273
274
275public:
b0f5e3fc 276 Int_t fMultiplicityN; // The number of N side strips involved
e8189707 277 // in this point calculations
278 Float_t fQErr; // Total charge error
b0f5e3fc 279 Int_t fStatus; // Flag status : 0 - real point
e8189707 280 // 1 - ghost
281 // 2 - EIC ?
282 // 3 - single side
b0f5e3fc 283
e8189707 284 // Float_t fProbability; // The probability that this is a "real" point
285 // Int_t fIndexMapN[100]; // indices of digits for Nside - the corresponding
286 // info for P side is carried in the base class
287 // Float_t fChi2N;
b0f5e3fc 288 ClassDef(AliITSRawClusterSSD,1) // AliITSRawCluster class for SSD
289
290};
291
292
293#endif