]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STEER/AliESDZDC.cxx
Updates on ZDC ESData (Ch. Oppedisano)
[u/mrichter/AliRoot.git] / STEER / AliESDZDC.cxx
1 /**************************************************************************
2  * Copyright(c) 1998-1999, 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 //-------------------------------------------------------------------------
18 //                      Implementation of   Class AliESDZDC
19 //   This is a class that summarizes the ZDC data
20 //   for the ESD   
21 //   Origin: Christian Klein-Boesing, CERN, Christian.Klein-Boesing@cern.ch 
22 //-------------------------------------------------------------------------
23
24
25
26 #include "AliESDZDC.h"
27
28 ClassImp(AliESDZDC)
29
30 //Float_t funCParCentr(const Int_t n) {return 1.8936-0.7126/(n + 0.7179);}
31
32 //______________________________________________________________________________
33 AliESDZDC::AliESDZDC() :
34   TObject(),
35   fZDCN1Energy(0),
36   fZDCP1Energy(0),
37   fZDCN2Energy(0),
38   fZDCP2Energy(0),
39   fZDCEMEnergy(0),
40   fZDCEMEnergy1(0),
41   fZDCParticipants(0),
42   fZDCPartSideA(0),
43   fZDCPartSideC(0),
44   fImpactParameter(0),
45   fImpactParamSideA(0),
46   fImpactParamSideC(0),
47   fESDQuality(0)
48 {
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.;
54   }
55   for(Int_t i=0; i<2; i++){
56     fZNACentrCoord[i] = fZNCCentrCoord[i] = 0.;
57   }
58 }
59
60 //______________________________________________________________________________
61 AliESDZDC::AliESDZDC(const AliESDZDC& zdc) :
62   TObject(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)
75 {
76   // copy constructor
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];
86   }
87   for(Int_t i=0; i<2; i++){
88     fZNACentrCoord[i] = zdc.fZNACentrCoord[i];
89     fZNCCentrCoord[i] = zdc.fZNCCentrCoord[i];
90   }
91 }
92
93 //______________________________________________________________________________
94 AliESDZDC& AliESDZDC::operator=(const AliESDZDC&zdc)
95 {
96   // assigment operator
97   if(this!=&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];
114     }
115     //
116     fZDCParticipants = zdc.fZDCParticipants;
117     fZDCPartSideA = zdc.fZDCPartSideA;
118     fZDCPartSideC = zdc.fZDCPartSideC;
119     fImpactParameter = zdc.fImpactParameter;
120     fImpactParamSideA = zdc.fImpactParamSideA;
121     fImpactParamSideC = zdc.fImpactParamSideC;
122     //
123     for(Int_t i=0; i<2; i++){
124          fZNACentrCoord[i] = zdc.fZNACentrCoord[i];
125          fZNCCentrCoord[i] = zdc.fZNCCentrCoord[i];
126     }
127     //
128     fESDQuality = zdc.fESDQuality;
129   } 
130   return *this;
131 }
132
133 //______________________________________________________________________________
134 void AliESDZDC::Copy(TObject &obj) const {
135   
136   // this overwrites the virtual TOBject::Copy()
137   // to allow run time copying without casting
138   // in AliESDEvent
139
140   if(this==&obj)return;
141   AliESDZDC *robj = dynamic_cast<AliESDZDC*>(&obj);
142   if(!robj)return; // not an AliESDZDC
143   *robj = *this;
144
145 }
146
147
148 //______________________________________________________________________________
149 void AliESDZDC::Reset()
150 {
151   // reset all data members
152   fZDCN1Energy=0;
153   fZDCP1Energy=0;
154   fZDCN2Energy=0;
155   fZDCP2Energy=0;
156   fZDCEMEnergy=0;
157   fZDCEMEnergy1=0;
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.;
163   }
164   fZDCParticipants=0;  
165   fZDCPartSideA=0;  
166   fZDCPartSideC=0;  
167   fImpactParameter=0;
168   fImpactParamSideA=0;
169   fImpactParamSideC=0;
170   for(Int_t i=0; i<2; i++){
171        fZNACentrCoord[i] = fZNCCentrCoord[i] = 0.;
172   }
173   fESDQuality=0;
174 }
175
176 //______________________________________________________________________________
177 void AliESDZDC::Print(const Option_t *) const
178 {
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);
184 }
185
186 //______________________________________________________________________________
187 Double32_t * AliESDZDC::GetZNCCentroid() 
188 {
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.);
195   //
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);
199     numX += x[i]*w;
200     numY += y[i]*w;
201     den += w;
202   }
203   if(den!=0){
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;
208   }
209   return fZNCCentrCoord;
210 }
211
212 //______________________________________________________________________________
213 Double32_t * AliESDZDC::GetZNACentroid() 
214 {
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);
224     numX += x[i]*w;
225     numY += y[i]*w;
226     den += w;
227   }
228   //
229   if(den!=0){
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;
234   }
235   return fZNACentrCoord;
236 }