ROOT logo
/**************************************************************************
 * Copyright(c) 1998-2007, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

//-------------------------------------------------------------------------
//     Class for AOD ZDC data
//     Author: Chiara Oppedisano
//     Chiara.Oppedisano@cern.ch March 2011
//-------------------------------------------------------------------------

#include <TMath.h>
#include "AliAODZDC.h"

ClassImp(AliAODZDC)

AliAODZDC::AliAODZDC() :
  AliVZDC(),
  fZNCEnergy(-999.),
  fZNAEnergy(-999.),
  fZPCEnergy(-999.),
  fZPAEnergy(-999.),
  fZEM1Energy(0.),
  fZEM2Energy(0.),
  fZDCParticipants(0),
  fZDCPartSideA(0),
  fZDCPartSideC(0),
  fImpactParameter(0),
  fImpactParamSideA(0),
  fImpactParamSideC(0),
  fZDCTDCSum(0),	 
  fZDCTDCDifference(0),
  fZNCTDC(-999.),
  fZNATDC(-999.)
{
// Default constructor
  for(Int_t i=0; i<5; i++){
    fZNCTowerEnergy[i] = fZNATowerEnergy[i] = 0.;
    fZPCTowerEnergy[i] = fZPATowerEnergy[i] = 0.;
    fZNCTowerEnergyLR[i] = fZNATowerEnergyLR[i] = 0.;
  }
}

//__________________________________________________________________________
AliAODZDC::AliAODZDC(const AliAODZDC &zdcAOD) :
  AliVZDC(zdcAOD),
  fZNCEnergy(zdcAOD.fZNCEnergy),
  fZNAEnergy(zdcAOD.fZNAEnergy),
  fZPCEnergy(zdcAOD.fZPCEnergy),
  fZPAEnergy(zdcAOD.fZPAEnergy),
  fZEM1Energy(zdcAOD.fZEM1Energy),
  fZEM2Energy(zdcAOD.fZEM2Energy),
  fZDCParticipants(zdcAOD.fZDCParticipants),
  fZDCPartSideA(zdcAOD.fZDCPartSideA),
  fZDCPartSideC(zdcAOD.fZDCPartSideC),
  fImpactParameter(zdcAOD.fImpactParameter),
  fImpactParamSideA(zdcAOD.fImpactParamSideA),
  fImpactParamSideC(zdcAOD.fImpactParamSideC),
  fZDCTDCSum(zdcAOD.fZDCTDCSum),	 
  fZDCTDCDifference(zdcAOD.fZDCTDCDifference),
  fZNCTDC(zdcAOD.fZNCTDC),
  fZNATDC(zdcAOD.fZNATDC)
{
// Constructor
  for(Int_t i=0; i<5; i++){
    fZNCTowerEnergy[i] = zdcAOD.fZNCTowerEnergy[i];
    fZNATowerEnergy[i] = zdcAOD.fZNATowerEnergy[i];
    fZPCTowerEnergy[i] = zdcAOD.fZPCTowerEnergy[i];
    fZPATowerEnergy[i] = zdcAOD.fZPATowerEnergy[i];
    fZNCTowerEnergyLR[i] = zdcAOD.fZNCTowerEnergyLR[i];
    fZNATowerEnergyLR[i] = zdcAOD.fZNATowerEnergyLR[i];
  }
}

//__________________________________________________________________________
AliAODZDC& AliAODZDC::operator=(const AliAODZDC& zdcAOD)
{
  // Assignment operator
  //
  if(this!=&zdcAOD) {
    TObject::operator=(zdcAOD);
    fZNCEnergy  = zdcAOD.fZNCEnergy;
    fZNAEnergy  = zdcAOD.fZNAEnergy;
    fZPCEnergy  = zdcAOD.fZPCEnergy;
    fZPAEnergy  = zdcAOD.fZPAEnergy;
    fZEM1Energy = zdcAOD.fZEM1Energy;
    fZEM2Energy = zdcAOD.fZEM2Energy;
    for(Int_t i=0; i<5; i++){
       fZNCTowerEnergy[i] = zdcAOD.fZNCTowerEnergy[i];
       fZNATowerEnergy[i] = zdcAOD.fZNATowerEnergy[i];
       fZPCTowerEnergy[i] = zdcAOD.fZPCTowerEnergy[i];
       fZPATowerEnergy[i] = zdcAOD.fZPATowerEnergy[i];
       fZNCTowerEnergyLR[i] = zdcAOD.fZNCTowerEnergyLR[i];
       fZNATowerEnergyLR[i] = zdcAOD.fZNATowerEnergyLR[i];
    }
    //
    fZDCParticipants = zdcAOD.fZDCParticipants;
    fZDCPartSideA = zdcAOD.fZDCPartSideA;
    fZDCPartSideC = zdcAOD.fZDCPartSideC;
    fImpactParameter = zdcAOD.fImpactParameter;
    fImpactParamSideA = zdcAOD.fImpactParamSideA;
    fImpactParamSideC = zdcAOD.fImpactParamSideC;
    //
    //for(Int_t i=0; i<2; i++){
    //     fZNACentrCoord[i] = zdcAOD.fZNACentrCoord[i];
    //     fZNCCentrCoord[i] = zdcAOD.fZNCCentrCoord[i];
    //}
    //
    fZDCTDCSum = zdcAOD.fZDCTDCSum;    
    fZDCTDCDifference = zdcAOD.fZDCTDCDifference;
    fZNCTDC = zdcAOD.fZNCTDC;
    fZNATDC = zdcAOD.fZNATDC;

  } 
  return *this;
}

//______________________________________________________________________________
Double_t  AliAODZDC::GetZNCEnergy() const
{
// Return ZNC energy
    if (fZNCEnergy < 0.) {
	fZNCEnergy = 0.;
	for(Int_t i=0; i<5; i++) fZNCEnergy += fZNCTowerEnergy[i];
    }
    return fZNCEnergy;
}

//______________________________________________________________________________
Double_t  AliAODZDC::GetZNAEnergy() const
{
// Return ZNA Energy
    if (fZNAEnergy < 0.) {
	fZNAEnergy = 0.;
	for(Int_t i=0; i<5; i++) fZNAEnergy += fZNATowerEnergy[i];
    }
    return fZNAEnergy;
}

//______________________________________________________________________________
Double_t  AliAODZDC::GetZPCEnergy() const
{
// Return ZPC Energy
    if (fZPCEnergy < 0.) {
	fZPCEnergy = 0.;
	for(Int_t i=0; i<5; i++) fZPCEnergy += fZPCTowerEnergy[i];
    }
    return fZPCEnergy;
}

//______________________________________________________________________________
Double_t  AliAODZDC::GetZPAEnergy() const
{
// Return ZPA Energy
    if (fZPAEnergy < 0.) {
	fZPAEnergy = 0.;
	for(Int_t i=0; i<5; i++) fZPAEnergy += fZPATowerEnergy[i];
    }
    return fZPAEnergy;
}

//______________________________________________________________________________
void  AliAODZDC::SetZNCTowers(const Double_t value[5], const Double_t valueLR[5])
{
  // Sets ZNC towers
  for(Int_t i=0; i<5; i++){
    fZNCTowerEnergy[i] = value[i];
    fZNCTowerEnergyLR[i] = valueLR[i];
  }
}

//______________________________________________________________________________
void  AliAODZDC::SetZNATowers(const Double_t value[5], const Double_t valueLR[5])
{
  // Sets ZNA towers
  for(Int_t i=0; i<5; i++){
    fZNATowerEnergy[i] = value[i];
    fZNATowerEnergyLR[i] = valueLR[i];
  }
}

//______________________________________________________________________________
Bool_t AliAODZDC::GetZNCentroidInPbPb(Float_t beamEne, Double_t centrZNC[2], Double_t centrZNA[2]) 
{
  // Provides coordinates of centroid over ZN (side C) front face in PbPb
   if(beamEne==0){
    printf(" ZDC centroid in PbPb can't be calculated with E_beam = 0 !!!\n");
    //for(Int_t jj=0; jj<2; jj++) fZNCCentrCoord[jj] = 999.;
    return kFALSE;
  }

  const Float_t x[4] = {-1.75, 1.75, -1.75, 1.75};
  const Float_t y[4] = {-1.75, -1.75, 1.75, 1.75};
  const Float_t alpha=0.395;
  Float_t numXZNC=0., numYZNC=0., denZNC=0., cZNC, wZNC; 
  Float_t numXZNA=0., numYZNA=0., denZNA=0., cZNA, wZNA; 
  Float_t zncEnergy=0., znaEnergy=0.;
  //
  for(Int_t i=0; i<5; i++){
    zncEnergy += fZNCTowerEnergy[i];
    znaEnergy += fZNATowerEnergy[i];
  }
  for(Int_t i=0; i<4; i++){
    if(fZNCTowerEnergy[i+1]>0.) {
      wZNC = TMath::Power(fZNCTowerEnergy[i+1], alpha);
      numXZNC += x[i]*wZNC;
      numYZNC += y[i]*wZNC;
      denZNC += wZNC;
    }
    if(fZNATowerEnergy[i+1]>0.) {
      wZNA = TMath::Power(fZNATowerEnergy[i+1], alpha);
      numXZNA += x[i]*wZNA;
      numYZNA += y[i]*wZNA;
      denZNA += wZNA;
    }
  }
  //
  if(denZNC!=0){
    Float_t nSpecnC = zncEnergy/beamEne;
    cZNC = 1.89358-0.71262/(nSpecnC+0.71789);
    centrZNC[0] = cZNC*numXZNC/denZNC;
    centrZNC[1] = cZNC*numYZNC/denZNC;
  } 
  else{
    centrZNC[0] = centrZNC[1] = 999.;
  }
  if(denZNA!=0){
    Float_t nSpecnA = znaEnergy/beamEne;
    cZNA = 1.89358-0.71262/(nSpecnA+0.71789);
    centrZNA[0] = cZNA*numXZNA/denZNA;
    centrZNA[1] = cZNA*numYZNA/denZNA;
  } 
  else{
    centrZNA[0] = centrZNA[1] = 999.;
  }
 
  
  return kTRUE;
}

//______________________________________________________________________________
Bool_t AliAODZDC::GetZNCentroidInpp(Double_t centrZNC[2], Double_t centrZNA[2]) 
{
  // Provides coordinates of centroid over ZN (side C) front face in pp
  const Float_t x[4] = {-1.75, 1.75, -1.75, 1.75};
  const Float_t y[4] = {-1.75, -1.75, 1.75, 1.75};
  const Float_t alpha=0.5;
  Float_t numXZNC=0., numYZNC=0., denZNC=0., wZNC; 
  Float_t numXZNA=0., numYZNA=0., denZNA=0., wZNA; 
  //
  for(Int_t i=0; i<4; i++){
    if(fZNCTowerEnergy[i+1]>0.) {
      wZNC = TMath::Power(fZNCTowerEnergy[i+1], alpha);
      numXZNC += x[i]*wZNC;
      numYZNC += y[i]*wZNC;
      denZNC += wZNC;
    }
    if(fZNATowerEnergy[i+1]>0.) {
      wZNA = TMath::Power(fZNATowerEnergy[i+1], alpha);
      numXZNA += x[i]*wZNA;
      numYZNA += y[i]*wZNA;
      denZNA += wZNA;
    }
  }
  //
  if(denZNC!=0){
    centrZNC[0] = numXZNC/denZNC;
    centrZNC[1] = numYZNC/denZNC;
  } 
  else{
    centrZNC[0] = centrZNC[1] = 999.;
  }
  if(denZNA!=0){
    centrZNA[0] = numXZNA/denZNA;
    centrZNA[1] = numYZNA/denZNA;
  } 
  else{
    centrZNA[0] = centrZNA[1] = 999.;
  }
  
  return kTRUE;
}
 AliAODZDC.cxx:1
 AliAODZDC.cxx:2
 AliAODZDC.cxx:3
 AliAODZDC.cxx:4
 AliAODZDC.cxx:5
 AliAODZDC.cxx:6
 AliAODZDC.cxx:7
 AliAODZDC.cxx:8
 AliAODZDC.cxx:9
 AliAODZDC.cxx:10
 AliAODZDC.cxx:11
 AliAODZDC.cxx:12
 AliAODZDC.cxx:13
 AliAODZDC.cxx:14
 AliAODZDC.cxx:15
 AliAODZDC.cxx:16
 AliAODZDC.cxx:17
 AliAODZDC.cxx:18
 AliAODZDC.cxx:19
 AliAODZDC.cxx:20
 AliAODZDC.cxx:21
 AliAODZDC.cxx:22
 AliAODZDC.cxx:23
 AliAODZDC.cxx:24
 AliAODZDC.cxx:25
 AliAODZDC.cxx:26
 AliAODZDC.cxx:27
 AliAODZDC.cxx:28
 AliAODZDC.cxx:29
 AliAODZDC.cxx:30
 AliAODZDC.cxx:31
 AliAODZDC.cxx:32
 AliAODZDC.cxx:33
 AliAODZDC.cxx:34
 AliAODZDC.cxx:35
 AliAODZDC.cxx:36
 AliAODZDC.cxx:37
 AliAODZDC.cxx:38
 AliAODZDC.cxx:39
 AliAODZDC.cxx:40
 AliAODZDC.cxx:41
 AliAODZDC.cxx:42
 AliAODZDC.cxx:43
 AliAODZDC.cxx:44
 AliAODZDC.cxx:45
 AliAODZDC.cxx:46
 AliAODZDC.cxx:47
 AliAODZDC.cxx:48
 AliAODZDC.cxx:49
 AliAODZDC.cxx:50
 AliAODZDC.cxx:51
 AliAODZDC.cxx:52
 AliAODZDC.cxx:53
 AliAODZDC.cxx:54
 AliAODZDC.cxx:55
 AliAODZDC.cxx:56
 AliAODZDC.cxx:57
 AliAODZDC.cxx:58
 AliAODZDC.cxx:59
 AliAODZDC.cxx:60
 AliAODZDC.cxx:61
 AliAODZDC.cxx:62
 AliAODZDC.cxx:63
 AliAODZDC.cxx:64
 AliAODZDC.cxx:65
 AliAODZDC.cxx:66
 AliAODZDC.cxx:67
 AliAODZDC.cxx:68
 AliAODZDC.cxx:69
 AliAODZDC.cxx:70
 AliAODZDC.cxx:71
 AliAODZDC.cxx:72
 AliAODZDC.cxx:73
 AliAODZDC.cxx:74
 AliAODZDC.cxx:75
 AliAODZDC.cxx:76
 AliAODZDC.cxx:77
 AliAODZDC.cxx:78
 AliAODZDC.cxx:79
 AliAODZDC.cxx:80
 AliAODZDC.cxx:81
 AliAODZDC.cxx:82
 AliAODZDC.cxx:83
 AliAODZDC.cxx:84
 AliAODZDC.cxx:85
 AliAODZDC.cxx:86
 AliAODZDC.cxx:87
 AliAODZDC.cxx:88
 AliAODZDC.cxx:89
 AliAODZDC.cxx:90
 AliAODZDC.cxx:91
 AliAODZDC.cxx:92
 AliAODZDC.cxx:93
 AliAODZDC.cxx:94
 AliAODZDC.cxx:95
 AliAODZDC.cxx:96
 AliAODZDC.cxx:97
 AliAODZDC.cxx:98
 AliAODZDC.cxx:99
 AliAODZDC.cxx:100
 AliAODZDC.cxx:101
 AliAODZDC.cxx:102
 AliAODZDC.cxx:103
 AliAODZDC.cxx:104
 AliAODZDC.cxx:105
 AliAODZDC.cxx:106
 AliAODZDC.cxx:107
 AliAODZDC.cxx:108
 AliAODZDC.cxx:109
 AliAODZDC.cxx:110
 AliAODZDC.cxx:111
 AliAODZDC.cxx:112
 AliAODZDC.cxx:113
 AliAODZDC.cxx:114
 AliAODZDC.cxx:115
 AliAODZDC.cxx:116
 AliAODZDC.cxx:117
 AliAODZDC.cxx:118
 AliAODZDC.cxx:119
 AliAODZDC.cxx:120
 AliAODZDC.cxx:121
 AliAODZDC.cxx:122
 AliAODZDC.cxx:123
 AliAODZDC.cxx:124
 AliAODZDC.cxx:125
 AliAODZDC.cxx:126
 AliAODZDC.cxx:127
 AliAODZDC.cxx:128
 AliAODZDC.cxx:129
 AliAODZDC.cxx:130
 AliAODZDC.cxx:131
 AliAODZDC.cxx:132
 AliAODZDC.cxx:133
 AliAODZDC.cxx:134
 AliAODZDC.cxx:135
 AliAODZDC.cxx:136
 AliAODZDC.cxx:137
 AliAODZDC.cxx:138
 AliAODZDC.cxx:139
 AliAODZDC.cxx:140
 AliAODZDC.cxx:141
 AliAODZDC.cxx:142
 AliAODZDC.cxx:143
 AliAODZDC.cxx:144
 AliAODZDC.cxx:145
 AliAODZDC.cxx:146
 AliAODZDC.cxx:147
 AliAODZDC.cxx:148
 AliAODZDC.cxx:149
 AliAODZDC.cxx:150
 AliAODZDC.cxx:151
 AliAODZDC.cxx:152
 AliAODZDC.cxx:153
 AliAODZDC.cxx:154
 AliAODZDC.cxx:155
 AliAODZDC.cxx:156
 AliAODZDC.cxx:157
 AliAODZDC.cxx:158
 AliAODZDC.cxx:159
 AliAODZDC.cxx:160
 AliAODZDC.cxx:161
 AliAODZDC.cxx:162
 AliAODZDC.cxx:163
 AliAODZDC.cxx:164
 AliAODZDC.cxx:165
 AliAODZDC.cxx:166
 AliAODZDC.cxx:167
 AliAODZDC.cxx:168
 AliAODZDC.cxx:169
 AliAODZDC.cxx:170
 AliAODZDC.cxx:171
 AliAODZDC.cxx:172
 AliAODZDC.cxx:173
 AliAODZDC.cxx:174
 AliAODZDC.cxx:175
 AliAODZDC.cxx:176
 AliAODZDC.cxx:177
 AliAODZDC.cxx:178
 AliAODZDC.cxx:179
 AliAODZDC.cxx:180
 AliAODZDC.cxx:181
 AliAODZDC.cxx:182
 AliAODZDC.cxx:183
 AliAODZDC.cxx:184
 AliAODZDC.cxx:185
 AliAODZDC.cxx:186
 AliAODZDC.cxx:187
 AliAODZDC.cxx:188
 AliAODZDC.cxx:189
 AliAODZDC.cxx:190
 AliAODZDC.cxx:191
 AliAODZDC.cxx:192
 AliAODZDC.cxx:193
 AliAODZDC.cxx:194
 AliAODZDC.cxx:195
 AliAODZDC.cxx:196
 AliAODZDC.cxx:197
 AliAODZDC.cxx:198
 AliAODZDC.cxx:199
 AliAODZDC.cxx:200
 AliAODZDC.cxx:201
 AliAODZDC.cxx:202
 AliAODZDC.cxx:203
 AliAODZDC.cxx:204
 AliAODZDC.cxx:205
 AliAODZDC.cxx:206
 AliAODZDC.cxx:207
 AliAODZDC.cxx:208
 AliAODZDC.cxx:209
 AliAODZDC.cxx:210
 AliAODZDC.cxx:211
 AliAODZDC.cxx:212
 AliAODZDC.cxx:213
 AliAODZDC.cxx:214
 AliAODZDC.cxx:215
 AliAODZDC.cxx:216
 AliAODZDC.cxx:217
 AliAODZDC.cxx:218
 AliAODZDC.cxx:219
 AliAODZDC.cxx:220
 AliAODZDC.cxx:221
 AliAODZDC.cxx:222
 AliAODZDC.cxx:223
 AliAODZDC.cxx:224
 AliAODZDC.cxx:225
 AliAODZDC.cxx:226
 AliAODZDC.cxx:227
 AliAODZDC.cxx:228
 AliAODZDC.cxx:229
 AliAODZDC.cxx:230
 AliAODZDC.cxx:231
 AliAODZDC.cxx:232
 AliAODZDC.cxx:233
 AliAODZDC.cxx:234
 AliAODZDC.cxx:235
 AliAODZDC.cxx:236
 AliAODZDC.cxx:237
 AliAODZDC.cxx:238
 AliAODZDC.cxx:239
 AliAODZDC.cxx:240
 AliAODZDC.cxx:241
 AliAODZDC.cxx:242
 AliAODZDC.cxx:243
 AliAODZDC.cxx:244
 AliAODZDC.cxx:245
 AliAODZDC.cxx:246
 AliAODZDC.cxx:247
 AliAODZDC.cxx:248
 AliAODZDC.cxx:249
 AliAODZDC.cxx:250
 AliAODZDC.cxx:251
 AliAODZDC.cxx:252
 AliAODZDC.cxx:253
 AliAODZDC.cxx:254
 AliAODZDC.cxx:255
 AliAODZDC.cxx:256
 AliAODZDC.cxx:257
 AliAODZDC.cxx:258
 AliAODZDC.cxx:259
 AliAODZDC.cxx:260
 AliAODZDC.cxx:261
 AliAODZDC.cxx:262
 AliAODZDC.cxx:263
 AliAODZDC.cxx:264
 AliAODZDC.cxx:265
 AliAODZDC.cxx:266
 AliAODZDC.cxx:267
 AliAODZDC.cxx:268
 AliAODZDC.cxx:269
 AliAODZDC.cxx:270
 AliAODZDC.cxx:271
 AliAODZDC.cxx:272
 AliAODZDC.cxx:273
 AliAODZDC.cxx:274
 AliAODZDC.cxx:275
 AliAODZDC.cxx:276
 AliAODZDC.cxx:277
 AliAODZDC.cxx:278
 AliAODZDC.cxx:279
 AliAODZDC.cxx:280
 AliAODZDC.cxx:281
 AliAODZDC.cxx:282
 AliAODZDC.cxx:283
 AliAODZDC.cxx:284
 AliAODZDC.cxx:285
 AliAODZDC.cxx:286
 AliAODZDC.cxx:287
 AliAODZDC.cxx:288
 AliAODZDC.cxx:289
 AliAODZDC.cxx:290
 AliAODZDC.cxx:291
 AliAODZDC.cxx:292