]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STEER/AliESDZDC.cxx
Error in AliZDCQADataMakerSim corrected
[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 fCParCentr(const int 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 {
43   for(int i=0; i<5; i++){
44     fZN1TowerEnergy[i] = fZN2TowerEnergy[i] = 0.;
45     fZP1TowerEnergy[i] = fZP2TowerEnergy[i] = 0.;
46     fZN1TowerEnergyLR[i] = fZN2TowerEnergyLR[i] = 0.;
47     fZP1TowerEnergyLR[i] = fZP2TowerEnergyLR[i] = 0.;
48   }
49 }
50
51 AliESDZDC::AliESDZDC(const AliESDZDC& zdc) :
52   TObject(zdc),
53   fZDCN1Energy(zdc.fZDCN1Energy),
54   fZDCP1Energy(zdc.fZDCP1Energy),
55   fZDCN2Energy(zdc.fZDCN2Energy),
56   fZDCP2Energy(zdc.fZDCP2Energy),
57   fZDCEMEnergy(zdc.fZDCEMEnergy),
58   fZDCEMEnergy1(zdc.fZDCEMEnergy1),
59   fZDCParticipants(zdc.fZDCParticipants)
60 {
61   // copy constructor
62   for(int i=0; i<5; i++){
63      fZN1TowerEnergy[i] = zdc.fZN1TowerEnergy[i];
64      fZN2TowerEnergy[i] = zdc.fZN2TowerEnergy[i];
65      fZP1TowerEnergy[i] = zdc.fZP1TowerEnergy[i];
66      fZP2TowerEnergy[i] = zdc.fZP2TowerEnergy[i];
67      fZN1TowerEnergyLR[i] = zdc.fZN1TowerEnergyLR[i];
68      fZN2TowerEnergyLR[i] = zdc.fZN2TowerEnergyLR[i];
69      fZP1TowerEnergyLR[i] = zdc.fZP1TowerEnergyLR[i];
70      fZP2TowerEnergyLR[i] = zdc.fZP2TowerEnergyLR[i];
71   }
72 }
73
74 AliESDZDC& AliESDZDC::operator=(const AliESDZDC&zdc)
75 {
76   // assigment operator
77   if(this!=&zdc) {
78     TObject::operator=(zdc);
79     fZDCN1Energy = zdc.fZDCN1Energy;
80     fZDCP1Energy = zdc.fZDCP1Energy;
81     fZDCN2Energy = zdc.fZDCN2Energy;
82     fZDCP2Energy = zdc.fZDCP2Energy;
83     fZDCParticipants = zdc.fZDCParticipants;
84     fZDCEMEnergy = zdc.fZDCEMEnergy;
85     fZDCEMEnergy1 = zdc.fZDCEMEnergy1;
86     for(Int_t i=0; i<5; i++){
87        fZN1TowerEnergy[i] = zdc.fZN1TowerEnergy[i];
88        fZN2TowerEnergy[i] = zdc.fZN2TowerEnergy[i];
89        fZP1TowerEnergy[i] = zdc.fZP1TowerEnergy[i];
90        fZP2TowerEnergy[i] = zdc.fZP2TowerEnergy[i];
91        fZN1TowerEnergyLR[i] = zdc.fZN1TowerEnergyLR[i];
92        fZN2TowerEnergyLR[i] = zdc.fZN2TowerEnergyLR[i];
93        fZP1TowerEnergyLR[i] = zdc.fZP1TowerEnergyLR[i];
94        fZP2TowerEnergyLR[i] = zdc.fZP2TowerEnergyLR[i];
95     }
96   } 
97   return *this;
98 }
99
100
101 //______________________________________________________________________________
102 void AliESDZDC::Reset()
103 {
104   // reset all data members
105   fZDCN1Energy=0;
106   fZDCP1Energy=0;
107   fZDCN2Energy=0;
108   fZDCP2Energy=0;
109   fZDCParticipants=0;  
110   fZDCEMEnergy=0;
111   fZDCEMEnergy1=0;
112   for(int i=0; i<5; i++){
113     fZN1TowerEnergy[i] = fZN2TowerEnergy[i] = 0.;
114     fZP1TowerEnergy[i] = fZP2TowerEnergy[i] = 0.;
115     fZN1TowerEnergyLR[i] = fZN2TowerEnergyLR[i] = 0.;
116     fZP1TowerEnergyLR[i] = fZP2TowerEnergyLR[i] = 0.;
117   }
118 }
119
120 //______________________________________________________________________________
121 void AliESDZDC::Print(const Option_t *) const
122 {
123   //  Print ESD for the ZDC
124   printf("\n \t ZN1Energy = %f TeV, ZP1Energy = %f TeV, ZN2Energy = %f TeV,"
125   " ZP2Energy = %f, Nparticipants = %d\n",
126   fZDCN1Energy,fZDCP1Energy,fZDCN2Energy,fZDCP2Energy,fZDCParticipants);
127 }
128
129 //______________________________________________________________________________
130 const Float_t * AliESDZDC::GetZNCCentroid(int NspecnC) const
131 {
132   // Provide coordinates of centroid over ZN (side C) front face
133   Float_t CentrCoord[2];
134   Float_t x[4] = {-1.75, 1.75, -1.75, 1.75};
135   Float_t y[4] = {-1.75, -1.72, 1.75, 1.75};
136   Float_t NumX=0., NumY=0., Den=0.;
137   Float_t alpha=0.395, w;
138   for(Int_t i=1; i<5; i++){
139     w = TMath::Power(fZN1TowerEnergy[i], alpha);
140     NumX += x[i]*w;
141     NumY += y[i]*w;
142     Den += w;
143   }
144   if(Den!=0){
145     CentrCoord[0] = fCParCentr(NspecnC)*NumX/Den;
146     CentrCoord[1] = fCParCentr(NspecnC)*NumY/Den;
147   }
148   return CentrCoord;
149 }
150
151 //______________________________________________________________________________
152 const Float_t * AliESDZDC::GetZNACentroid(int NspecnA) const
153 {
154   // Provide coordinates of centroid over ZN (side A) front face
155   Float_t CentrCoord[2];
156   Float_t x[4] = {-1.75, 1.75, -1.75, 1.75};
157   Float_t y[4] = {-1.75, -1.72, 1.75, 1.75};
158   Float_t NumX=0., NumY=0., Den=0.;
159   Float_t alpha=0.395, w;
160   for(Int_t i=1; i<5; i++){
161     w = TMath::Power(fZN2TowerEnergy[i], alpha);
162     NumX += x[i]*w;
163     NumY += y[i]*w;
164     Den += w;
165   }
166   CentrCoord[0] = fCParCentr(NspecnA)*NumX/Den;
167   CentrCoord[1] = fCParCentr(NspecnA)*NumY/Den;
168   return CentrCoord;
169 }