]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TOF/AliTOFdigit.cxx
Fixes for coverity: SELF_ASSIGN
[u/mrichter/AliRoot.git] / TOF / AliTOFdigit.cxx
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
40 ClassImp(AliTOFdigit)
41
42 //______________________________________________________________________________
43 AliTOFdigit::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 //______________________________________________________________________________
57 AliTOFdigit::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 //____________________________________________________________________________
75 AliTOFdigit::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 //______________________________________________________________________________
98 AliTOFdigit::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 //______________________________________________________________________________
116 void 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 //______________________________________________________________________________
131 Int_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 //______________________________________________________________________________
166 void 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 //______________________________________________________________________________
184 Bool_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 //______________________________________________________________________________
202 AliTOFdigit 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 //
209 if  (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 //______________________________________________________________________________
223 ostream& 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 }