1 /**************************************************************************
2 * Copyright(c) 1998-1999, 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 **************************************************************************/
17 //-------------------------------------------------------------------------
18 // Implementation of Class AliESDZDC
19 // This is a class that summarizes the ZDC data
21 // Origin: Christian Klein-Boesing, CERN, Christian.Klein-Boesing@cern.ch
22 //-------------------------------------------------------------------------
26 #include "AliESDZDC.h"
30 //Float_t funCParCentr(const Int_t n) {return 1.8936-0.7126/(n + 0.7179);}
32 //______________________________________________________________________________
33 AliESDZDC::AliESDZDC() :
49 for(Int_t i=0; i<5; i++){
50 fZN1TowerEnergy[i] = fZN2TowerEnergy[i] = 0.;
51 fZP1TowerEnergy[i] = fZP2TowerEnergy[i] = 0.;
52 fZN1TowerEnergyLR[i] = fZN2TowerEnergyLR[i] = 0.;
53 fZP1TowerEnergyLR[i] = fZP2TowerEnergyLR[i] = 0.;
55 for(Int_t i=0; i<2; i++){
56 fZNACentrCoord[i] = fZNCCentrCoord[i] = 0.;
60 //______________________________________________________________________________
61 AliESDZDC::AliESDZDC(const AliESDZDC& zdc) :
63 fZDCN1Energy(zdc.fZDCN1Energy),
64 fZDCP1Energy(zdc.fZDCP1Energy),
65 fZDCN2Energy(zdc.fZDCN2Energy),
66 fZDCP2Energy(zdc.fZDCP2Energy),
67 fZDCEMEnergy(zdc.fZDCEMEnergy),
68 fZDCEMEnergy1(zdc.fZDCEMEnergy1),
69 fZDCParticipants(zdc.fZDCParticipants),
70 fZDCPartSideA(zdc.fZDCPartSideA),
71 fZDCPartSideC(zdc.fZDCPartSideC),
72 fImpactParameter(zdc.fImpactParameter),
73 fImpactParamSideA(zdc.fImpactParamSideC),
74 fESDQuality(zdc.fESDQuality)
77 for(Int_t i=0; i<5; i++){
78 fZN1TowerEnergy[i] = zdc.fZN1TowerEnergy[i];
79 fZN2TowerEnergy[i] = zdc.fZN2TowerEnergy[i];
80 fZP1TowerEnergy[i] = zdc.fZP1TowerEnergy[i];
81 fZP2TowerEnergy[i] = zdc.fZP2TowerEnergy[i];
82 fZN1TowerEnergyLR[i] = zdc.fZN1TowerEnergyLR[i];
83 fZN2TowerEnergyLR[i] = zdc.fZN2TowerEnergyLR[i];
84 fZP1TowerEnergyLR[i] = zdc.fZP1TowerEnergyLR[i];
85 fZP2TowerEnergyLR[i] = zdc.fZP2TowerEnergyLR[i];
87 for(Int_t i=0; i<2; i++){
88 fZNACentrCoord[i] = zdc.fZNACentrCoord[i];
89 fZNCCentrCoord[i] = zdc.fZNCCentrCoord[i];
93 //______________________________________________________________________________
94 AliESDZDC& AliESDZDC::operator=(const AliESDZDC&zdc)
98 TObject::operator=(zdc);
99 fZDCN1Energy = zdc.fZDCN1Energy;
100 fZDCP1Energy = zdc.fZDCP1Energy;
101 fZDCN2Energy = zdc.fZDCN2Energy;
102 fZDCP2Energy = zdc.fZDCP2Energy;
103 fZDCEMEnergy = zdc.fZDCEMEnergy;
104 fZDCEMEnergy1 = zdc.fZDCEMEnergy1;
105 for(Int_t i=0; i<5; i++){
106 fZN1TowerEnergy[i] = zdc.fZN1TowerEnergy[i];
107 fZN2TowerEnergy[i] = zdc.fZN2TowerEnergy[i];
108 fZP1TowerEnergy[i] = zdc.fZP1TowerEnergy[i];
109 fZP2TowerEnergy[i] = zdc.fZP2TowerEnergy[i];
110 fZN1TowerEnergyLR[i] = zdc.fZN1TowerEnergyLR[i];
111 fZN2TowerEnergyLR[i] = zdc.fZN2TowerEnergyLR[i];
112 fZP1TowerEnergyLR[i] = zdc.fZP1TowerEnergyLR[i];
113 fZP2TowerEnergyLR[i] = zdc.fZP2TowerEnergyLR[i];
116 fZDCParticipants = zdc.fZDCParticipants;
117 fZDCPartSideA = zdc.fZDCPartSideA;
118 fZDCPartSideC = zdc.fZDCPartSideC;
119 fImpactParameter = zdc.fImpactParameter;
120 fImpactParamSideA = zdc.fImpactParamSideA;
121 fImpactParamSideC = zdc.fImpactParamSideC;
123 for(Int_t i=0; i<2; i++){
124 fZNACentrCoord[i] = zdc.fZNACentrCoord[i];
125 fZNCCentrCoord[i] = zdc.fZNCCentrCoord[i];
128 fESDQuality = zdc.fESDQuality;
133 //______________________________________________________________________________
134 void AliESDZDC::Copy(TObject &obj) const {
136 // this overwrites the virtual TOBject::Copy()
137 // to allow run time copying without casting
140 if(this==&obj)return;
141 AliESDZDC *robj = dynamic_cast<AliESDZDC*>(&obj);
142 if(!robj)return; // not an AliESDZDC
148 //______________________________________________________________________________
149 void AliESDZDC::Reset()
151 // reset all data members
158 for(Int_t i=0; i<5; i++){
159 fZN1TowerEnergy[i] = fZN2TowerEnergy[i] = 0.;
160 fZP1TowerEnergy[i] = fZP2TowerEnergy[i] = 0.;
161 fZN1TowerEnergyLR[i] = fZN2TowerEnergyLR[i] = 0.;
162 fZP1TowerEnergyLR[i] = fZP2TowerEnergyLR[i] = 0.;
170 for(Int_t i=0; i<2; i++){
171 fZNACentrCoord[i] = fZNCCentrCoord[i] = 0.;
176 //______________________________________________________________________________
177 void AliESDZDC::Print(const Option_t *) const
179 // Print ESD for the ZDC
180 printf("\n \t E_{ZNC} = %f TeV, E_{ZPC} = %f TeV, E_{ZNA} = %f TeV, E_{ZPA} = %f TeV,"
181 " E_{ZEM} = %f GeV, Npart = %d, b = %1.2f fm\n",
182 fZDCN1Energy/1000.,fZDCP1Energy/1000.,fZDCN2Energy/1000.,fZDCP2Energy/1000.,
183 fZDCEMEnergy+fZDCEMEnergy1, fZDCParticipants,fImpactParameter);
186 //______________________________________________________________________________
187 Double32_t * AliESDZDC::GetZNCCentroid()
189 // Provide coordinates of centroid over ZN (side C) front face
190 Float_t x[4] = {-1.75, 1.75, -1.75, 1.75};
191 Float_t y[4] = {-1.75, -1.75, 1.75, 1.75};
192 Float_t numX=0., numY=0., den=0.;
193 Float_t c, alpha=0.395, w;
194 TF1 * fun = new TF1("fun","1.89358-0.71262/(x+0.71789)",0.,100.);
196 for(Int_t i=0; i<4; i++){
197 if(fZN1TowerEnergy[i+1]<0.) fZN1TowerEnergy[i+1]=0.;
198 w = TMath::Power(fZN1TowerEnergy[i+1], alpha);
204 // ATTENTION! Needs to be changed if E_beam(A-A) != 2.76 A TeV !!!!
205 c = fZDCN1Energy/2760.;
206 fZNCCentrCoord[0] = c*numX/den;
207 fZNCCentrCoord[1] = c*numY/den;
209 return fZNCCentrCoord;
212 //______________________________________________________________________________
213 Double32_t * AliESDZDC::GetZNACentroid()
215 // Provide coordinates of centroid over ZN (side A) front face
216 Float_t x[4] = {-1.75, 1.75, -1.75, 1.75};
217 Float_t y[4] = {-1.75, -1.75, 1.75, 1.75};
218 Float_t numX=0., numY=0., den=0.;
219 Float_t c, alpha=0.395, w;
220 TF1 * fun = new TF1("fun","1.89358-0.71262/(x+0.71789)",0.,100.);
221 for(Int_t i=0; i<4; i++){
222 if(fZN2TowerEnergy[i+1]<0.) fZN2TowerEnergy[i+1]=0.;
223 w = TMath::Power(fZN2TowerEnergy[i+1], alpha);
230 // ATTENTION! Needs to be changed if E_beam(A-A) != 2.76 A TeV !!!!
231 c = fZDCN2Energy/2760.;
232 fZNACentrCoord[0] = c*numX/den;
233 fZNACentrCoord[1] = c*numY/den;
235 return fZNACentrCoord;