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 AliAODVZERO& AliAODVZERO::operator=(const AliVVZERO& source)
123 // Assignment operator
124 // used in esd->aod filter
125 if(this==&source) return *this;
126 AliVVZERO::operator=(source);
128 fV0ATime = source.GetV0ATime();
129 fV0CTime = source.GetV0CTime();
130 fV0ADecision = source.GetV0ADecision();
131 fV0CDecision = source.GetV0CDecision();
133 for(Int_t j=0; j<64; j++) {
134 fMultiplicity[j] = source.GetMultiplicity(j);
135 fBBFlag[j] = source.GetBBFlag(j);
136 fBGFlag[j] = source.GetBGFlag(j);
139 fBBtriggerV0A = fBGtriggerV0A = fBBtriggerV0C = fBGtriggerV0C = 0;
140 for(Int_t j=0; j<32; j++) {
141 if (source.BBTriggerV0A(j)) fBBtriggerV0A |= (1 << j);
142 if (source.BGTriggerV0A(j)) fBGtriggerV0A |= (1 << j);
143 if (source.BBTriggerV0C(j)) fBBtriggerV0C |= (1 << j);
144 if (source.BGTriggerV0C(j)) fBGtriggerV0C |= (1 << j);
151 //__________________________________________________________________________
152 Short_t AliAODVZERO::GetNbPMV0A() const
154 // Returns the number of
157 for(Int_t i=32;i<64;i++)
158 if (fMultiplicity[i]>0) n++;
162 //__________________________________________________________________________
163 Short_t AliAODVZERO::GetNbPMV0C() const
165 // Returns the number of
168 for(Int_t i=0;i<32;i++)
169 if (fMultiplicity[i]>0) n++;
173 //__________________________________________________________________________
174 Float_t AliAODVZERO::GetMTotV0A() const
176 // returns total multiplicity
179 for(Int_t i=32;i<64;i++)
180 mul+= fMultiplicity[i];
184 //__________________________________________________________________________
185 Float_t AliAODVZERO::GetMTotV0C() const
187 // returns total multiplicity
190 for(Int_t i=0;i<32;i++)
191 mul+= fMultiplicity[i];
195 //__________________________________________________________________________
196 Float_t AliAODVZERO::GetMRingV0A(Int_t ring) const
198 // returns multiplicity in a
200 if (OutOfRange(ring, "AliAODVZERO:::GetMRingV0A",4)) return -1;
203 if (ring == 0) for(Int_t i=32;i<40;i++) mul += fMultiplicity[i];
204 if (ring == 1) for(Int_t i=40;i<48;i++) mul += fMultiplicity[i];
205 if (ring == 2) for(Int_t i=48;i<56;i++) mul += fMultiplicity[i];
206 if (ring == 3) for(Int_t i=56;i<64;i++) mul += fMultiplicity[i];
210 //__________________________________________________________________________
211 Float_t AliAODVZERO::GetMRingV0C(Int_t ring) const
213 // returns multiplicity in a
215 if (OutOfRange(ring, "AliAODVZERO:::GetMRingV0C",4)) return -1;
218 if (ring == 0) for(Int_t i=0;i<8;i++) mul += fMultiplicity[i];
219 if (ring == 1) for(Int_t i=8;i<16;i++) mul += fMultiplicity[i];
220 if (ring == 2) for(Int_t i=16;i<24;i++) mul += fMultiplicity[i];
221 if (ring == 3) for(Int_t i=24;i<32;i++) mul += fMultiplicity[i];
225 //__________________________________________________________________________
226 Float_t AliAODVZERO::GetMultiplicity(Int_t i) const
229 // returns multiplicity in a
231 if (OutOfRange(i, "AliAODVZERO::GetMultiplicity:",64)) return -1;
232 return fMultiplicity[i];
235 //__________________________________________________________________________
236 Float_t AliAODVZERO::GetMultiplicityV0A(Int_t i) const
239 // returns multiplicity in a
241 if (OutOfRange(i, "AliAODVZERO::GetMultiplicityV0A:",32)) return -1;
242 return fMultiplicity[32+i];
245 //__________________________________________________________________________
246 Float_t AliAODVZERO::GetMultiplicityV0C(Int_t i) const
249 // returns multiplicity in a
251 if (OutOfRange(i, "AliAODVZERO::GetMultiplicityV0C:",32)) return -1;
252 return fMultiplicity[i];
255 //__________________________________________________________________________
256 Bool_t AliAODVZERO::BBTriggerV0A(Int_t i) const
258 // returns offline beam-beam flags in V0A
260 if (OutOfRange(i, "AliAODVZERO:::BBTriggerV0A",32)) return kFALSE;
262 return ( fBBtriggerV0A & (test << i) ? kTRUE : kFALSE );
265 //__________________________________________________________________________
266 Bool_t AliAODVZERO::BGTriggerV0A(Int_t i) const
268 // returns offline beam-gas flags in V0A
270 if (OutOfRange(i, "AliAODVZERO:::BGTriggerV0A",32)) return kFALSE;
272 return ( fBGtriggerV0A & (test << i) ? kTRUE : kFALSE );
275 //__________________________________________________________________________
276 Bool_t AliAODVZERO::BBTriggerV0C(Int_t i) const
278 // returns offline beam-beam flags in V0C
280 if (OutOfRange(i, "AliAODVZERO:::BBTriggerV0C",32)) return kFALSE;
282 return ( fBBtriggerV0C & (test << i) ? kTRUE : kFALSE );
285 //__________________________________________________________________________
286 Bool_t AliAODVZERO::BGTriggerV0C(Int_t i) const
288 // returns offline beam-gasflags in V0C
290 if (OutOfRange(i, "AliAODVZERO:::BGTriggerV0C",32)) return kFALSE;
292 return ( fBGtriggerV0C & (test << i) ? kTRUE : kFALSE );
295 //__________________________________________________________________________
296 Bool_t AliAODVZERO::GetBBFlag(Int_t i) const
299 // returns online beam-beam flag in V0
300 // one boolean per cell
301 if (OutOfRange(i, "AliAODVZERO::GetBBFlag:",64)) return kFALSE;
305 //__________________________________________________________________________
306 Bool_t AliAODVZERO::GetBGFlag(Int_t i) const
309 // returns online beam-gas flag in V0
310 // one boolean per cell
311 if (OutOfRange(i, "AliAODVZERO::GetBGFlag:",64)) return kFALSE;