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 AOD VZERO data
18 // Author: Cvetan Cheshkov
19 // cvetan.cheshkov@cern.ch 2/02/2011
20 //-------------------------------------------------------------------------
22 #include "AliAODVZERO.h"
27 //__________________________________________________________________________
28 AliAODVZERO::AliAODVZERO()
36 fV0ADecision(kV0Invalid),
37 fV0CDecision(kV0Invalid)
39 // Default constructor
40 for(Int_t j=0; j<64; j++){
41 fMultiplicity[j] = 0.0;
47 //__________________________________________________________________________
48 AliAODVZERO::AliAODVZERO(const AliAODVZERO &source)
50 fBBtriggerV0A(source.fBBtriggerV0A),
51 fBGtriggerV0A(source.fBGtriggerV0A),
52 fBBtriggerV0C(source.fBBtriggerV0C),
53 fBGtriggerV0C(source.fBGtriggerV0C),
54 fV0ATime(source.fV0ATime),
55 fV0CTime(source.fV0CTime),
56 fV0ADecision(source.fV0ADecision),
57 fV0CDecision(source.fV0CDecision)
59 // Default constructor
60 for(Int_t j=0; j<64; j++) {
61 fMultiplicity[j] = source.fMultiplicity[j];
62 fBBFlag[j] = source.fBBFlag[j];
63 fBGFlag[j] = source.fBGFlag[j];
67 //__________________________________________________________________________
68 AliAODVZERO::AliAODVZERO(const AliVVZERO &source)
74 fV0ATime(source.GetV0ATime()),
75 fV0CTime(source.GetV0CTime()),
76 fV0ADecision(source.GetV0ADecision()),
77 fV0CDecision(source.GetV0CDecision())
79 // Default constructor
80 for(Int_t j=0; j<64; j++) {
81 fMultiplicity[j] = source.GetMultiplicity(j);
82 fBBFlag[j] = source.GetBBFlag(j);
83 fBGFlag[j] = source.GetBGFlag(j);
86 for(Int_t j=0; j<32; j++) {
87 if (source.BBTriggerV0A(j)) fBBtriggerV0A |= (1 << j);
88 if (source.BGTriggerV0A(j)) fBGtriggerV0A |= (1 << j);
89 if (source.BBTriggerV0C(j)) fBBtriggerV0C |= (1 << j);
90 if (source.BGTriggerV0C(j)) fBGtriggerV0C |= (1 << j);
94 //__________________________________________________________________________
95 AliAODVZERO& AliAODVZERO::operator=(const AliAODVZERO& source)
97 // Assignment operator
99 if(this==&source) return *this;
100 AliVVZERO::operator=(source);
101 // Assignment operator
102 fBBtriggerV0A=source.fBBtriggerV0A;
103 fBGtriggerV0A=source.fBGtriggerV0A;
104 fBBtriggerV0C=source.fBBtriggerV0C;
105 fBGtriggerV0C=source.fBGtriggerV0C;
107 fV0ATime = source.fV0ATime;
108 fV0CTime = source.fV0CTime;
109 fV0ADecision = source.fV0ADecision;
110 fV0CDecision = source.fV0CDecision;
112 for(Int_t j=0; j<64; j++) {
113 fMultiplicity[j] = source.fMultiplicity[j];
114 fBBFlag[j] = source.fBBFlag[j];
115 fBGFlag[j] = source.fBGFlag[j];
120 //__________________________________________________________________________
121 Short_t AliAODVZERO::GetNbPMV0A() const
123 // Returns the number of
126 for(Int_t i=32;i<64;i++)
127 if (fMultiplicity[i]>0) n++;
131 //__________________________________________________________________________
132 Short_t AliAODVZERO::GetNbPMV0C() const
134 // Returns the number of
137 for(Int_t i=0;i<32;i++)
138 if (fMultiplicity[i]>0) n++;
142 //__________________________________________________________________________
143 Float_t AliAODVZERO::GetMTotV0A() const
145 // returns total multiplicity
148 for(Int_t i=32;i<64;i++)
149 mul+= fMultiplicity[i];
153 //__________________________________________________________________________
154 Float_t AliAODVZERO::GetMTotV0C() const
156 // returns total multiplicity
159 for(Int_t i=0;i<32;i++)
160 mul+= fMultiplicity[i];
164 //__________________________________________________________________________
165 Float_t AliAODVZERO::GetMRingV0A(Int_t ring) const
167 // returns multiplicity in a
169 if (OutOfRange(ring, "AliAODVZERO:::GetMRingV0A",4)) return -1;
172 if (ring == 0) for(Int_t i=32;i<40;i++) mul += fMultiplicity[i];
173 if (ring == 1) for(Int_t i=40;i<48;i++) mul += fMultiplicity[i];
174 if (ring == 2) for(Int_t i=48;i<56;i++) mul += fMultiplicity[i];
175 if (ring == 3) for(Int_t i=56;i<64;i++) mul += fMultiplicity[i];
179 //__________________________________________________________________________
180 Float_t AliAODVZERO::GetMRingV0C(Int_t ring) const
182 // returns multiplicity in a
184 if (OutOfRange(ring, "AliAODVZERO:::GetMRingV0C",4)) return -1;
187 if (ring == 0) for(Int_t i=0;i<8;i++) mul += fMultiplicity[i];
188 if (ring == 1) for(Int_t i=8;i<16;i++) mul += fMultiplicity[i];
189 if (ring == 2) for(Int_t i=16;i<24;i++) mul += fMultiplicity[i];
190 if (ring == 3) for(Int_t i=24;i<32;i++) mul += fMultiplicity[i];
194 //__________________________________________________________________________
195 Float_t AliAODVZERO::GetMultiplicity(Int_t i) const
198 // returns multiplicity in a
200 if (OutOfRange(i, "AliAODVZERO::GetMultiplicity:",64)) return -1;
201 return fMultiplicity[i];
204 //__________________________________________________________________________
205 Float_t AliAODVZERO::GetMultiplicityV0A(Int_t i) const
208 // returns multiplicity in a
210 if (OutOfRange(i, "AliAODVZERO::GetMultiplicityV0A:",32)) return -1;
211 return fMultiplicity[32+i];
214 //__________________________________________________________________________
215 Float_t AliAODVZERO::GetMultiplicityV0C(Int_t i) const
218 // returns multiplicity in a
220 if (OutOfRange(i, "AliAODVZERO::GetMultiplicityV0C:",32)) return -1;
221 return fMultiplicity[i];
224 //__________________________________________________________________________
225 Bool_t AliAODVZERO::BBTriggerV0A(Int_t i) const
227 // returns offline beam-beam flags in V0A
229 if (OutOfRange(i, "AliAODVZERO:::BBTriggerV0A",32)) return kFALSE;
231 return ( fBBtriggerV0A & (test << i) ? kTRUE : kFALSE );
234 //__________________________________________________________________________
235 Bool_t AliAODVZERO::BGTriggerV0A(Int_t i) const
237 // returns offline beam-gas flags in V0A
239 if (OutOfRange(i, "AliAODVZERO:::BGTriggerV0A",32)) return kFALSE;
241 return ( fBGtriggerV0A & (test << i) ? kTRUE : kFALSE );
244 //__________________________________________________________________________
245 Bool_t AliAODVZERO::BBTriggerV0C(Int_t i) const
247 // returns offline beam-beam flags in V0C
249 if (OutOfRange(i, "AliAODVZERO:::BBTriggerV0C",32)) return kFALSE;
251 return ( fBBtriggerV0C & (test << i) ? kTRUE : kFALSE );
254 //__________________________________________________________________________
255 Bool_t AliAODVZERO::BGTriggerV0C(Int_t i) const
257 // returns offline beam-gasflags in V0C
259 if (OutOfRange(i, "AliAODVZERO:::BGTriggerV0C",32)) return kFALSE;
261 return ( fBGtriggerV0C & (test << i) ? kTRUE : kFALSE );
264 //__________________________________________________________________________
265 Bool_t AliAODVZERO::GetBBFlag(Int_t i) const
268 // returns online beam-beam flag in V0
269 // one boolean per cell
270 if (OutOfRange(i, "AliAODVZERO::GetBBFlag:",64)) return kFALSE;
274 //__________________________________________________________________________
275 Bool_t AliAODVZERO::GetBGFlag(Int_t i) const
278 // returns online beam-gas flag in V0
279 // one boolean per cell
280 if (OutOfRange(i, "AliAODVZERO::GetBGFlag:",64)) return kFALSE;