ClassImp(AliESDZDC)
+Float_t funCParCentr(const Int_t n) {return 1.8936-0.7126/(n + 0.7179);}
+
//______________________________________________________________________________
AliESDZDC::AliESDZDC() :
TObject(),
fZDCN2Energy(0),
fZDCP2Energy(0),
fZDCEMEnergy(0),
+ fZDCEMEnergy1(0),
fZDCParticipants(0)
{
- for(int i = 0;i<4;i++) fZN1TowerEnergy[i] = fZN2TowerEnergy[i] = 0.;
+ for(Int_t i=0; i<5; i++){
+ fZN1TowerEnergy[i] = fZN2TowerEnergy[i] = 0.;
+ fZP1TowerEnergy[i] = fZP2TowerEnergy[i] = 0.;
+ fZN1TowerEnergyLR[i] = fZN2TowerEnergyLR[i] = 0.;
+ fZP1TowerEnergyLR[i] = fZP2TowerEnergyLR[i] = 0.;
+ }
+ for(Int_t i=0; i<2; i++){
+ fZNACentrCoord[i] = fZNCCentrCoord[i] = 0.;
+ }
}
AliESDZDC::AliESDZDC(const AliESDZDC& zdc) :
fZDCN2Energy(zdc.fZDCN2Energy),
fZDCP2Energy(zdc.fZDCP2Energy),
fZDCEMEnergy(zdc.fZDCEMEnergy),
+ fZDCEMEnergy1(zdc.fZDCEMEnergy1),
fZDCParticipants(zdc.fZDCParticipants)
{
// copy constructor
+ for(Int_t i=0; i<5; i++){
+ fZN1TowerEnergy[i] = zdc.fZN1TowerEnergy[i];
+ fZN2TowerEnergy[i] = zdc.fZN2TowerEnergy[i];
+ fZP1TowerEnergy[i] = zdc.fZP1TowerEnergy[i];
+ fZP2TowerEnergy[i] = zdc.fZP2TowerEnergy[i];
+ fZN1TowerEnergyLR[i] = zdc.fZN1TowerEnergyLR[i];
+ fZN2TowerEnergyLR[i] = zdc.fZN2TowerEnergyLR[i];
+ fZP1TowerEnergyLR[i] = zdc.fZP1TowerEnergyLR[i];
+ fZP2TowerEnergyLR[i] = zdc.fZP2TowerEnergyLR[i];
+ }
+ for(Int_t i=0; i<2; i++){
+ fZNACentrCoord[i] = zdc.fZNACentrCoord[i];
+ fZNCCentrCoord[i] = zdc.fZNCCentrCoord[i];
+ }
}
AliESDZDC& AliESDZDC::operator=(const AliESDZDC&zdc)
fZDCP1Energy = zdc.fZDCP1Energy;
fZDCN2Energy = zdc.fZDCN2Energy;
fZDCP2Energy = zdc.fZDCP2Energy;
- fZDCEMEnergy = zdc.fZDCEMEnergy;
fZDCParticipants = zdc.fZDCParticipants;
- for(Int_t i=0; i<4; i++){
+ fZDCEMEnergy = zdc.fZDCEMEnergy;
+ fZDCEMEnergy1 = zdc.fZDCEMEnergy1;
+ for(Int_t i=0; i<5; i++){
fZN1TowerEnergy[i] = zdc.fZN1TowerEnergy[i];
fZN2TowerEnergy[i] = zdc.fZN2TowerEnergy[i];
+ fZP1TowerEnergy[i] = zdc.fZP1TowerEnergy[i];
+ fZP2TowerEnergy[i] = zdc.fZP2TowerEnergy[i];
+ fZN1TowerEnergyLR[i] = zdc.fZN1TowerEnergyLR[i];
+ fZN2TowerEnergyLR[i] = zdc.fZN2TowerEnergyLR[i];
+ fZP1TowerEnergyLR[i] = zdc.fZP1TowerEnergyLR[i];
+ fZP2TowerEnergyLR[i] = zdc.fZP2TowerEnergyLR[i];
+ }
+ for(Int_t i=0; i<2; i++){
+ fZNACentrCoord[i] = zdc.fZNACentrCoord[i];
+ fZNCCentrCoord[i] = zdc.fZNCCentrCoord[i];
}
}
return *this;
}
+void AliESDZDC::Copy(TObject &obj) const {
+
+ // this overwrites the virtual TOBject::Copy()
+ // to allow run time copying without casting
+ // in AliESDEvent
+
+ if(this==&obj)return;
+ AliESDZDC *robj = dynamic_cast<AliESDZDC*>(&obj);
+ if(!robj)return; // not an AliESDZDC
+ *robj = *this;
+
+}
+
//______________________________________________________________________________
void AliESDZDC::Reset()
fZDCP1Energy=0;
fZDCN2Energy=0;
fZDCP2Energy=0;
- fZDCEMEnergy=0;
fZDCParticipants=0;
- for(int i=0; i<4; i++) fZN1TowerEnergy[i] = fZN2TowerEnergy[i] = 0.;
-
+ fZDCEMEnergy=0;
+ fZDCEMEnergy1=0;
+ for(Int_t i=0; i<5; i++){
+ fZN1TowerEnergy[i] = fZN2TowerEnergy[i] = 0.;
+ fZP1TowerEnergy[i] = fZP2TowerEnergy[i] = 0.;
+ fZN1TowerEnergyLR[i] = fZN2TowerEnergyLR[i] = 0.;
+ fZP1TowerEnergyLR[i] = fZP2TowerEnergyLR[i] = 0.;
+ }
+ for(Int_t i=0; i<2; i++){
+ fZNACentrCoord[i] = fZNCCentrCoord[i] = 0.;
+ }
}
//______________________________________________________________________________
void AliESDZDC::Print(const Option_t *) const
{
+ // Print ESD for the ZDC
+ printf("\n \t ZN1Energy = %f TeV, ZP1Energy = %f TeV, ZN2Energy = %f TeV,"
+ " ZP2Energy = %f, Nparticipants = %d\n",
+ fZDCN1Energy,fZDCP1Energy,fZDCN2Energy,fZDCP2Energy,fZDCParticipants);
}
+//______________________________________________________________________________
+Double32_t * AliESDZDC::GetZNCCentroid(Int_t NspecnC)
+{
+ // Provide coordinates of centroid over ZN (side C) front face
+ Float_t x[4] = {-1.75, 1.75, -1.75, 1.75};
+ Float_t y[4] = {-1.75, -1.72, 1.75, 1.75};
+ Float_t NumX=0., NumY=0., Den=0.;
+ Float_t alpha=0.395, w;
+ for(Int_t i=1; i<5; i++){
+ w = TMath::Power(fZN1TowerEnergy[i], alpha);
+ NumX += x[i]*w;
+ NumY += y[i]*w;
+ Den += w;
+ }
+ if(Den!=0){
+ fZNCCentrCoord[0] = funCParCentr(NspecnC)*NumX/Den;
+ fZNCCentrCoord[1] = funCParCentr(NspecnC)*NumY/Den;
+ }
+ return fZNCCentrCoord;
+}
+//______________________________________________________________________________
+Double32_t * AliESDZDC::GetZNACentroid(Int_t NspecnA)
+{
+ // Provide coordinates of centroid over ZN (side A) front face
+ Float_t x[4] = {-1.75, 1.75, -1.75, 1.75};
+ Float_t y[4] = {-1.75, -1.72, 1.75, 1.75};
+ Float_t NumX=0., NumY=0., Den=0.;
+ Float_t alpha=0.395, w;
+ for(Int_t i=1; i<5; i++){
+ w = TMath::Power(fZN2TowerEnergy[i], alpha);
+ NumX += x[i]*w;
+ NumY += y[i]*w;
+ Den += w;
+ }
+ //
+ if(Den!=0){
+ fZNACentrCoord[0] = funCParCentr(NspecnA)*NumX/Den;
+ fZNACentrCoord[1] = funCParCentr(NspecnA)*NumY/Den;
+ }
+ return fZNACentrCoord;
+}