TOF raw data: preliminary implementation and style changes
[u/mrichter/AliRoot.git] / TOF / AliTOFdigit.cxx
CommitLineData
68861244 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
88cb7938 16/* $Id$ */
17
18//_________________________________________________________________________
19// TOF digit: member variables
20// fSector : TOF sector
21// fPlate : TOF plate
22// fStrip : strips number
23// fPadx : pad number along x
24// fPadz : pad number along z
25// fTdc : TDC
26// fAdc : ADC
27//
28// Getters, setters and member functions defined here
29//
30//*-- Authors: F. Pierella, A. Seganti, D. Vicinanza
31
32
f8014e68 33#include <Riostream.h>
68861244 34
88cb7938 35#include "AliRun.h"
68861244 36#include "AliTOF.h"
7e6dce66 37#include "AliTOFGeometry.h"
68861244 38#include "AliTOFdigit.h"
68861244 39
40ClassImp(AliTOFdigit)
41
42//______________________________________________________________________________
43AliTOFdigit::AliTOFdigit(Int_t *tracks, Int_t *vol,Float_t *digit)
44:AliDigit(tracks)
45{
46//
47// Constructor of digit object
48//
49 fSector = vol[0];
50 fPlate = vol[1];
51 fStrip = vol[2];
7e6dce66 52 fPadx = vol[3];
53 fPadz = vol[4];
68861244 54 fTdc = digit[0];
55 fAdc = digit[1];
56}
57
58//____________________________________________________________________________
59AliTOFdigit::AliTOFdigit(const AliTOFdigit & digit)
5c016a7b 60:AliDigit(digit)
68861244 61{
62 //
63 // copy ctor for AliTOFdigit object
64 //
65
66 Int_t i ;
67 for ( i = 0; i < 3 ; i++)
68 fTracks[i] = digit.fTracks[i] ;
69 fSector = digit.fSector;
70 fPlate = digit.fPlate;
71 fStrip = digit.fStrip;
72 fPadx = digit.fPadx;
73 fPadz = digit.fPadz;
74 fTdc = digit.fTdc;
75 fAdc = digit.fAdc;
76
77}
78
79//______________________________________________________________________________
80AliTOFdigit::AliTOFdigit(Int_t sector, Int_t plate, Int_t strip, Int_t padx,
81Int_t padz, Float_t tdc, Float_t adc)
82{
83//
84// Constructor for sdigit
85//
86 fSector = sector;
87 fPlate = plate;
88 fStrip = strip;
89 fPadx = padx;
90 fPadz = padz;
91 fTdc = tdc;
92 fAdc = adc;
93}
94
95//______________________________________________________________________________
96void AliTOFdigit::GetLocation(Int_t *Loc) const
97{
98//
99// Get the cohordinates of the digit
100// in terms of Sector - Plate - Strip - Pad
101//
102
103 Loc[0]=fSector;
104 Loc[1]=fPlate;
105 Loc[2]=fStrip;
106 Loc[3]=fPadx;
107 Loc[4]=fPadz;
108}
109
110//______________________________________________________________________________
111Int_t AliTOFdigit::GetTotPad() const
112{
113//
114// Get the "total" index of the pad inside a Sector
115// starting from the digits data.
116//
117
68861244 118 Int_t before=0;
119
120 switch(fPlate){
7e6dce66 121 case 0:
122 //before = 0;
123 break;
124 case 1:
125 before = AliTOFGeometry::NStripC();
126 break;
127 case 2:
128 before = AliTOFGeometry::NStripC() + AliTOFGeometry::NStripB();
129 break;
130 case 3:
131 before = AliTOFGeometry::NStripC() + AliTOFGeometry::NStripB() + AliTOFGeometry::NStripA();
132 break;
133 case 4:
134 before = AliTOFGeometry::NStripC() + 2*AliTOFGeometry::NStripB() + AliTOFGeometry::NStripA();
135 break;
68861244 136 }
137
7e6dce66 138 Int_t pad = 2*fPadx + fPadz;
139 //Int_t pad = fPadx+AliTOFGeometry::NpadX()*fPadz;
140 Int_t strip = fStrip + before;
141 Int_t padTot = AliTOFGeometry::NpadXStrip()*strip + pad;
142
68861244 143 return padTot;
144}
145
146//______________________________________________________________________________
147void AliTOFdigit::AddTrack(Int_t track)
148{
149//
517b7f8f 150// Add a new and different track to the digit
68861244 151//
517b7f8f 152 if (track==fTracks[0] || track==fTracks[1] || track==fTracks[2]) return;
153 if (fTracks[1]==0){
154 fTracks[1] = track;
155 }else if (fTracks[2]==0){
156 fTracks[2] = track;
157 }else{
158 // printf("AliTOFdigit::AddTrack ERROR: Too many Tracks (>3) \n");
159 }
68861244 160}
161
162// Overloading of Streaming, Sum and Comparison operators
163
164//______________________________________________________________________________
165Bool_t AliTOFdigit::operator==(AliTOFdigit const &digit) const
166{
167//
168// Overloading of Comparison operator
169//
170 if (fSector==digit.fSector &&
171 fPlate==digit.fPlate &&
172 fStrip==digit.fStrip &&
173 fPadx==digit.fPadx &&
174 fPadz==digit.fPadz &&
175 fTdc==digit.fTdc &&
176 fAdc==digit.fAdc) return kTRUE;
177 else return kFALSE;
178}
179
180//______________________________________________________________________________
181AliTOFdigit& AliTOFdigit::operator+(AliTOFdigit const &digit)
182{
183//
184// Overloading of Sum operator
185// Note: Some convolution
186// between the two digit variables has to be inserted
187//
188if (fSector==digit.fSector &&
189 fPlate==digit.fPlate &&
190 fStrip==digit.fStrip &&
191 fPadx==digit.fPadx &&
192 fPadz==digit.fPadz) {
193 // convolution to be inserted here
194 fTdc+=digit.fTdc;
195 fAdc+=digit.fAdc;
196 } else
197 AliTOFdigit(fSector,fPlate,fStrip,fPadx,fPadz,fTdc,fAdc);
198 return *this;
199}
200
201//______________________________________________________________________________
202ostream& operator << (ostream& out, const AliTOFdigit &digit)
203{
204//
205// Output streamer: output of the digit data
206//
207out << "Sector " << digit.fSector << ", Plate " << digit.fPlate << ", Strip " << digit.fStrip << endl;
208out << "Padx" << digit.fPadx << ", Padz " << digit.fPadz << endl;
209out << "TDC " << digit.fTdc << ", ADC "<< digit.fAdc << endl;
210return out;
211}