]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - TOF/AliTOFdigit.cxx
A fast HLT version of the SPD clusterfinder implemented.
[u/mrichter/AliRoot.git] / TOF / AliTOFdigit.cxx
... / ...
CommitLineData
1/**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
15
16/* $Id$ */
17
18//_________________________________________________________________________//
19// //
20// TOF digit: member variables //
21// fSector : TOF sector //
22// fPlate : TOF plate //
23// fStrip : strips number //
24// fPadx : pad number along x //
25// fPadz : pad number along z //
26// fTdc : TDC //
27// fAdc : ADC //
28// //
29// Getters, setters and member functions defined here //
30// //
31// -- Authors: F. Pierella, A. Seganti, D. Vicinanza //
32//_________________________________________________________________________//
33
34
35#include "Riostream.h"
36
37#include "AliTOFdigit.h"
38#include "AliTOFGeometry.h"
39
40ClassImp(AliTOFdigit)
41
42//______________________________________________________________________________
43AliTOFdigit::AliTOFdigit()
44 :AliDigit(),
45 fSector(-1),
46 fPlate(-1),
47 fStrip(-1),
48 fPadx(-1),
49 fPadz(-1),
50 fTdc(0),
51 fTdcND(0),
52 fAdc(0),
53 fToT(0)
54{
55}
56//______________________________________________________________________________
57AliTOFdigit::AliTOFdigit(Int_t *tracks, Int_t *vol, Int_t *digit)
58 :AliDigit(tracks),
59 fSector(vol[0]),
60 fPlate(vol[1]),
61 fStrip(vol[2]),
62 fPadx(vol[3]),
63 fPadz(vol[4]),
64 fTdc(digit[0]),
65 fTdcND(digit[3]),
66 fAdc(digit[1]),
67 fToT(digit[2])
68{
69//
70// Constructor of digit object
71//
72}
73
74//____________________________________________________________________________
75AliTOFdigit::AliTOFdigit(const AliTOFdigit & digit)
76 :AliDigit(digit),
77 fSector(digit.fSector),
78 fPlate(digit.fPlate),
79 fStrip(digit.fStrip),
80 fPadx(digit.fPadx),
81 fPadz(digit.fPadz),
82 fTdc(digit.fTdc),
83 fTdcND(digit.fTdcND),
84 fAdc(digit.fAdc),
85 fToT(digit.fToT)
86{
87 //
88 // copy ctor for AliTOFdigit object
89 //
90
91 Int_t i ;
92 for ( i = 0; i < 3 ; i++)
93 fTracks[i] = digit.fTracks[i] ;
94
95}
96
97//______________________________________________________________________________
98AliTOFdigit::AliTOFdigit(Int_t sector, Int_t plate, Int_t strip, Int_t padx,
99 Int_t padz, Int_t tdc, Int_t adc):
100 fSector(sector),
101 fPlate(plate),
102 fStrip(strip),
103 fPadx(padx),
104 fPadz(padz),
105 fTdc(tdc),
106 fTdcND(0),
107 fAdc(adc),
108 fToT(0)
109{
110//
111// Constructor for sdigit
112//
113}
114
115//______________________________________________________________________________
116void AliTOFdigit::GetLocation(Int_t *loc) const
117{
118//
119// Get the cohordinates of the digit
120// in terms of Sector - Plate - Strip - Pad
121//
122
123 loc[0] = fSector;
124 loc[1] = fPlate;
125 loc[2] = fStrip;
126 loc[3] = fPadx;
127 loc[4] = fPadz;
128}
129
130//______________________________________________________________________________
131Int_t AliTOFdigit::GetTotPad() const
132{
133//
134// Get the "total" index of the pad inside a Sector
135// starting from the digits data.
136//
137
138 Int_t before=0;
139
140 switch(fPlate){
141 case 0:
142 //before = 0;
143 break;
144 case 1:
145 before = AliTOFGeometry::NStripC();
146 break;
147 case 2:
148 before = AliTOFGeometry::NStripC() + AliTOFGeometry::NStripB();
149 break;
150 case 3:
151 before = AliTOFGeometry::NStripC() + AliTOFGeometry::NStripB() + AliTOFGeometry::NStripA();
152 break;
153 case 4:
154 before = AliTOFGeometry::NStripC() + 2*AliTOFGeometry::NStripB() + AliTOFGeometry::NStripA();
155 break;
156 }
157
158 Int_t pad = AliTOFGeometry::NpadZ()*fPadx + fPadz;
159 Int_t strip = fStrip + before;
160 Int_t padTot = AliTOFGeometry::NpadXStrip()*strip + pad;
161
162 return padTot;
163}
164
165//______________________________________________________________________________
166void AliTOFdigit::AddTrack(Int_t track)
167{
168//
169// Add a new and different track to the digit
170//
171 if (track==fTracks[0] || track==fTracks[1] || track==fTracks[2]) return;
172 if (fTracks[1]==-1)
173 fTracks[1] = track;
174 else if (fTracks[2]==-1)
175 fTracks[2] = track;
176 else
177 printf("W-AliTOFdigit::AddTrack: Too many tracks (>3) that contribute to the same TOF digit\n");
178
179}
180
181// Overloading of Streaming, Sum and Comparison operators
182
183//______________________________________________________________________________
184Bool_t AliTOFdigit::operator==(AliTOFdigit const &digit) const
185{
186//
187// Overloading of Comparison operator
188//
189 if (fSector==digit.fSector &&
190 fPlate==digit.fPlate &&
191 fStrip==digit.fStrip &&
192 fPadx==digit.fPadx &&
193 fPadz==digit.fPadz &&
194 fTdc==digit.fTdc &&
195 fTdcND==digit.fTdcND &&
196 fAdc==digit.fAdc &&
197 fToT==digit.fToT ) return kTRUE;
198 else return kFALSE;
199}
200
201//______________________________________________________________________________
202AliTOFdigit AliTOFdigit::operator+(const AliTOFdigit &digit)
203{
204//
205// Overloading of Sum operator
206// Note: Some convolution
207// between the two digit variables has to be inserted
208//
209if (fSector==digit.fSector &&
210 fPlate==digit.fPlate &&
211 fStrip==digit.fStrip &&
212 fPadx==digit.fPadx &&
213 fPadz==digit.fPadz) {
214 // convolution to be inserted here
215 fTdc+=digit.fTdc;
216 fAdc+=digit.fAdc;
217 } else
218 AliTOFdigit(fSector,fPlate,fStrip,fPadx,fPadz,fTdc,fAdc);
219 return *this;
220}
221
222//______________________________________________________________________________
223ostream& operator << (ostream& out, const AliTOFdigit &digit)
224{
225 //
226 // Output streamer: output of the digit data
227 //
228
229 out << "Sector " << digit.fSector << ", Plate " << digit.fPlate << ", Strip " << digit.fStrip << endl;
230 out << "Padx" << digit.fPadx << ", Padz " << digit.fPadz << endl;
231 out << "TDC " << digit.fTdc << ", ADC "<< digit.fAdc << endl;
232
233 return out;
234}