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