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 VZERO data
18 // Author: Brigitte Cheynis & Cvetan Cheshkov
19 //-------------------------------------------------------------------------
21 #include "AliESDVZERO.h"
26 //__________________________________________________________________________
27 AliESDVZERO::AliESDVZERO()
37 fV0ADecision(kV0Invalid),
38 fV0CDecision(kV0Invalid),
43 // Default constructor
44 for(Int_t j=0; j<64; j++){
45 fMultiplicity[j] = 0.0;
54 //__________________________________________________________________________
55 AliESDVZERO::AliESDVZERO(const AliESDVZERO &o)
57 fBBtriggerV0A(o.fBBtriggerV0A),
58 fBGtriggerV0A(o.fBGtriggerV0A),
59 fBBtriggerV0C(o.fBBtriggerV0C),
60 fBGtriggerV0C(o.fBGtriggerV0C),
63 fV0ATimeError(o.fV0ATimeError),
64 fV0CTimeError(o.fV0CTimeError),
65 fV0ADecision(o.fV0ADecision),
66 fV0CDecision(o.fV0CDecision),
67 fTriggerChargeA(o.fTriggerChargeA),
68 fTriggerChargeC(o.fTriggerChargeC),
69 fTriggerBits(o.fTriggerBits)
71 // Default constructor
72 for(Int_t j=0; j<64; 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 AliESDVZERO::AliESDVZERO(UInt_t BBtriggerV0A, UInt_t BGtriggerV0A,
84 UInt_t BBtriggerV0C, UInt_t BGtriggerV0C,
85 Float_t *Multiplicity, Float_t *Adc,
86 Float_t *Time, Float_t *Width, Bool_t *BBFlag, Bool_t *BGFlag)
88 fBBtriggerV0A(BBtriggerV0A),
89 fBGtriggerV0A(BGtriggerV0A),
90 fBBtriggerV0C(BBtriggerV0C),
91 fBGtriggerV0C(BGtriggerV0C),
96 fV0ADecision(kV0Invalid),
97 fV0CDecision(kV0Invalid),
103 for(Int_t j=0; j<64; j++) {
104 fMultiplicity[j] = Multiplicity[j];
107 fWidth[j] = Width[j];
108 fBBFlag[j] = BBFlag[j];
109 fBGFlag[j] = BGFlag[j];
113 //__________________________________________________________________________
114 AliESDVZERO& AliESDVZERO::operator=(const AliESDVZERO& o)
117 if(this==&o) return *this;
118 AliVVZERO::operator=(o);
119 // Assignment operator
120 fBBtriggerV0A=o.fBBtriggerV0A;
121 fBGtriggerV0A=o.fBGtriggerV0A;
122 fBBtriggerV0C=o.fBBtriggerV0C;
123 fBGtriggerV0C=o.fBGtriggerV0C;
125 fV0ATime = o.fV0ATime;
126 fV0CTime = o.fV0CTime;
127 fV0ATimeError = o.fV0ATimeError;
128 fV0CTimeError = o.fV0CTimeError;
129 fV0ADecision = o.fV0ADecision;
130 fV0CDecision = o.fV0CDecision;
131 fTriggerChargeA = o.fTriggerChargeA;
132 fTriggerChargeC = o.fTriggerChargeC;
133 fTriggerBits = o.fTriggerBits;
135 for(Int_t j=0; j<64; 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 AliESDVZERO::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 AliESDVZERO *robj = dynamic_cast<AliESDVZERO*>(&obj);
155 if(!robj)return; // not an AliESDVZERO
160 //__________________________________________________________________________
161 Short_t AliESDVZERO::GetNbPMV0A() const
163 // Returns the number of
166 for(Int_t i=32;i<64;i++)
167 if (fMultiplicity[i]>0) n++;
171 //__________________________________________________________________________
172 Short_t AliESDVZERO::GetNbPMV0C() const
174 // Returns the number of
177 for(Int_t i=0;i<32;i++)
178 if (fMultiplicity[i]>0) n++;
182 //__________________________________________________________________________
183 Float_t AliESDVZERO::GetMTotV0A() const
185 // returns total multiplicity
188 for(Int_t i=32;i<64;i++)
189 mul+= fMultiplicity[i];
193 //__________________________________________________________________________
194 Float_t AliESDVZERO::GetMTotV0C() const
196 // returns total multiplicity
199 for(Int_t i=0;i<32;i++)
200 mul+= fMultiplicity[i];
204 //__________________________________________________________________________
205 Float_t AliESDVZERO::GetMRingV0A(Int_t ring) const
207 // returns multiplicity in a
209 if (OutOfRange(ring, "AliESDVZERO:::GetMRingV0A",4)) return -1;
212 if (ring == 0) for(Int_t i=32;i<40;i++) mul += fMultiplicity[i];
213 if (ring == 1) for(Int_t i=40;i<48;i++) mul += fMultiplicity[i];
214 if (ring == 2) for(Int_t i=48;i<56;i++) mul += fMultiplicity[i];
215 if (ring == 3) for(Int_t i=56;i<64;i++) mul += fMultiplicity[i];
219 //__________________________________________________________________________
220 Float_t AliESDVZERO::GetMRingV0C(Int_t ring) const
222 // returns multiplicity in a
224 if (OutOfRange(ring, "AliESDVZERO:::GetMRingV0C",4)) return -1;
227 if (ring == 0) for(Int_t i=0;i<8;i++) mul += fMultiplicity[i];
228 if (ring == 1) for(Int_t i=8;i<16;i++) mul += fMultiplicity[i];
229 if (ring == 2) for(Int_t i=16;i<24;i++) mul += fMultiplicity[i];
230 if (ring == 3) for(Int_t i=24;i<32;i++) mul += fMultiplicity[i];
234 //__________________________________________________________________________
235 Float_t AliESDVZERO::GetMultiplicity(Int_t i) const
238 // returns multiplicity in a
240 if (OutOfRange(i, "AliESDVZERO::GetMultiplicity:",64)) return -1;
241 return fMultiplicity[i];
244 //__________________________________________________________________________
245 Float_t AliESDVZERO::GetMultiplicityV0A(Int_t i) const
248 // returns multiplicity in a
250 if (OutOfRange(i, "AliESDVZERO::GetMultiplicityV0A:",32)) return -1;
251 return fMultiplicity[32+i];
254 //__________________________________________________________________________
255 Float_t AliESDVZERO::GetMultiplicityV0C(Int_t i) const
258 // returns multiplicity in a
260 if (OutOfRange(i, "AliESDVZERO::GetMultiplicityV0C:",32)) return -1;
261 return fMultiplicity[i];
264 //__________________________________________________________________________
265 Float_t AliESDVZERO::GetAdc(Int_t i) const
268 // returns ADC charge in a
270 if (OutOfRange(i, "AliESDVZERO::GetAdc:",64)) return -1;
274 //__________________________________________________________________________
275 Float_t AliESDVZERO::GetAdcV0A(Int_t i) const
278 // returns ADC charge in a
280 if (OutOfRange(i, "AliESDVZERO::GetAdcV0A:",32)) return -1;
284 //__________________________________________________________________________
285 Float_t AliESDVZERO::GetAdcV0C(Int_t i) const
288 // returns ADC charge in a
290 if (OutOfRange(i, "AliESDVZERO::GetAdcV0C:",32)) return -1;
294 //__________________________________________________________________________
295 Float_t AliESDVZERO::GetTime(Int_t i) const
298 // returns leading time measured by TDC
299 // in a given cell of V0
300 if (OutOfRange(i, "AliESDVZERO::GetTime:",64)) return -1;
304 //__________________________________________________________________________
305 Float_t AliESDVZERO::GetTimeV0A(Int_t i) const
308 // returns leading time measured by TDC
309 // in a given cell of V0A
310 if (OutOfRange(i, "AliESDVZERO::GetTimeV0A:",32)) return -1;
314 //__________________________________________________________________________
315 Float_t AliESDVZERO::GetTimeV0C(Int_t i) const
318 // returns leading time measured by TDC
319 // in a given cell of V0C
320 if (OutOfRange(i, "AliESDVZERO::GetTimeV0C:",32)) return -1;
324 //__________________________________________________________________________
325 Float_t AliESDVZERO::GetWidth(Int_t i) const
328 // returns time signal width
329 // in a given cell of V0
330 if (OutOfRange(i, "AliESDVZERO::GetWidth:",64)) return -1;
334 //__________________________________________________________________________
335 Float_t AliESDVZERO::GetWidthV0A(Int_t i) const
338 // returns time signal width
339 // in a given cell of V0A
340 if (OutOfRange(i, "AliESDVZERO::GetWidthV0A:",32)) return -1;
344 //__________________________________________________________________________
345 Float_t AliESDVZERO::GetWidthV0C(Int_t i) const
348 // returns time signal width
349 // in a given cell of V0C
350 if (OutOfRange(i, "AliESDVZERO::GetWidthV0C:",32)) return -1;
354 //__________________________________________________________________________
355 Bool_t AliESDVZERO::BBTriggerV0A(Int_t i) const
357 // returns offline beam-beam flags in V0A
359 if (OutOfRange(i, "AliESDVZERO:::BBTriggerV0A",32)) return kFALSE;
361 return ( fBBtriggerV0A & (test << i) ? kTRUE : kFALSE );
364 //__________________________________________________________________________
365 Bool_t AliESDVZERO::BGTriggerV0A(Int_t i) const
367 // returns offline beam-gas flags in V0A
369 if (OutOfRange(i, "AliESDVZERO:::BGTriggerV0A",32)) return kFALSE;
371 return ( fBGtriggerV0A & (test << i) ? kTRUE : kFALSE );
374 //__________________________________________________________________________
375 Bool_t AliESDVZERO::BBTriggerV0C(Int_t i) const
377 // returns offline beam-beam flags in V0C
379 if (OutOfRange(i, "AliESDVZERO:::BBTriggerV0C",32)) return kFALSE;
381 return ( fBBtriggerV0C & (test << i) ? kTRUE : kFALSE );
384 //__________________________________________________________________________
385 Bool_t AliESDVZERO::BGTriggerV0C(Int_t i) const
387 // returns offline beam-gasflags in V0C
389 if (OutOfRange(i, "AliESDVZERO:::BGTriggerV0C",32)) return kFALSE;
391 return ( fBGtriggerV0C & (test << i) ? kTRUE : kFALSE );
394 //__________________________________________________________________________
395 Bool_t AliESDVZERO::GetBBFlag(Int_t i) const
398 // returns online beam-beam flag in V0
399 // one boolean per cell
400 if (OutOfRange(i, "AliESDVZERO::GetBBFlag:",64)) return kFALSE;
404 //__________________________________________________________________________
405 Bool_t AliESDVZERO::GetBGFlag(Int_t i) const
408 // returns online beam-gas flag in V0
409 // one boolean per cell
410 if (OutOfRange(i, "AliESDVZERO::GetBGFlag:",64)) return kFALSE;