#include "AliZDCReco.h"
ClassImp(AliZDCReco)
AliZDCReco::AliZDCReco() :
TObject(),
fNDetSpecNSideA(0),
fNDetSpecPSideA(0),
fNDetSpecNSideC(0),
fNDetSpecPSideC(0),
fNTrueSpectators(0),
fNTrueSpecSideA(0),
fNTrueSpecSideC(0),
fNParticipants(0),
fNPartSideA(0),
fNPartSideC(0),
fImpParameter(0),
fImpParSideA(0),
fImpParSideC(0),
fRecoFlag(0x0),
fEnergyFlag(kFALSE),
fIsScalerOn(kFALSE)
{
for(Int_t i=0; i<10; i++){
fZN1EnTow[i] = fZP1EnTow[i] = fZN2EnTow[i] = fZP2EnTow[i] = 0.;
if(i<2){
fZN1Energy[i] = fZP1Energy[i] = fZN2Energy[i] = fZP2Energy[i] = 0.;
fZEM1signal[i] = fZEM2signal[i] = 0.;
fPMRef1[i] = fPMRef2[i] = 0.;
}
}
for(Int_t i=0; i<32; i++){
fZDCScaler[i] = 0;
for(Int_t ij=0; ij<4; ij++) fZDCTDCData[i][ij] = 0;
}
}
AliZDCReco::AliZDCReco(
Float_t* ezn1, Float_t* ezp1, Float_t* ezn2, Float_t* ezp2,
Float_t* ezn1tow, Float_t* ezp1tow, Float_t* ezn2tow, Float_t* ezp2tow,
Float_t* ezem1, Float_t* ezem2, Float_t* ref1, Float_t* ref2,
Int_t detspnSideA, Int_t detsppSideA, Int_t detspnSideC, Int_t detsppSideC,
Int_t trsp, Int_t trspSideA,Int_t trspSideC,
Int_t npart, Int_t npartSideA, Int_t npartSideC,
Float_t b, Float_t bSideA, Float_t bSideC,
UInt_t recoFlag, Bool_t energyFlag, Bool_t scalerOn,
UInt_t* scaler, Int_t tdcData[32][4]) :
TObject(),
fNDetSpecNSideA(detspnSideA),
fNDetSpecPSideA(detsppSideA),
fNDetSpecNSideC(detspnSideC),
fNDetSpecPSideC(detsppSideC),
fNTrueSpectators(trsp),
fNTrueSpecSideA(trspSideA),
fNTrueSpecSideC(trspSideC),
fNParticipants(npart),
fNPartSideA(npartSideA),
fNPartSideC(npartSideC),
fImpParameter(b),
fImpParSideA(bSideA),
fImpParSideC(bSideC),
fRecoFlag(recoFlag),
fEnergyFlag(energyFlag),
fIsScalerOn(scalerOn)
{
for(Int_t j=0; j<10; j++){
fZN1EnTow[j] = ezn1tow[j];
fZP1EnTow[j] = ezp1tow[j];
fZN2EnTow[j] = ezn2tow[j];
fZP2EnTow[j] = ezp2tow[j];
if(j<2){
fZN1Energy[j] = ezn1[j];
fZP1Energy[j] = ezp1[j];
fZN2Energy[j] = ezn2[j];
fZP2Energy[j] = ezp2[j];
fZEM1signal[j] = ezem1[j];
fZEM2signal[j] = ezem2[j];
fPMRef1[j] = ref1[j];
fPMRef2[j] = ref2[j];
}
}
for(Int_t j=0; j<32; j++){
fZDCScaler[j] = scaler[j];
for(Int_t y=0; y<4; y++) fZDCTDCData[j][y] = tdcData[j][y];
}
}
AliZDCReco::AliZDCReco(const AliZDCReco &oldreco) :
TObject(),
fNDetSpecNSideA(oldreco.GetNDetSpecNSideA()),
fNDetSpecPSideA(oldreco.GetNDetSpecPSideA()),
fNDetSpecNSideC(oldreco.GetNDetSpecNSideC()),
fNDetSpecPSideC(oldreco.GetNDetSpecPSideC()),
fNTrueSpectators(oldreco.GetNTrueSpectators()),
fNTrueSpecSideA(oldreco.GetNTrueSpecSideA()),
fNTrueSpecSideC(oldreco.GetNTrueSpecSideC()),
fNParticipants(oldreco.GetNParticipants()),
fNPartSideA(oldreco.GetNPartSideA()),
fNPartSideC(oldreco.GetNPartSideC()),
fImpParameter(oldreco.GetImpParameter()),
fImpParSideA(oldreco.GetImpParSideA()),
fImpParSideC(oldreco.GetImpParSideC()),
fRecoFlag(oldreco.GetRecoFlag()),
fEnergyFlag(oldreco.GetEnergyFlag()),
fIsScalerOn(oldreco.IsScalerOn())
{
fZN1Energy[0] = oldreco.GetZN1HREnergy();
fZP1Energy[0] = oldreco.GetZP1HREnergy();
fZN2Energy[0] = oldreco.GetZN2HREnergy();
fZP2Energy[0] = oldreco.GetZP2HREnergy();
fZN1Energy[1] = oldreco.GetZN1LREnergy();
fZP1Energy[1] = oldreco.GetZP1LREnergy();
fZN2Energy[1] = oldreco.GetZN2LREnergy();
fZP2Energy[1] = oldreco.GetZP2LREnergy();
for(Int_t i=0; i<5; i++){
fZN1EnTow[i] = oldreco.GetZN1HREnTow(i);
fZP1EnTow[i] = oldreco.GetZP1HREnTow(i);
fZN2EnTow[i] = oldreco.GetZN2HREnTow(i);
fZP2EnTow[i] = oldreco.GetZP2HREnTow(i);
fZN1EnTow[i+5] = oldreco.GetZN1LREnTow(i);
fZP1EnTow[i+5] = oldreco.GetZP1LREnTow(i);
fZN2EnTow[i+5] = oldreco.GetZN2LREnTow(i);
fZP2EnTow[i+5] = oldreco.GetZP2LREnTow(i);
}
fZEM1signal[0] = oldreco.GetZEM1HRsignal();
fZEM1signal[1] = oldreco.GetZEM1LRsignal();
fZEM2signal[0] = oldreco.GetZEM2HRsignal();
fZEM2signal[1] = oldreco.GetZEM2LRsignal();
fPMRef1[0] = oldreco.GetPMRef1HRsignal();
fPMRef1[1] = oldreco.GetPMRef1LRsignal();
fPMRef2[0] = oldreco.GetPMRef2HRsignal();
fPMRef2[1] = oldreco.GetPMRef2LRsignal();
for(Int_t j=0; j<32; j++){
fZDCScaler[j] = oldreco.GetZDCScaler(j);
for(Int_t y=0; y<4; y++) fZDCTDCData[j][y] = oldreco.GetZDCTDCData(j, y);
}
}
AliZDCReco &AliZDCReco::operator= (const AliZDCReco &reco)
{
if(&reco == this) return *this;
fNDetSpecNSideA = reco.GetNDetSpecNSideA();
fNDetSpecPSideA = reco.GetNDetSpecPSideA();
fNDetSpecNSideC = reco.GetNDetSpecNSideC();
fNDetSpecPSideC = reco.GetNDetSpecPSideC();
fNTrueSpectators = reco.GetNTrueSpectators();
fNTrueSpecSideA = reco.GetNTrueSpecSideA();
fNTrueSpecSideC = reco.GetNTrueSpecSideC();
fNParticipants = reco.GetNParticipants();
fNPartSideA = reco.GetNPartSideA();
fNPartSideC = reco.GetNPartSideC();
fImpParameter = reco.GetImpParameter();
fImpParSideA = reco.GetImpParSideA();
fImpParSideC = reco.GetImpParSideC();
fRecoFlag = reco.GetRecoFlag();
fEnergyFlag = reco.GetEnergyFlag();
fIsScalerOn = reco.IsScalerOn();
fZN1Energy[0] = reco.GetZN1HREnergy();
fZP1Energy[0] = reco.GetZP1HREnergy();
fZN2Energy[0] = reco.GetZN2HREnergy();
fZP2Energy[0] = reco.GetZP2HREnergy();
fZN1Energy[1] = reco.GetZN1LREnergy();
fZP1Energy[1] = reco.GetZP1LREnergy();
fZN2Energy[1] = reco.GetZN2LREnergy();
fZP2Energy[1] = reco.GetZP2LREnergy();
for(Int_t i=0; i<5; i++){
fZN1EnTow[i] = reco.GetZN1HREnTow(i);
fZP1EnTow[i] = reco.GetZP1HREnTow(i);
fZN2EnTow[i] = reco.GetZN2HREnTow(i);
fZP2EnTow[i] = reco.GetZP2HREnTow(i);
fZN1EnTow[i+5] = reco.GetZN1LREnTow(i);
fZP1EnTow[i+5] = reco.GetZP1LREnTow(i);
fZN2EnTow[i+5] = reco.GetZN2LREnTow(i);
fZP2EnTow[i+5] = reco.GetZP2LREnTow(i);
}
fZEM1signal[0] = reco.GetZEM1HRsignal();
fZEM1signal[1] = reco.GetZEM1LRsignal();
fZEM2signal[0] = reco.GetZEM2HRsignal();
fZEM2signal[1] = reco.GetZEM2LRsignal();
fPMRef1[0] = reco.GetPMRef1HRsignal();
fPMRef1[1] = reco.GetPMRef1LRsignal();
fPMRef2[0] = reco.GetPMRef2HRsignal();
fPMRef2[1] = reco.GetPMRef2LRsignal();
for(Int_t j=0; j<32; j++){
fZDCScaler[j] = reco.GetZDCScaler(j);
for(Int_t y=0; y<4; y++) fZDCTDCData[j][y] = reco.GetZDCTDCData(j, y);
}
return *this;
}
void AliZDCReco::Print(Option_t *) const {
printf(" ****************** AliZDCReco object ******************\n"
" --------------- side A ---------------\n"
" E_ZN = %1.2f TeV, E_ZP = %1.2f TeV, "
" E_ZEM1 = %1.2f TeV, E_ZEM2 = %1.2f TeV\n "
" N_spec_n = %d, N_spec_p = %d,"
" N_part = %d, b = %1.4f fm\n"
" --------------- side C ---------------\n"
" E_ZN = %1.2f TeV, E_ZP = %1.2f TeV, "
" N_spec_n = %d, N_spec_p = %d,"
" N_part = %d, b = %1.4f fm\n"
" *******************************************************\n",
fZN2Energy[0]/1000., fZP2Energy[0]/1000.,
fZEM1signal[0]/1000.,fZEM2signal[0]/1000.,
fNDetSpecNSideA,fNDetSpecPSideA, fNPartSideA,fImpParSideA,
fZN1Energy[0]/1000.,fZP1Energy[0]/1000.,
fNDetSpecNSideC,fNDetSpecPSideC,fNPartSideC,fImpParSideC);
}