esdZDC->GetImpactParamSideC());
zdcAOD->SetZDCTDCSum(esdZDC->GetZNTDCSum(0));
zdcAOD->SetZDCTDCDiff(esdZDC->GetZNTDCDiff(0));
-
+ if(esdZDC->IsZNChit()) zdcAOD->SetZNCTDC(esdZDC->GetZDCTDCCorrected(10,0));
+ if(esdZDC->IsZNAhit()) zdcAOD->SetZNATDC(esdZDC->GetZDCTDCCorrected(12,0));
}
//_______________________________________________________________________________________________________________________________________
fImpactParamSideA(0),
fImpactParamSideC(0),
fZDCTDCSum(0),
- fZDCTDCDifference(0)
+ fZDCTDCDifference(0),
+ fZNCTDC(0),
+ fZNATDC(0)
{
// Default constructor
for(Int_t i=0; i<5; i++){
fImpactParamSideA(zdcAOD.fImpactParamSideA),
fImpactParamSideC(zdcAOD.fImpactParamSideC),
fZDCTDCSum(zdcAOD.fZDCTDCSum),
- fZDCTDCDifference(zdcAOD.fZDCTDCDifference)
+ fZDCTDCDifference(zdcAOD.fZDCTDCDifference),
+ fZNCTDC(zdcAOD.fZNCTDC),
+ fZNATDC(zdcAOD.fZNATDC)
{
// Constructor
for(Int_t i=0; i<5; i++){
//
fZDCTDCSum = zdcAOD.fZDCTDCSum;
fZDCTDCDifference = zdcAOD.fZDCTDCDifference;
+ fZNCTDC = zdcAOD.fZNCTDC;
+ fZNATDC = zdcAOD.fZNATDC;
+
}
return *this;
}
virtual Bool_t GetZNCentroidInPbPb(Float_t beamEne, Double_t centrZNC[2], Double_t centrZNA[2]);
virtual Bool_t GetZNCentroidInpp(Double_t centrZNC[2], Double_t centrZNA[2]);
+ virtual Float_t GetZNCTime() const {return fZNCTDC;}
+ virtual Float_t GetZNATime() const {return fZNATDC;}
+
virtual Float_t GetZDCTimeSum() const {return fZDCTDCSum;}
virtual Float_t GetZDCTimeDiff() const {return fZDCTDCDifference;}
void SetZDCTDCSum(Float_t tdc) {fZDCTDCSum = tdc;}
void SetZDCTDCDiff(Float_t tdc) {fZDCTDCDifference = tdc;}
+
+ void SetZNCTDC(Float_t tdc) {fZNCTDC = tdc;}
+ void SetZNATDC(Float_t tdc) {fZNATDC = tdc;}
protected:
//
Float_t fZDCTDCSum; // ZDC TDC sum in ns corrected 4 phase shift
Float_t fZDCTDCDifference; // ZDC TDC diff. in ns corrected 4 phase shift
+ Float_t fZNCTDC; // ZNCC TDC sum in ns corrected 4 phase shift
+ Float_t fZNATDC; // ZNA TDC diff. in ns corrected 4 phase shift;
+
- ClassDef(AliAODZDC,1)
+ ClassDef(AliAODZDC,2)
};
#endif
fImpactParameter(0),
fImpactParamSideA(0),
fImpactParamSideC(0),
- fESDQuality(0)
+ fESDQuality(0),
+ fZNCTDChit(kFALSE),
+ fZNATDChit(kFALSE),
+ fZPCTDChit(kFALSE),
+ fZPATDChit(kFALSE),
+ fZEM1TDChit(kFALSE),
+ fZEM2TDChit(kFALSE)
+
{
for(Int_t i=0; i<5; i++){
fZN1TowerEnergy[i] = fZN2TowerEnergy[i] = 0.;
fImpactParameter(zdc.fImpactParameter),
fImpactParamSideA(zdc.fImpactParamSideA),
fImpactParamSideC(zdc.fImpactParamSideC),
- fESDQuality(zdc.fESDQuality)
+ fESDQuality(zdc.fESDQuality),
+ fZNCTDChit(zdc.fZNCTDChit),
+ fZNATDChit(zdc.fZNATDChit),
+ fZPCTDChit(zdc.fZPCTDChit),
+ fZPATDChit(zdc.fZPATDChit),
+ fZEM1TDChit(zdc.fZEM1TDChit),
+ fZEM2TDChit(zdc.fZEM2TDChit)
+
{
// copy constructor
for(Int_t i=0; i<5; i++){
}
}
}
+ fZNCTDChit = zdc.fZNCTDChit;
+ fZNATDChit = zdc.fZNATDChit;
+ fZPCTDChit = zdc.fZPCTDChit;
+ fZPATDChit = zdc.fZPATDChit;
+ fZEM1TDChit = zdc.fZEM1TDChit;
+ fZEM2TDChit = zdc.fZEM2TDChit;
+
return *this;
}
fZDCTDCCorrected[i][y] = 0.;
}
}
+ fZNCTDChit = kFALSE;
+ fZNATDChit = kFALSE;
+ fZPCTDChit = kFALSE;
+ fZPATDChit = kFALSE;
+ fZEM1TDChit = kFALSE;
+ fZEM2TDChit = kFALSE;
+
}
//______________________________________________________________________________
void SetZDCTDCCorrected(const Float_t values[32][4])
{for(Int_t k=0; k<32; k++)
for(Int_t j=0; j<4; j++) fZDCTDCCorrected[k][j] = values[k][j];}
+
+ Bool_t IsZNChit() {return fZNCTDChit;}
+ Bool_t IsZNAhit() {return fZNATDChit;}
+ Bool_t IsZPChit() {return fZPCTDChit;}
+ Bool_t IsZPAhit() {return fZPATDChit;}
+ Bool_t IsZEM1hit() {return fZEM1TDChit;}
+ Bool_t IsZEM2hit() {return fZEM2TDChit;}
+ //
+ void SetZNCTDChit(Bool_t isf) {fZNCTDChit = isf;}
+ void SetZPCTDChit(Bool_t isf) {fZNATDChit = isf;}
+ void SetZNATDChit(Bool_t isf) {fZPCTDChit = isf;}
+ void SetZPATDChit(Bool_t isf) {fZPATDChit = isf;}
+ void SetZEM1TDChit(Bool_t isf) {fZEM1TDChit = isf;}
+ void SetZEM2TDChit(Bool_t isf) {fZEM2TDChit = isf;}
void Reset();
void Print(const Option_t *opt=0) const;
UInt_t fVMEScaler[32]; // counts from VME scaler
Int_t fZDCTDCData[32][4]; // ZDC TDC data
Float_t fZDCTDCCorrected[32][4];// ZDC TDC data in ns corrected 4 phase shift
+ Bool_t fZNCTDChit; // true if ZNC TDC has at least 1 hit
+ Bool_t fZNATDChit; // true if ZNA TDC has at least 1 hit
+ Bool_t fZPCTDChit; // true if ZPC TDC has at least 1 hit
+ Bool_t fZPATDChit; // true if ZPA TDC has at least 1 hit
+ Bool_t fZEM1TDChit; // true if ZEM1 TDC has at least 1 hit
+ Bool_t fZEM2TDChit; // true if ZEM2 TDC has at least 1 hit
- ClassDef(AliESDZDC,17)
+ ClassDef(AliESDZDC,18)
};
#endif
fPedSubMode(0),
fSignalThreshold(7),
fMeanPhase(0),
- fESDZDC(NULL)
-{
+ fESDZDC(NULL){
// **** Default constructor
}
}
}
// Ch. debug
- printf("\n ------------- EQUALIZATION -------------\n");
+ /*printf("\n ------------- EQUALIZATION -------------\n");
printf(" ADCZN1 [%1.2f %1.2f %1.2f %1.2f %1.2f]\n",
equalTowZN1[0],equalTowZN1[1],equalTowZN1[2],equalTowZN1[3],equalTowZN1[4]);
printf(" ADCZP1 [%1.2f %1.2f %1.2f %1.2f %1.2f]\n",
equalTowZN2[0],equalTowZN2[1],equalTowZN2[2],equalTowZN2[3],equalTowZN2[4]);
printf(" ADCZP2 [%1.2f %1.2f %1.2f %1.2f %1.2f]\n",
equalTowZP2[0],equalTowZP2[1],equalTowZP2[2],equalTowZP2[3],equalTowZP2[4]);
- printf(" ----------------------------------------\n");
+ printf(" ----------------------------------------\n");*/
// *** p-A RUN 2013 -> new calibration object
// to take into account saturation in ZN PMC
calibSatZNA[2]*equalTowZN2[0]*equalTowZN2[0]*equalTowZN2[0]*equalTowZN2[0] +
calibSatZNA[3]*equalTowZN2[0]*equalTowZN2[0]*equalTowZN2[0]*equalTowZN2[0]*equalTowZN2[0];
- // Ch. debug
- printf("\n ------------- SATURATION CORRECTION -------------\n");
+ // Ch. debug
+ /*printf("\n ------------- SATURATION CORRECTION -------------\n");
printf(" ZNC PMC %1.2f\n", equalTowZN1[0]);
printf(" ZNA PMC %1.2f\n", equalTowZN2[0]);
- printf(" ----------------------------------------\n");
+ printf(" ----------------------------------------\n");*/
// ****** Summed response for hadronic calorimeter (SUMMED and then CALIBRATED!)
Float_t calibSumZN1[]={0,0}, calibSumZN2[]={0,0}, calibSumZP1[]={0,0}, calibSumZP2[]={0,0};
}
Int_t tdcValues[32][4] = {{0,}};
- Float_t tdcCorrected[32][4] = {{0.,}};
+ Float_t tdcCorrected[32][4] = {{9999.,}};
for(Int_t jk=0; jk<32; jk++){
for(Int_t lk=0; lk<4; lk++){
tdcValues[jk][lk] = reco.GetZDCTDCData(jk, lk);
+ //
+ if(jk==8 && TMath::Abs(tdcValues[jk][lk])>1e-09) fESDZDC->SetZEM1TDChit(kTRUE);
+ else if(jk==9 && TMath::Abs(tdcValues[jk][lk])>1e-09) fESDZDC->SetZEM2TDChit(kTRUE);
+ else if(jk==10 && TMath::Abs(tdcValues[jk][lk])>1e-09) fESDZDC->SetZNCTDChit(kTRUE);
+ else if(jk==11 && TMath::Abs(tdcValues[jk][lk])>1e-09) fESDZDC->SetZPCTDChit(kTRUE);
+ else if(jk==12 && TMath::Abs(tdcValues[jk][lk])>1e-09) fESDZDC->SetZNATDChit(kTRUE);
+ else if(jk==13 && TMath::Abs(tdcValues[jk][lk])>1e-09) fESDZDC->SetZPATDChit(kTRUE);
//Ch debug
//if((jk>=8 && jk<=13 && lk==0) || jk==15) printf(" *** ZDC: tdc%d = %d = %f ns \n",jk,tdcValues[jk][lk],0.025*tdcValues[jk][lk]);
}
for(Int_t jk=0; jk<32; jk++){
for(Int_t lk=0; lk<4; lk++){
if(tdcValues[jk][lk]!=0.){
- tdcCorrected[jk][lk] = 0.025*(tdcValues[jk][lk]-tdcValues[15][0])+fMeanPhase;
- // Sep 2011: TDC ch. from 8 to 13 centered around 0 using OCDB
- if(jk>=8 && jk<=13) tdcCorrected[jk][lk] = tdcCorrected[jk][lk] - tdcOffset[jk-8];
- //Ch. debug
- //if(jk>=8 && jk<=13) printf(" *** tdcOffset%d %f tdcCorr%d %f \n",jk,tdcOffset[jk-8],tdcCorrected[jk][lk]);
-
+ // Feb2013 _-> TDC correct entry is there ONLY IF tdc has a hit!
+ if(TMath::Abs(tdcValues[jk][lk])>1e-09){
+ tdcCorrected[jk][lk] = 0.025*(tdcValues[jk][lk]-tdcValues[15][0])+fMeanPhase;
+ // Sep 2011: TDC ch. from 8 to 13 centered around 0 using OCDB
+ if(jk>=8 && jk<=13) tdcCorrected[jk][lk] = tdcCorrected[jk][lk] - tdcOffset[jk-8];
+ //Ch. debug
+ //if(jk>=8 && jk<=13) printf(" *** tdcOffset%d %f tdcCorr%d %f \n",jk,tdcOffset[jk-8],tdcCorrected[jk][lk]);
+ }
}
}
}