]> git.uio.no Git - u/mrichter/AliRoot.git/blame - STEER/AliESDZDC.cxx
new task for direct photon identification tagging photons as decay or not
[u/mrichter/AliRoot.git] / STEER / AliESDZDC.cxx
CommitLineData
d5ebf00e 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
28ClassImp(AliESDZDC)
29
30//______________________________________________________________________________
31AliESDZDC::AliESDZDC() :
32 TObject(),
33 fZDCN1Energy(0),
34 fZDCP1Energy(0),
35 fZDCN2Energy(0),
36 fZDCP2Energy(0),
f6536de8 37 fZDCEMEnergy(0),
38 fZDCEMEnergy1(0),
2b6cdc43 39 fZDCParticipants(0),
5f0ec064 40 fZDCPartSideA(0),
41 fZDCPartSideC(0),
42 fImpactParameter(0),
43 fImpactParamSideA(0),
44 fImpactParamSideC(0),
45 fESDQuality(0)
d5ebf00e 46{
89291556 47 for(Int_t i=0; i<5; i++){
a85132e7 48 fZN1TowerEnergy[i] = fZN2TowerEnergy[i] = 0.;
49 fZP1TowerEnergy[i] = fZP2TowerEnergy[i] = 0.;
50 fZN1TowerEnergyLR[i] = fZN2TowerEnergyLR[i] = 0.;
51 fZP1TowerEnergyLR[i] = fZP2TowerEnergyLR[i] = 0.;
52 }
89291556 53 for(Int_t i=0; i<2; i++){
54 fZNACentrCoord[i] = fZNCCentrCoord[i] = 0.;
55 }
d5ebf00e 56}
57
2b6cdc43 58//______________________________________________________________________________
d5ebf00e 59AliESDZDC::AliESDZDC(const AliESDZDC& zdc) :
60 TObject(zdc),
61 fZDCN1Energy(zdc.fZDCN1Energy),
62 fZDCP1Energy(zdc.fZDCP1Energy),
63 fZDCN2Energy(zdc.fZDCN2Energy),
64 fZDCP2Energy(zdc.fZDCP2Energy),
f6536de8 65 fZDCEMEnergy(zdc.fZDCEMEnergy),
66 fZDCEMEnergy1(zdc.fZDCEMEnergy1),
2b6cdc43 67 fZDCParticipants(zdc.fZDCParticipants),
5f0ec064 68 fZDCPartSideA(zdc.fZDCPartSideA),
69 fZDCPartSideC(zdc.fZDCPartSideC),
70 fImpactParameter(zdc.fImpactParameter),
8c755c03 71 fImpactParamSideA(zdc.fImpactParamSideA),
72 fImpactParamSideC(zdc.fImpactParamSideC),
5f0ec064 73 fESDQuality(zdc.fESDQuality)
d5ebf00e 74{
75 // copy constructor
89291556 76 for(Int_t i=0; i<5; i++){
a85132e7 77 fZN1TowerEnergy[i] = zdc.fZN1TowerEnergy[i];
78 fZN2TowerEnergy[i] = zdc.fZN2TowerEnergy[i];
79 fZP1TowerEnergy[i] = zdc.fZP1TowerEnergy[i];
80 fZP2TowerEnergy[i] = zdc.fZP2TowerEnergy[i];
81 fZN1TowerEnergyLR[i] = zdc.fZN1TowerEnergyLR[i];
82 fZN2TowerEnergyLR[i] = zdc.fZN2TowerEnergyLR[i];
83 fZP1TowerEnergyLR[i] = zdc.fZP1TowerEnergyLR[i];
84 fZP2TowerEnergyLR[i] = zdc.fZP2TowerEnergyLR[i];
85 }
89291556 86 for(Int_t i=0; i<2; i++){
87 fZNACentrCoord[i] = zdc.fZNACentrCoord[i];
88 fZNCCentrCoord[i] = zdc.fZNCCentrCoord[i];
89 }
d5ebf00e 90}
91
2b6cdc43 92//______________________________________________________________________________
d5ebf00e 93AliESDZDC& AliESDZDC::operator=(const AliESDZDC&zdc)
94{
95 // assigment operator
96 if(this!=&zdc) {
97 TObject::operator=(zdc);
98 fZDCN1Energy = zdc.fZDCN1Energy;
99 fZDCP1Energy = zdc.fZDCP1Energy;
100 fZDCN2Energy = zdc.fZDCN2Energy;
101 fZDCP2Energy = zdc.fZDCP2Energy;
f6536de8 102 fZDCEMEnergy = zdc.fZDCEMEnergy;
103 fZDCEMEnergy1 = zdc.fZDCEMEnergy1;
a85132e7 104 for(Int_t i=0; i<5; i++){
7b4458a2 105 fZN1TowerEnergy[i] = zdc.fZN1TowerEnergy[i];
106 fZN2TowerEnergy[i] = zdc.fZN2TowerEnergy[i];
a85132e7 107 fZP1TowerEnergy[i] = zdc.fZP1TowerEnergy[i];
108 fZP2TowerEnergy[i] = zdc.fZP2TowerEnergy[i];
109 fZN1TowerEnergyLR[i] = zdc.fZN1TowerEnergyLR[i];
110 fZN2TowerEnergyLR[i] = zdc.fZN2TowerEnergyLR[i];
111 fZP1TowerEnergyLR[i] = zdc.fZP1TowerEnergyLR[i];
112 fZP2TowerEnergyLR[i] = zdc.fZP2TowerEnergyLR[i];
7b4458a2 113 }
5f0ec064 114 //
115 fZDCParticipants = zdc.fZDCParticipants;
116 fZDCPartSideA = zdc.fZDCPartSideA;
117 fZDCPartSideC = zdc.fZDCPartSideC;
118 fImpactParameter = zdc.fImpactParameter;
119 fImpactParamSideA = zdc.fImpactParamSideA;
120 fImpactParamSideC = zdc.fImpactParamSideC;
121 //
89291556 122 for(Int_t i=0; i<2; i++){
123 fZNACentrCoord[i] = zdc.fZNACentrCoord[i];
124 fZNCCentrCoord[i] = zdc.fZNCCentrCoord[i];
125 }
5f0ec064 126 //
127 fESDQuality = zdc.fESDQuality;
d5ebf00e 128 }
129 return *this;
130}
131
2b6cdc43 132//______________________________________________________________________________
732a24fe 133void AliESDZDC::Copy(TObject &obj) const {
134
135 // this overwrites the virtual TOBject::Copy()
136 // to allow run time copying without casting
137 // in AliESDEvent
138
139 if(this==&obj)return;
140 AliESDZDC *robj = dynamic_cast<AliESDZDC*>(&obj);
141 if(!robj)return; // not an AliESDZDC
142 *robj = *this;
143
144}
145
d5ebf00e 146
147//______________________________________________________________________________
148void AliESDZDC::Reset()
149{
150 // reset all data members
151 fZDCN1Energy=0;
152 fZDCP1Energy=0;
153 fZDCN2Energy=0;
154 fZDCP2Energy=0;
f6536de8 155 fZDCEMEnergy=0;
156 fZDCEMEnergy1=0;
89291556 157 for(Int_t i=0; i<5; i++){
a85132e7 158 fZN1TowerEnergy[i] = fZN2TowerEnergy[i] = 0.;
159 fZP1TowerEnergy[i] = fZP2TowerEnergy[i] = 0.;
160 fZN1TowerEnergyLR[i] = fZN2TowerEnergyLR[i] = 0.;
161 fZP1TowerEnergyLR[i] = fZP2TowerEnergyLR[i] = 0.;
162 }
5f0ec064 163 fZDCParticipants=0;
164 fZDCPartSideA=0;
165 fZDCPartSideC=0;
166 fImpactParameter=0;
167 fImpactParamSideA=0;
168 fImpactParamSideC=0;
89291556 169 for(Int_t i=0; i<2; i++){
170 fZNACentrCoord[i] = fZNCCentrCoord[i] = 0.;
171 }
5f0ec064 172 fESDQuality=0;
d5ebf00e 173}
174
175//______________________________________________________________________________
176void AliESDZDC::Print(const Option_t *) const
177{
a85132e7 178 // Print ESD for the ZDC
5f0ec064 179 printf("\n \t E_{ZNC} = %f TeV, E_{ZPC} = %f TeV, E_{ZNA} = %f TeV, E_{ZPA} = %f TeV,"
180 " E_{ZEM} = %f GeV, Npart = %d, b = %1.2f fm\n",
181 fZDCN1Energy/1000.,fZDCP1Energy/1000.,fZDCN2Energy/1000.,fZDCP2Energy/1000.,
182 fZDCEMEnergy+fZDCEMEnergy1, fZDCParticipants,fImpactParameter);
d5ebf00e 183}
184
d1d3e36b 185//______________________________________________________________________________
2b6cdc43 186Double32_t * AliESDZDC::GetZNCCentroid()
d1d3e36b 187{
188 // Provide coordinates of centroid over ZN (side C) front face
d1d3e36b 189 Float_t x[4] = {-1.75, 1.75, -1.75, 1.75};
5f0ec064 190 Float_t y[4] = {-1.75, -1.75, 1.75, 1.75};
48486c12 191 Float_t numX=0., numY=0., den=0.;
5f0ec064 192 Float_t c, alpha=0.395, w;
5f0ec064 193 //
2b6cdc43 194 for(Int_t i=0; i<4; i++){
3f7d0b78 195 if(fZN1TowerEnergy[i+1]<0.) fZN1TowerEnergy[i+1]=0.;
2b6cdc43 196 w = TMath::Power(fZN1TowerEnergy[i+1], alpha);
48486c12 197 numX += x[i]*w;
198 numY += y[i]*w;
199 den += w;
d1d3e36b 200 }
48486c12 201 if(den!=0){
5f0ec064 202 // ATTENTION! Needs to be changed if E_beam(A-A) != 2.76 A TeV !!!!
e955aeff 203 Float_t nSpecn = fZDCN1Energy/2760.;
204 c = 1.89358-0.71262/(nSpecn+0.71789);
5f0ec064 205 fZNCCentrCoord[0] = c*numX/den;
206 fZNCCentrCoord[1] = c*numY/den;
d1d3e36b 207 }
89291556 208 return fZNCCentrCoord;
d1d3e36b 209}
7b4458a2 210
d1d3e36b 211//______________________________________________________________________________
2b6cdc43 212Double32_t * AliESDZDC::GetZNACentroid()
d1d3e36b 213{
214 // Provide coordinates of centroid over ZN (side A) front face
d1d3e36b 215 Float_t x[4] = {-1.75, 1.75, -1.75, 1.75};
5f0ec064 216 Float_t y[4] = {-1.75, -1.75, 1.75, 1.75};
48486c12 217 Float_t numX=0., numY=0., den=0.;
5f0ec064 218 Float_t c, alpha=0.395, w;
e955aeff 219
2b6cdc43 220 for(Int_t i=0; i<4; i++){
e955aeff 221 if(fZN2TowerEnergy[i+1]<0.) fZN2TowerEnergy[i+1]=0.;
222 w = TMath::Power(fZN2TowerEnergy[i+1], alpha);
223 numX += x[i]*w;
224 numY += y[i]*w;
225 den += w;
d1d3e36b 226 }
ce099621 227 //
48486c12 228 if(den!=0){
5f0ec064 229 // ATTENTION! Needs to be changed if E_beam(A-A) != 2.76 A TeV !!!!
e955aeff 230 Float_t nSpecn = fZDCN2Energy/2760.;
231 c = 1.89358-0.71262/(nSpecn+0.71789);
5f0ec064 232 fZNACentrCoord[0] = c*numX/den;
233 fZNACentrCoord[1] = c*numY/den;
ce099621 234 }
89291556 235 return fZNACentrCoord;
d1d3e36b 236}