]> git.uio.no Git - u/mrichter/AliRoot.git/blame - STEER/ESD/AliESDVZERO.cxx
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / STEER / ESD / AliESDVZERO.cxx
CommitLineData
b734abbe 1/**************************************************************************
2 * Copyright(c) 1998-2007, 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//-------------------------------------------------------------------------
17// Container class for ESD VZERO data
18// Author: Brigitte Cheynis & Cvetan Cheshkov
19//-------------------------------------------------------------------------
20
dd735cf0 21#include "AliESDVZERO.h"
28fdf12c 22#include "AliLog.h"
dd735cf0 23
24ClassImp(AliESDVZERO)
25
d0502ab2 26//__________________________________________________________________________
a055ee24 27AliESDVZERO::AliESDVZERO()
b734abbe 28 :AliVVZERO(),
a055ee24 29 fBBtriggerV0A(0),
30 fBGtriggerV0A(0),
31 fBBtriggerV0C(0),
b44c933e 32 fBGtriggerV0C(0),
33 fV0ATime(-1024),
34 fV0CTime(-1024),
35 fV0ATimeError(0),
36 fV0CTimeError(0),
37 fV0ADecision(kV0Invalid),
18b2dabf 38 fV0CDecision(kV0Invalid),
39 fTriggerChargeA(0),
40 fTriggerChargeC(0),
41 fTriggerBits(0)
dd735cf0 42{
43 // Default constructor
a055ee24 44 for(Int_t j=0; j<64; j++){
6c6d6114 45 fMultiplicity[j] = 0.0;
db0db003 46 fAdc[j] = 0.0;
47 fTime[j] = 0.0;
48 fWidth[j] = 0.0;
d0502ab2 49 fBBFlag[j]= kFALSE;
50 fBGFlag[j]= kFALSE;
cd888a89 51 }
dd735cf0 52}
53
d0502ab2 54//__________________________________________________________________________
cd888a89 55AliESDVZERO::AliESDVZERO(const AliESDVZERO &o)
b734abbe 56 :AliVVZERO(o),
a055ee24 57 fBBtriggerV0A(o.fBBtriggerV0A),
58 fBGtriggerV0A(o.fBGtriggerV0A),
59 fBBtriggerV0C(o.fBBtriggerV0C),
b44c933e 60 fBGtriggerV0C(o.fBGtriggerV0C),
61 fV0ATime(o.fV0ATime),
62 fV0CTime(o.fV0CTime),
63 fV0ATimeError(o.fV0ATimeError),
64 fV0CTimeError(o.fV0CTimeError),
65 fV0ADecision(o.fV0ADecision),
18b2dabf 66 fV0CDecision(o.fV0CDecision),
67 fTriggerChargeA(o.fTriggerChargeA),
68 fTriggerChargeC(o.fTriggerChargeC),
69 fTriggerBits(o.fTriggerBits)
dd735cf0 70{
71 // Default constructor
28fdf12c 72 for(Int_t j=0; j<64; j++) {
a055ee24 73 fMultiplicity[j] = o.fMultiplicity[j];
d0502ab2 74 fAdc[j] = o.fAdc[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];
28fdf12c 79 }
dd735cf0 80}
81
d0502ab2 82//__________________________________________________________________________
a055ee24 83AliESDVZERO::AliESDVZERO(UInt_t BBtriggerV0A, UInt_t BGtriggerV0A,
84 UInt_t BBtriggerV0C, UInt_t BGtriggerV0C,
db0db003 85 Float_t *Multiplicity, Float_t *Adc,
86 Float_t *Time, Float_t *Width, Bool_t *BBFlag, Bool_t *BGFlag)
b734abbe 87 :AliVVZERO(),
a055ee24 88 fBBtriggerV0A(BBtriggerV0A),
89 fBGtriggerV0A(BGtriggerV0A),
90 fBBtriggerV0C(BBtriggerV0C),
b44c933e 91 fBGtriggerV0C(BGtriggerV0C),
92 fV0ATime(-1024),
93 fV0CTime(-1024),
94 fV0ATimeError(0),
95 fV0CTimeError(0),
96 fV0ADecision(kV0Invalid),
18b2dabf 97 fV0CDecision(kV0Invalid),
98 fTriggerChargeA(0),
99 fTriggerChargeC(0),
100 fTriggerBits(0)
dd735cf0 101{
102 // Constructor
28fdf12c 103 for(Int_t j=0; j<64; j++) {
a055ee24 104 fMultiplicity[j] = Multiplicity[j];
d0502ab2 105 fAdc[j] = Adc[j];
106 fTime[j] = Time[j];
107 fWidth[j] = Width[j];
108 fBBFlag[j] = BBFlag[j];
109 fBGFlag[j] = BGFlag[j];
28fdf12c 110 }
dd735cf0 111}
112
d0502ab2 113//__________________________________________________________________________
dd735cf0 114AliESDVZERO& AliESDVZERO::operator=(const AliESDVZERO& o)
115{
cd888a89 116
a055ee24 117 if(this==&o) return *this;
b734abbe 118 AliVVZERO::operator=(o);
dd735cf0 119 // Assignment operator
a055ee24 120 fBBtriggerV0A=o.fBBtriggerV0A;
121 fBGtriggerV0A=o.fBGtriggerV0A;
122 fBBtriggerV0C=o.fBBtriggerV0C;
123 fBGtriggerV0C=o.fBGtriggerV0C;
b44c933e 124
125 fV0ATime = o.fV0ATime;
126 fV0CTime = o.fV0CTime;
127 fV0ATimeError = o.fV0ATimeError;
128 fV0CTimeError = o.fV0CTimeError;
129 fV0ADecision = o.fV0ADecision;
130 fV0CDecision = o.fV0CDecision;
18b2dabf 131 fTriggerChargeA = o.fTriggerChargeA;
132 fTriggerChargeC = o.fTriggerChargeC;
133 fTriggerBits = o.fTriggerBits;
b44c933e 134
28fdf12c 135 for(Int_t j=0; j<64; j++) {
a055ee24 136 fMultiplicity[j] = o.fMultiplicity[j];
d0502ab2 137 fAdc[j] = o.fAdc[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];
28fdf12c 142 }
a055ee24 143 return *this;
144}
cd888a89 145
4ca09433 146//______________________________________________________________________________
147void AliESDVZERO::Copy(TObject &obj) const {
148
149 // this overwrites the virtual TOBject::Copy()
150 // to allow run time copying without casting
151 // in AliESDEvent
152
153 if(this==&obj)return;
154 AliESDVZERO *robj = dynamic_cast<AliESDVZERO*>(&obj);
155 if(!robj)return; // not an AliESDVZERO
156 *robj = *this;
157
158}
159
d0502ab2 160//__________________________________________________________________________
5fc205b9 161Short_t AliESDVZERO::GetNbPMV0A() const
a055ee24 162{
5fc205b9 163 // Returns the number of
164 // fired PM in V0A
a055ee24 165 Short_t n=0;
166 for(Int_t i=32;i<64;i++)
167 if (fMultiplicity[i]>0) n++;
168 return n;
169}
dd735cf0 170
d0502ab2 171//__________________________________________________________________________
5fc205b9 172Short_t AliESDVZERO::GetNbPMV0C() const
a055ee24 173{
5fc205b9 174 // Returns the number of
175 // fired PM in V0C
a055ee24 176 Short_t n=0;
177 for(Int_t i=0;i<32;i++)
178 if (fMultiplicity[i]>0) n++;
179 return n;
180}
dd735cf0 181
d0502ab2 182//__________________________________________________________________________
5fc205b9 183Float_t AliESDVZERO::GetMTotV0A() const
a055ee24 184{
5fc205b9 185 // returns total multiplicity
186 // in V0A
6c6d6114 187 Float_t mul=0.0;
a055ee24 188 for(Int_t i=32;i<64;i++)
db0db003 189 mul+= fMultiplicity[i];
6c6d6114 190 return mul;
a055ee24 191}
192
d0502ab2 193//__________________________________________________________________________
5fc205b9 194Float_t AliESDVZERO::GetMTotV0C() const
a055ee24 195{
5fc205b9 196 // returns total multiplicity
197 // in V0C
6c6d6114 198 Float_t mul=0.0;
a055ee24 199 for(Int_t i=0;i<32;i++)
db0db003 200 mul+= fMultiplicity[i];
6c6d6114 201 return mul;
a055ee24 202}
203
d0502ab2 204//__________________________________________________________________________
5fc205b9 205Float_t AliESDVZERO::GetMRingV0A(Int_t ring) const
a055ee24 206{
5fc205b9 207 // returns multiplicity in a
208 // given ring of V0A
a055ee24 209 if (OutOfRange(ring, "AliESDVZERO:::GetMRingV0A",4)) return -1;
6c6d6114 210 Float_t mul =0.0;
732a24fe 211
db0db003 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];
6c6d6114 216 return mul ;
a055ee24 217}
732a24fe 218
d0502ab2 219//__________________________________________________________________________
5fc205b9 220Float_t AliESDVZERO::GetMRingV0C(Int_t ring) const
a055ee24 221{
5fc205b9 222 // returns multiplicity in a
223 // given ring of V0C
a055ee24 224 if (OutOfRange(ring, "AliESDVZERO:::GetMRingV0C",4)) return -1;
6c6d6114 225 Float_t mul =0.0;
732a24fe 226
db0db003 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];
6c6d6114 231 return mul ;
732a24fe 232}
233
d0502ab2 234//__________________________________________________________________________
5fc205b9 235Float_t AliESDVZERO::GetMultiplicity(Int_t i) const
a055ee24 236
237{
5fc205b9 238 // returns multiplicity in a
239 // given cell of V0
a055ee24 240 if (OutOfRange(i, "AliESDVZERO::GetMultiplicity:",64)) return -1;
241 return fMultiplicity[i];
242}
243
d0502ab2 244//__________________________________________________________________________
5fc205b9 245Float_t AliESDVZERO::GetMultiplicityV0A(Int_t i) const
28fdf12c 246
247{
5fc205b9 248 // returns multiplicity in a
249 // given cell of V0A
28fdf12c 250 if (OutOfRange(i, "AliESDVZERO::GetMultiplicityV0A:",32)) return -1;
251 return fMultiplicity[32+i];
252}
253
d0502ab2 254//__________________________________________________________________________
5fc205b9 255Float_t AliESDVZERO::GetMultiplicityV0C(Int_t i) const
28fdf12c 256
257{
5fc205b9 258 // returns multiplicity in a
259 // given cell of V0C
28fdf12c 260 if (OutOfRange(i, "AliESDVZERO::GetMultiplicityV0C:",32)) return -1;
261 return fMultiplicity[i];
262}
263
d0502ab2 264//__________________________________________________________________________
5fc205b9 265Float_t AliESDVZERO::GetAdc(Int_t i) const
28fdf12c 266
267{
5fc205b9 268 // returns ADC charge in a
269 // given cell of V0
28fdf12c 270 if (OutOfRange(i, "AliESDVZERO::GetAdc:",64)) return -1;
271 return fAdc[i];
272}
273
d0502ab2 274//__________________________________________________________________________
5fc205b9 275Float_t AliESDVZERO::GetAdcV0A(Int_t i) const
28fdf12c 276
277{
5fc205b9 278 // returns ADC charge in a
279 // given cell of V0A
d0502ab2 280 if (OutOfRange(i, "AliESDVZERO::GetAdcV0A:",32)) return -1;
281 return fAdc[32+i];
28fdf12c 282}
283
d0502ab2 284//__________________________________________________________________________
5fc205b9 285Float_t AliESDVZERO::GetAdcV0C(Int_t i) const
28fdf12c 286
287{
5fc205b9 288 // returns ADC charge in a
289 // given cell of V0C
d0502ab2 290 if (OutOfRange(i, "AliESDVZERO::GetAdcV0C:",32)) return -1;
291 return fAdc[i];
28fdf12c 292}
293
d0502ab2 294//__________________________________________________________________________
5fc205b9 295Float_t AliESDVZERO::GetTime(Int_t i) const
28fdf12c 296
297{
5fc205b9 298 // returns leading time measured by TDC
299 // in a given cell of V0
28fdf12c 300 if (OutOfRange(i, "AliESDVZERO::GetTime:",64)) return -1;
301 return fTime[i];
302}
303
d0502ab2 304//__________________________________________________________________________
5fc205b9 305Float_t AliESDVZERO::GetTimeV0A(Int_t i) const
d0502ab2 306
307{
5fc205b9 308 // returns leading time measured by TDC
309 // in a given cell of V0A
d0502ab2 310 if (OutOfRange(i, "AliESDVZERO::GetTimeV0A:",32)) return -1;
311 return fTime[32+i];
312}
313
314//__________________________________________________________________________
5fc205b9 315Float_t AliESDVZERO::GetTimeV0C(Int_t i) const
28fdf12c 316
317{
5fc205b9 318 // returns leading time measured by TDC
319 // in a given cell of V0C
28fdf12c 320 if (OutOfRange(i, "AliESDVZERO::GetTimeV0C:",32)) return -1;
321 return fTime[i];
322}
323
d0502ab2 324//__________________________________________________________________________
5fc205b9 325Float_t AliESDVZERO::GetWidth(Int_t i) const
28fdf12c 326
327{
5fc205b9 328 // returns time signal width
329 // in a given cell of V0
d0502ab2 330 if (OutOfRange(i, "AliESDVZERO::GetWidth:",64)) return -1;
331 return fWidth[i];
332}
333
334//__________________________________________________________________________
5fc205b9 335Float_t AliESDVZERO::GetWidthV0A(Int_t i) const
d0502ab2 336
337{
5fc205b9 338 // returns time signal width
339 // in a given cell of V0A
d0502ab2 340 if (OutOfRange(i, "AliESDVZERO::GetWidthV0A:",32)) return -1;
341 return fWidth[32+i];
342}
343
344//__________________________________________________________________________
5fc205b9 345Float_t AliESDVZERO::GetWidthV0C(Int_t i) const
d0502ab2 346
347{
5fc205b9 348 // returns time signal width
349 // in a given cell of V0C
d0502ab2 350 if (OutOfRange(i, "AliESDVZERO::GetWidthV0C:",32)) return -1;
351 return fWidth[i];
28fdf12c 352}
353
d0502ab2 354//__________________________________________________________________________
5fc205b9 355Bool_t AliESDVZERO::BBTriggerV0A(Int_t i) const
a055ee24 356{
5fc205b9 357 // returns offline beam-beam flags in V0A
358 // one bit per cell
a055ee24 359 if (OutOfRange(i, "AliESDVZERO:::BBTriggerV0A",32)) return kFALSE;
360 UInt_t test = 1;
361 return ( fBBtriggerV0A & (test << i) ? kTRUE : kFALSE );
362}
363
d0502ab2 364//__________________________________________________________________________
5fc205b9 365Bool_t AliESDVZERO::BGTriggerV0A(Int_t i) const
a055ee24 366{
5fc205b9 367 // returns offline beam-gas flags in V0A
368 // one bit per cell
a055ee24 369 if (OutOfRange(i, "AliESDVZERO:::BGTriggerV0A",32)) return kFALSE;
370 UInt_t test = 1;
371 return ( fBGtriggerV0A & (test << i) ? kTRUE : kFALSE );
372}
373
d0502ab2 374//__________________________________________________________________________
5fc205b9 375Bool_t AliESDVZERO::BBTriggerV0C(Int_t i) const
a055ee24 376{
5fc205b9 377 // returns offline beam-beam flags in V0C
378 // one bit per cell
a055ee24 379 if (OutOfRange(i, "AliESDVZERO:::BBTriggerV0C",32)) return kFALSE;
380 UInt_t test = 1;
381 return ( fBBtriggerV0C & (test << i) ? kTRUE : kFALSE );
382}
383
d0502ab2 384//__________________________________________________________________________
5fc205b9 385Bool_t AliESDVZERO::BGTriggerV0C(Int_t i) const
a055ee24 386{
5fc205b9 387 // returns offline beam-gasflags in V0C
388 // one bit per cell
a055ee24 389 if (OutOfRange(i, "AliESDVZERO:::BGTriggerV0C",32)) return kFALSE;
390 UInt_t test = 1;
391 return ( fBGtriggerV0C & (test << i) ? kTRUE : kFALSE );
392}
393
d0502ab2 394//__________________________________________________________________________
5fc205b9 395Bool_t AliESDVZERO::GetBBFlag(Int_t i) const
d0502ab2 396
397{
5fc205b9 398 // returns online beam-beam flag in V0
399 // one boolean per cell
d0502ab2 400 if (OutOfRange(i, "AliESDVZERO::GetBBFlag:",64)) return kFALSE;
401 return fBBFlag[i];
402}
403
404//__________________________________________________________________________
5fc205b9 405Bool_t AliESDVZERO::GetBGFlag(Int_t i) const
d0502ab2 406
407{
5fc205b9 408 // returns online beam-gas flag in V0
409 // one boolean per cell
d0502ab2 410 if (OutOfRange(i, "AliESDVZERO::GetBGFlag:",64)) return kFALSE;
411 return fBGFlag[i];
412}