1 /**************************************************************************
2 * Copyright(c) 1998-2007, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
16 //-------------------------------------------------------------------------
17 // Container class for ESD AD data
18 // Author: Brigitte Cheynis & Cvetan Cheshkov
19 //-------------------------------------------------------------------------
26 //__________________________________________________________________________
37 fADADecision(kADInvalid),
38 fADCDecision(kADInvalid),
43 // Default constructor
44 for(Int_t j=0; j<16; j++){
45 fMultiplicity[j] = 0.0;
54 //__________________________________________________________________________
55 AliESDAD::AliESDAD(const AliESDAD &o)
57 fBBtriggerADA(o.fBBtriggerADA),
58 fBGtriggerADA(o.fBGtriggerADA),
59 fBBtriggerADC(o.fBBtriggerADC),
60 fBGtriggerADC(o.fBGtriggerADC),
63 fADATimeError(o.fADATimeError),
64 fADCTimeError(o.fADCTimeError),
65 fADADecision(o.fADADecision),
66 fADCDecision(o.fADCDecision),
67 fTriggerChargeA(o.fTriggerChargeA),
68 fTriggerChargeC(o.fTriggerChargeC),
69 fTriggerBits(o.fTriggerBits)
71 // Default constructor
72 for(Int_t j=0; j<16; j++) {
73 fMultiplicity[j] = o.fMultiplicity[j];
75 fTime[j] = o.fTime[j];
76 fWidth[j] = o.fWidth[j];
77 fBBFlag[j] = o.fBBFlag[j];
78 fBGFlag[j] = o.fBGFlag[j];
82 //__________________________________________________________________________
83 AliESDAD::AliESDAD(UInt_t BBtriggerADA, UInt_t BGtriggerADA,
84 UInt_t BBtriggerADC, UInt_t BGtriggerADC,
85 Float_t *Multiplicity, Float_t *Adc,
86 Float_t *Time, Float_t *Width, Bool_t *BBFlag, Bool_t *BGFlag)
88 fBBtriggerADA(BBtriggerADA),
89 fBGtriggerADA(BGtriggerADA),
90 fBBtriggerADC(BBtriggerADC),
91 fBGtriggerADC(BGtriggerADC),
96 fADADecision(kADInvalid),
97 fADCDecision(kADInvalid),
103 for(Int_t j=0; j<16; j++) {
104 fMultiplicity[j] = Multiplicity[j];
107 fWidth[j] = Width[j];
108 fBBFlag[j] = BBFlag[j];
109 fBGFlag[j] = BGFlag[j];
113 //__________________________________________________________________________
114 AliESDAD& AliESDAD::operator=(const AliESDAD& o)
117 if(this==&o) return *this;
118 AliVAD::operator=(o);
119 // Assignment operator
120 fBBtriggerADA=o.fBBtriggerADA;
121 fBGtriggerADA=o.fBGtriggerADA;
122 fBBtriggerADC=o.fBBtriggerADC;
123 fBGtriggerADC=o.fBGtriggerADC;
125 fADATime = o.fADATime;
126 fADCTime = o.fADCTime;
127 fADATimeError = o.fADATimeError;
128 fADCTimeError = o.fADCTimeError;
129 fADADecision = o.fADADecision;
130 fADCDecision = o.fADCDecision;
131 fTriggerChargeA = o.fTriggerChargeA;
132 fTriggerChargeC = o.fTriggerChargeC;
133 fTriggerBits = o.fTriggerBits;
135 for(Int_t j=0; j<16; j++) {
136 fMultiplicity[j] = o.fMultiplicity[j];
138 fTime[j] = o.fTime[j];
139 fWidth[j] = o.fWidth[j];
140 fBBFlag[j] = o.fBBFlag[j];
141 fBGFlag[j] = o.fBGFlag[j];
146 //______________________________________________________________________________
147 void AliESDAD::Copy(TObject &obj) const {
149 // this overwrites the virtual TOBject::Copy()
150 // to allow run time copying without casting
153 if(this==&obj)return;
154 AliESDAD *robj = dynamic_cast<AliESDAD*>(&obj);
155 if(!robj)return; // not an AliESDAD
160 //__________________________________________________________________________
161 Short_t AliESDAD::GetNbPMADA() const
163 // Returns the number of
166 for(Int_t i=8;i<16;i++)
167 if (fMultiplicity[i]>0) n++;
171 //__________________________________________________________________________
172 Short_t AliESDAD::GetNbPMADC() const
174 // Returns the number of
177 for(Int_t i=0;i<8;i++)
178 if (fMultiplicity[i]>0) n++;
182 //__________________________________________________________________________
183 Float_t AliESDAD::GetMTotADA() const
185 // returns total multiplicity
188 for(Int_t i=8;i<16;i++)
189 mul+= fMultiplicity[i];
193 //__________________________________________________________________________
194 Float_t AliESDAD::GetMTotADC() const
196 // returns total multiplicity
199 for(Int_t i=0;i<8;i++)
200 mul+= fMultiplicity[i];
205 //__________________________________________________________________________
206 Float_t AliESDAD::GetMultiplicity(Int_t i) const
209 // returns multiplicity in a
211 if (OutOfRange(i, "AliESDAD::GetMultiplicity:",16)) return -1;
212 return fMultiplicity[i];
215 //__________________________________________________________________________
216 Float_t AliESDAD::GetMultiplicityADA(Int_t i) const
219 // returns multiplicity in a
221 if (OutOfRange(i, "AliESDAD::GetMultiplicityADA:",8)) return -1;
222 return fMultiplicity[8+i];
225 //__________________________________________________________________________
226 Float_t AliESDAD::GetMultiplicityADC(Int_t i) const
229 // returns multiplicity in a
231 if (OutOfRange(i, "AliESDAD::GetMultiplicityADC:",8)) return -1;
232 return fMultiplicity[i];
235 //__________________________________________________________________________
236 Float_t AliESDAD::GetAdc(Int_t i) const
239 // returns ADC charge in a
241 if (OutOfRange(i, "AliESDAD::GetAdc:",16)) return -1;
245 //__________________________________________________________________________
246 Float_t AliESDAD::GetAdcADA(Int_t i) const
249 // returns ADC charge in a
251 if (OutOfRange(i, "AliESDAD::GetAdcADA:",8)) return -1;
255 //__________________________________________________________________________
256 Float_t AliESDAD::GetAdcADC(Int_t i) const
259 // returns ADC charge in a
261 if (OutOfRange(i, "AliESDAD::GetAdcADC:",8)) return -1;
265 //__________________________________________________________________________
266 Float_t AliESDAD::GetTime(Int_t i) const
269 // returns leading time measured by TDC
270 // in a given cell of AD
271 if (OutOfRange(i, "AliESDAD::GetTime:",16)) return -1;
275 //__________________________________________________________________________
276 Float_t AliESDAD::GetTimeADA(Int_t i) const
279 // returns leading time measured by TDC
280 // in a given cell of ADA
281 if (OutOfRange(i, "AliESDAD::GetTimeADA:",8)) return -1;
285 //__________________________________________________________________________
286 Float_t AliESDAD::GetTimeADC(Int_t i) const
289 // returns leading time measured by TDC
290 // in a given cell of ADC
291 if (OutOfRange(i, "AliESDAD::GetTimeADC:",8)) return -1;
295 //__________________________________________________________________________
296 Float_t AliESDAD::GetWidth(Int_t i) const
299 // returns time signal width
300 // in a given cell of AD
301 if (OutOfRange(i, "AliESDAD::GetWidth:",16)) return -1;
305 //__________________________________________________________________________
306 Float_t AliESDAD::GetWidthADA(Int_t i) const
309 // returns time signal width
310 // in a given cell of ADA
311 if (OutOfRange(i, "AliESDAD::GetWidthADA:",8)) return -1;
315 //__________________________________________________________________________
316 Float_t AliESDAD::GetWidthADC(Int_t i) const
319 // returns time signal width
320 // in a given cell of ADC
321 if (OutOfRange(i, "AliESDAD::GetWidthADC:",8)) return -1;
325 //__________________________________________________________________________
326 Bool_t AliESDAD::BBTriggerADA(Int_t i) const
328 // returns offline beam-beam flags in ADA
330 if (OutOfRange(i, "AliESDAD:::BBTriggerADA",8)) return kFALSE;
332 return ( fBBtriggerADA & (test << i) ? kTRUE : kFALSE );
335 //__________________________________________________________________________
336 Bool_t AliESDAD::BGTriggerADA(Int_t i) const
338 // returns offline beam-gas flags in ADA
340 if (OutOfRange(i, "AliESDAD:::BGTriggerADA",8)) return kFALSE;
342 return ( fBGtriggerADA & (test << i) ? kTRUE : kFALSE );
345 //__________________________________________________________________________
346 Bool_t AliESDAD::BBTriggerADC(Int_t i) const
348 // returns offline beam-beam flags in ADC
350 if (OutOfRange(i, "AliESDAD:::BBTriggerADC",8)) return kFALSE;
352 return ( fBBtriggerADC & (test << i) ? kTRUE : kFALSE );
355 //__________________________________________________________________________
356 Bool_t AliESDAD::BGTriggerADC(Int_t i) const
358 // returns offline beam-gasflags in ADC
360 if (OutOfRange(i, "AliESDAD:::BGTriggerADC",8)) return kFALSE;
362 return ( fBGtriggerADC & (test << i) ? kTRUE : kFALSE );
365 //__________________________________________________________________________
366 Bool_t AliESDAD::GetBBFlag(Int_t i) const
369 // returns online beam-beam flag in AD
370 // one boolean per cell
371 if (OutOfRange(i, "AliESDAD::GetBBFlag:",16)) return kFALSE;
375 //__________________________________________________________________________
376 Bool_t AliESDAD::GetBGFlag(Int_t i) const
379 // returns online beam-gas flag in AD
380 // one boolean per cell
381 if (OutOfRange(i, "AliESDAD::GetBGFlag:",16)) return kFALSE;