]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STEER/AliESDZDC.cxx
Ref storage set in initialisation
[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   fZDCParticipants2(0)
43 {
44   for(Int_t i=0; i<5; i++){
45     fZN1TowerEnergy[i] = fZN2TowerEnergy[i] = 0.;
46     fZP1TowerEnergy[i] = fZP2TowerEnergy[i] = 0.;
47     fZN1TowerEnergyLR[i] = fZN2TowerEnergyLR[i] = 0.;
48     fZP1TowerEnergyLR[i] = fZP2TowerEnergyLR[i] = 0.;
49   }
50   for(Int_t i=0; i<2; i++){
51     fZNACentrCoord[i] = fZNCCentrCoord[i] = 0.;
52   }
53 }
54
55 //______________________________________________________________________________
56 AliESDZDC::AliESDZDC(const AliESDZDC& zdc) :
57   TObject(zdc),
58   fZDCN1Energy(zdc.fZDCN1Energy),
59   fZDCP1Energy(zdc.fZDCP1Energy),
60   fZDCN2Energy(zdc.fZDCN2Energy),
61   fZDCP2Energy(zdc.fZDCP2Energy),
62   fZDCEMEnergy(zdc.fZDCEMEnergy),
63   fZDCEMEnergy1(zdc.fZDCEMEnergy1),
64   fZDCParticipants(zdc.fZDCParticipants),
65   fZDCParticipants2(zdc.fZDCParticipants2)
66 {
67   // copy constructor
68   for(Int_t i=0; i<5; i++){
69      fZN1TowerEnergy[i] = zdc.fZN1TowerEnergy[i];
70      fZN2TowerEnergy[i] = zdc.fZN2TowerEnergy[i];
71      fZP1TowerEnergy[i] = zdc.fZP1TowerEnergy[i];
72      fZP2TowerEnergy[i] = zdc.fZP2TowerEnergy[i];
73      fZN1TowerEnergyLR[i] = zdc.fZN1TowerEnergyLR[i];
74      fZN2TowerEnergyLR[i] = zdc.fZN2TowerEnergyLR[i];
75      fZP1TowerEnergyLR[i] = zdc.fZP1TowerEnergyLR[i];
76      fZP2TowerEnergyLR[i] = zdc.fZP2TowerEnergyLR[i];
77   }
78   for(Int_t i=0; i<2; i++){
79     fZNACentrCoord[i] = zdc.fZNACentrCoord[i];
80     fZNCCentrCoord[i] = zdc.fZNCCentrCoord[i];
81   }
82 }
83
84 //______________________________________________________________________________
85 AliESDZDC& AliESDZDC::operator=(const AliESDZDC&zdc)
86 {
87   // assigment operator
88   if(this!=&zdc) {
89     TObject::operator=(zdc);
90     fZDCN1Energy = zdc.fZDCN1Energy;
91     fZDCP1Energy = zdc.fZDCP1Energy;
92     fZDCN2Energy = zdc.fZDCN2Energy;
93     fZDCP2Energy = zdc.fZDCP2Energy;
94     fZDCParticipants = zdc.fZDCParticipants;
95     fZDCParticipants2 = zdc.fZDCParticipants2;
96     fZDCEMEnergy = zdc.fZDCEMEnergy;
97     fZDCEMEnergy1 = zdc.fZDCEMEnergy1;
98     for(Int_t i=0; i<5; i++){
99        fZN1TowerEnergy[i] = zdc.fZN1TowerEnergy[i];
100        fZN2TowerEnergy[i] = zdc.fZN2TowerEnergy[i];
101        fZP1TowerEnergy[i] = zdc.fZP1TowerEnergy[i];
102        fZP2TowerEnergy[i] = zdc.fZP2TowerEnergy[i];
103        fZN1TowerEnergyLR[i] = zdc.fZN1TowerEnergyLR[i];
104        fZN2TowerEnergyLR[i] = zdc.fZN2TowerEnergyLR[i];
105        fZP1TowerEnergyLR[i] = zdc.fZP1TowerEnergyLR[i];
106        fZP2TowerEnergyLR[i] = zdc.fZP2TowerEnergyLR[i];
107     }
108     for(Int_t i=0; i<2; i++){
109          fZNACentrCoord[i] = zdc.fZNACentrCoord[i];
110          fZNCCentrCoord[i] = zdc.fZNCCentrCoord[i];
111     }
112   } 
113   return *this;
114 }
115
116 //______________________________________________________________________________
117 void AliESDZDC::Copy(TObject &obj) const {
118   
119   // this overwrites the virtual TOBject::Copy()
120   // to allow run time copying without casting
121   // in AliESDEvent
122
123   if(this==&obj)return;
124   AliESDZDC *robj = dynamic_cast<AliESDZDC*>(&obj);
125   if(!robj)return; // not an AliESDZDC
126   *robj = *this;
127
128 }
129
130
131 //______________________________________________________________________________
132 void AliESDZDC::Reset()
133 {
134   // reset all data members
135   fZDCN1Energy=0;
136   fZDCP1Energy=0;
137   fZDCN2Energy=0;
138   fZDCP2Energy=0;
139   fZDCParticipants=0;  
140   fZDCParticipants2=0;  
141   fZDCEMEnergy=0;
142   fZDCEMEnergy1=0;
143   for(Int_t i=0; i<5; i++){
144     fZN1TowerEnergy[i] = fZN2TowerEnergy[i] = 0.;
145     fZP1TowerEnergy[i] = fZP2TowerEnergy[i] = 0.;
146     fZN1TowerEnergyLR[i] = fZN2TowerEnergyLR[i] = 0.;
147     fZP1TowerEnergyLR[i] = fZP2TowerEnergyLR[i] = 0.;
148   }
149   for(Int_t i=0; i<2; i++){
150        fZNACentrCoord[i] = fZNCCentrCoord[i] = 0.;
151   }
152 }
153
154 //______________________________________________________________________________
155 void AliESDZDC::Print(const Option_t *) const
156 {
157   //  Print ESD for the ZDC
158   printf("\n \t ZN1Energy = %f TeV, ZP1Energy = %f TeV, ZN2Energy = %f TeV,"
159   " ZP2Energy = %f, Npart side C = %d, Npart side A = %d\n",
160   fZDCN1Energy,fZDCP1Energy,fZDCN2Energy,fZDCP2Energy,fZDCParticipants,fZDCParticipants2);
161 }
162
163 //______________________________________________________________________________
164 Double32_t * AliESDZDC::GetZNCCentroid() 
165 {
166   // Provide coordinates of centroid over ZN (side C) front face
167   Float_t x[4] = {-1.75, 1.75, -1.75, 1.75};
168   Float_t y[4] = {-1.75, -1.72, 1.75, 1.75};
169   Float_t NumX=0., NumY=0., Den=0.;
170   Float_t alpha=0.395, w;
171   for(Int_t i=0; i<4; i++){
172     if(fZN1TowerEnergy[i+1]<0.) fZN1TowerEnergy[i+1]=0.;
173     w = TMath::Power(fZN1TowerEnergy[i+1], alpha);
174     NumX += x[i]*w;
175     NumY += y[i]*w;
176     Den += w;
177   }
178   if(Den!=0){
179     fZNCCentrCoord[0] = 1.8665*NumX/Den;
180     fZNCCentrCoord[1] = 1.8665*NumY/Den;
181   }
182   return fZNCCentrCoord;
183 }
184
185 //______________________________________________________________________________
186 Double32_t * AliESDZDC::GetZNACentroid() 
187 {
188   // Provide coordinates of centroid over ZN (side A) front face
189   Float_t x[4] = {-1.75, 1.75, -1.75, 1.75};
190   Float_t y[4] = {-1.75, -1.72, 1.75, 1.75};
191   Float_t NumX=0., NumY=0., Den=0.;
192   Float_t alpha=0.395, w;
193   for(Int_t i=0; i<4; i++){
194     if(fZN2TowerEnergy[i+1]<0.) fZN2TowerEnergy[i+1]=0.;
195     w = TMath::Power(fZN2TowerEnergy[i+1], alpha);
196     NumX += x[i]*w;
197     NumY += y[i]*w;
198     Den += w;
199   }
200   //
201   if(Den!=0){
202     fZNACentrCoord[0] = 1.8665*NumX/Den;
203     fZNACentrCoord[1] = 1.8665*NumY/Den;
204   }
205   return fZNACentrCoord;
206 }