]> git.uio.no Git - u/mrichter/AliRoot.git/blame - STEER/AliAODZDC.cxx
Add Reaction Plane
[u/mrichter/AliRoot.git] / STEER / AliAODZDC.cxx
CommitLineData
e40566b8 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// Class for AOD ZDC data
18// Author: Chiara Oppedisano
19// Chiara.Oppedisano@cern.ch March 2011
20//-------------------------------------------------------------------------
21
22#include <TMath.h>
23#include "AliAODZDC.h"
24
25ClassImp(AliAODZDC)
26
27AliAODZDC::AliAODZDC() :
28 AliVZDC(),
7e726cb1 29 fZNCEnergy(-999.),
30 fZNAEnergy(-999.),
31 fZPCEnergy(-999.),
32 fZPAEnergy(-999.),
33 fZEM1Energy(0.),
c4c4f9e9 34 fZEM2Energy(0.),
e40566b8 35 fZDCParticipants(0),
36 fZDCPartSideA(0),
37 fZDCPartSideC(0),
38 fImpactParameter(0),
39 fImpactParamSideA(0),
40 fImpactParamSideC(0),
41 fZDCTDCSum(0),
42 fZDCTDCDifference(0)
43{
44 for(Int_t i=0; i<5; i++){
45 fZNCTowerEnergy[i] = fZNATowerEnergy[i] = 0.;
46 fZPCTowerEnergy[i] = fZPATowerEnergy[i] = 0.;
47 fZNCTowerEnergyLR[i] = fZNATowerEnergyLR[i] = 0.;
48 }
49 //for(Int_t i=0; i<2; i++){
50 // fZNACentrCoord[i] = fZNCCentrCoord[i] = 0.;
51 //}
52}
53
54//__________________________________________________________________________
55AliAODZDC::AliAODZDC(const AliAODZDC &zdcAOD) :
56 AliVZDC(zdcAOD),
57 fZNCEnergy(zdcAOD.fZNCEnergy),
58 fZNAEnergy(zdcAOD.fZNAEnergy),
59 fZPCEnergy(zdcAOD.fZPCEnergy),
60 fZPAEnergy(zdcAOD.fZPAEnergy),
61 fZEM1Energy(zdcAOD.fZEM1Energy),
62 fZEM2Energy(zdcAOD.fZEM2Energy),
63 fZDCParticipants(zdcAOD.fZDCParticipants),
64 fZDCPartSideA(zdcAOD.fZDCPartSideA),
65 fZDCPartSideC(zdcAOD.fZDCPartSideC),
66 fImpactParameter(zdcAOD.fImpactParameter),
67 fImpactParamSideA(zdcAOD.fImpactParamSideA),
68 fImpactParamSideC(zdcAOD.fImpactParamSideC),
69 fZDCTDCSum(zdcAOD.fZDCTDCSum),
70 fZDCTDCDifference(zdcAOD.fZDCTDCDifference)
71{
72 for(Int_t i=0; i<5; i++){
73 fZNCTowerEnergy[i] = zdcAOD.fZNCTowerEnergy[i];
74 fZNATowerEnergy[i] = zdcAOD.fZNATowerEnergy[i];
75 fZPCTowerEnergy[i] = zdcAOD.fZPCTowerEnergy[i];
76 fZPATowerEnergy[i] = zdcAOD.fZPATowerEnergy[i];
77 fZNCTowerEnergyLR[i] = zdcAOD.fZNCTowerEnergyLR[i];
78 fZNATowerEnergyLR[i] = zdcAOD.fZNATowerEnergyLR[i];
79 }
80 //for(Int_t i=0; i<2; i++){
81 // fZNACentrCoord[i] = zdcAOD.fZNACentrCoord[i];
82 // fZNCCentrCoord[i] = zdcAOD.fZNCCentrCoord[i];
83 //}
84}
85
86//__________________________________________________________________________
87AliAODZDC& AliAODZDC::operator=(const AliAODZDC& zdcAOD)
88{
89 // Assignment operator
90 //
91 if(this!=&zdcAOD) {
92 TObject::operator=(zdcAOD);
93 fZNCEnergy = zdcAOD.fZNCEnergy;
94 fZNAEnergy = zdcAOD.fZNAEnergy;
95 fZPCEnergy = zdcAOD.fZPCEnergy;
96 fZPAEnergy = zdcAOD.fZPAEnergy;
97 fZEM1Energy = zdcAOD.fZEM1Energy;
98 fZEM2Energy = zdcAOD.fZEM2Energy;
99 for(Int_t i=0; i<5; i++){
100 fZNCTowerEnergy[i] = zdcAOD.fZNCTowerEnergy[i];
101 fZNATowerEnergy[i] = zdcAOD.fZNATowerEnergy[i];
102 fZPCTowerEnergy[i] = zdcAOD.fZPCTowerEnergy[i];
103 fZPATowerEnergy[i] = zdcAOD.fZPATowerEnergy[i];
104 fZNCTowerEnergyLR[i] = zdcAOD.fZNCTowerEnergyLR[i];
105 fZNATowerEnergyLR[i] = zdcAOD.fZNATowerEnergyLR[i];
106 }
107 //
108 fZDCParticipants = zdcAOD.fZDCParticipants;
109 fZDCPartSideA = zdcAOD.fZDCPartSideA;
110 fZDCPartSideC = zdcAOD.fZDCPartSideC;
111 fImpactParameter = zdcAOD.fImpactParameter;
112 fImpactParamSideA = zdcAOD.fImpactParamSideA;
113 fImpactParamSideC = zdcAOD.fImpactParamSideC;
114 //
115 //for(Int_t i=0; i<2; i++){
116 // fZNACentrCoord[i] = zdcAOD.fZNACentrCoord[i];
117 // fZNCCentrCoord[i] = zdcAOD.fZNCCentrCoord[i];
118 //}
119 //
120 fZDCTDCSum = zdcAOD.fZDCTDCSum;
121 fZDCTDCDifference = zdcAOD.fZDCTDCDifference;
122 }
123 return *this;
124}
125
126//______________________________________________________________________________
127Double_t AliAODZDC::GetZNCEnergy() const
128{
7e726cb1 129 if (fZNCEnergy < 0.) {
130 fZNCEnergy = 0.;
131 for(Int_t i=0; i<5; i++) fZNCEnergy += fZNCTowerEnergy[i];
132 }
133 return fZNCEnergy;
e40566b8 134}
135
136//______________________________________________________________________________
137Double_t AliAODZDC::GetZNAEnergy() const
138{
7e726cb1 139 if (fZNAEnergy < 0.) {
140 fZNAEnergy = 0.;
141 for(Int_t i=0; i<5; i++) fZNAEnergy += fZNATowerEnergy[i];
142 }
143 return fZNAEnergy;
e40566b8 144}
145
146//______________________________________________________________________________
147Double_t AliAODZDC::GetZPCEnergy() const
148{
7e726cb1 149 if (fZPCEnergy < 0.) {
150 fZPCEnergy = 0.;
151 for(Int_t i=0; i<5; i++) fZPCEnergy += fZPCTowerEnergy[i];
152 }
153 return fZPCEnergy;
e40566b8 154}
155
156//______________________________________________________________________________
157Double_t AliAODZDC::GetZPAEnergy() const
158{
7e726cb1 159 if (fZPAEnergy < 0.) {
160 fZPAEnergy = 0.;
161 for(Int_t i=0; i<5; i++) fZPAEnergy += fZPATowerEnergy[i];
162 }
163 return fZPAEnergy;
e40566b8 164}
165
166//______________________________________________________________________________
167void AliAODZDC::SetZNCTowers(const Double_t value[5], const Double_t valueLR[5])
168{
169 // Sets ZNC towers
170 for(Int_t i=0; i<5; i++){
171 fZNCTowerEnergy[i] = value[i];
172 fZNCTowerEnergyLR[i] = valueLR[i];
173 }
174}
175
176//______________________________________________________________________________
177void AliAODZDC::SetZNATowers(const Double_t value[5], const Double_t valueLR[5])
178{
179 // Sets ZNA towers
180 for(Int_t i=0; i<5; i++){
181 fZNATowerEnergy[i] = value[i];
182 fZNATowerEnergyLR[i] = valueLR[i];
183 }
184}
185
186//______________________________________________________________________________
187Bool_t AliAODZDC::GetZNCentroidInPbPb(Float_t beamEne, Double_t centrZNC[2], Double_t centrZNA[2])
188{
189 // Provides coordinates of centroid over ZN (side C) front face in PbPb
190 if(beamEne==0){
191 printf(" ZDC centroid in PbPb can't be calculated with E_beam = 0 !!!\n");
192 //for(Int_t jj=0; jj<2; jj++) fZNCCentrCoord[jj] = 999.;
193 return kFALSE;
194 }
195
196 const Float_t x[4] = {-1.75, 1.75, -1.75, 1.75};
197 const Float_t y[4] = {-1.75, -1.75, 1.75, 1.75};
198 const Float_t alpha=0.395;
199 Float_t numXZNC=0., numYZNC=0., denZNC=0., cZNC, wZNC;
200 Float_t numXZNA=0., numYZNA=0., denZNA=0., cZNA, wZNA;
201 Float_t zncEnergy=0., znaEnergy=0.;
202 //
203 for(Int_t i=0; i<5; i++){
204 zncEnergy += fZNCTowerEnergy[i];
205 znaEnergy += fZNCTowerEnergy[i];
206 }
207 for(Int_t i=0; i<4; i++){
208 if(fZNCTowerEnergy[i+1]>0.) {
209 wZNC = TMath::Power(fZNCTowerEnergy[i+1], alpha);
210 numXZNC += x[i]*wZNC;
211 numYZNC += y[i]*wZNC;
212 denZNC += wZNC;
213 }
214 if(fZNATowerEnergy[i+1]>0.) {
215 wZNA = TMath::Power(fZNATowerEnergy[i+1], alpha);
216 numXZNA += x[i]*wZNA;
217 numYZNA += y[i]*wZNA;
218 denZNA += wZNA;
219 }
220 }
221 //
222 if(denZNC!=0){
223 Float_t nSpecnC = zncEnergy/beamEne;
224 cZNC = 1.89358-0.71262/(nSpecnC+0.71789);
225 centrZNC[0] = cZNC*numXZNC/denZNC;
226 centrZNC[1] = cZNC*numYZNC/denZNC;
227 }
228 else{
229 centrZNC[0] = centrZNC[1] = 999.;
230 }
231 if(denZNA!=0){
232 Float_t nSpecnA = znaEnergy/beamEne;
233 cZNA = 1.89358-0.71262/(nSpecnA+0.71789);
234 centrZNA[0] = cZNA*numXZNA/denZNA;
235 centrZNA[1] = cZNA*numYZNA/denZNA;
236 }
237 else{
238 centrZNA[0] = centrZNA[1] = 999.;
239 }
240
241
242 return kTRUE;
243}
244
245//______________________________________________________________________________
246Bool_t AliAODZDC::GetZNCentroidInpp(Double_t centrZNC[2], Double_t centrZNA[2])
247{
248 // Provides coordinates of centroid over ZN (side C) front face in pp
249 const Float_t x[4] = {-1.75, 1.75, -1.75, 1.75};
250 const Float_t y[4] = {-1.75, -1.75, 1.75, 1.75};
251 const Float_t alpha=0.5;
252 Float_t numXZNC=0., numYZNC=0., denZNC=0., wZNC;
253 Float_t numXZNA=0., numYZNA=0., denZNA=0., wZNA;
254 //
255 for(Int_t i=0; i<4; i++){
256 if(fZNCTowerEnergy[i+1]>0.) {
257 wZNC = TMath::Power(fZNCTowerEnergy[i+1], alpha);
258 numXZNC += x[i]*wZNC;
259 numYZNC += y[i]*wZNC;
260 denZNC += wZNC;
261 }
262 if(fZNATowerEnergy[i+1]>0.) {
263 wZNA = TMath::Power(fZNATowerEnergy[i+1], alpha);
264 numXZNA += x[i]*wZNA;
265 numYZNA += y[i]*wZNA;
266 denZNA += wZNA;
267 }
268 }
269 //
270 if(denZNC!=0){
271 centrZNC[0] = numXZNC/denZNC;
272 centrZNC[1] = numYZNC/denZNC;
273 }
274 else{
275 centrZNC[0] = centrZNC[1] = 999.;
276 }
277 if(denZNA!=0){
278 centrZNA[0] = numXZNA/denZNA;
279 centrZNA[1] = numYZNA/denZNA;
280 }
281 else{
282 centrZNA[0] = centrZNA[1] = 999.;
283 }
284
285 return kTRUE;
286}