}
for(Int_t i=0; i<32; i++){
fVMEScaler[i]=0;
- fZDCTDCData[i]=0;
+ for(Int_t y=0; y<4; y++) fZDCTDCData[i][y]=0;
}
}
}
for(Int_t i=0; i<32; i++){
fVMEScaler[i] = zdc.fVMEScaler[i];
- fZDCTDCData[i] = zdc.fZDCTDCData[i];
+ for(Int_t y=0; y<4; y++) fZDCTDCData[i][y] = zdc.fZDCTDCData[i][y];
}
}
fESDQuality = zdc.fESDQuality;
for(Int_t i=0; i<32; i++){
fVMEScaler[i] = zdc.fVMEScaler[i];
- fZDCTDCData[i] = zdc.fZDCTDCData[i];
+ for(Int_t y=0; y<4; y++) fZDCTDCData[i][y] = zdc.fZDCTDCData[i][y];
}
}
return *this;
fESDQuality=0;
for(Int_t i=0; i<32; i++){
fVMEScaler[i] = 0;
- fZDCTDCData[i] = 0;
+ for(Int_t y=0; y<4; y++) fZDCTDCData[i][y] = 0;
}
}
printf("\n");
//
printf(" ### TDCData (!=0): \n");
- for(Int_t i=0; i<32; i++) if(fZDCTDCData[i]!=0) printf("\t %d \n",fZDCTDCData[i]);
+ for(Int_t i=0; i<32; i++){
+ for(Int_t j=0; j<4; j++)
+ if(fZDCTDCData[i][j]!=0) printf("\t %d \n",fZDCTDCData[i][j]);
+ }
printf("\n");
}
UInt_t GetZDCScaler(Int_t i) const {return fVMEScaler[i];}
const UInt_t* GetZDCScaler() const {return fVMEScaler;}
- Int_t GetZDCTDCData(Int_t i) const {return fZDCTDCData[i];}
- const Int_t* GetZDCTDCData() const {return fZDCTDCData;}
+ Int_t GetZDCTDCData(Int_t i, Int_t j) const {return fZDCTDCData[i][j];}
void SetZDCScaler(const UInt_t count[32])
{for(Int_t k=0; k<32; k++) fVMEScaler[k] = count[k];}
- void SetZDCTDC(const Int_t values[32])
- {for(Int_t k=0; k<32; k++) fZDCTDCData[k] = values[k];}
+ void SetZDCTDC(const Int_t values[32][4])
+ {for(Int_t k=0; k<32; k++)
+ for(Int_t j=0; j<4; j++) fZDCTDCData[k][j] = values[k][j];}
void Reset();
void Print(const Option_t *opt=0) const;
Double32_t fZNCCentrCoord[2]; // Coordinates of the centroid over ZNA
UInt_t fESDQuality; // flags from reconstruction
UInt_t fVMEScaler[32]; // counts from VME scaler
- Int_t fZDCTDCData[32]; // ZDC TDC data
+ Int_t fZDCTDCData[32][4]; // ZDC TDC data
- ClassDef(AliESDZDC,13)
+ ClassDef(AliESDZDC,14)
};
#endif
test[specie] += res;
count++;
}
- if(TMath::Abs(sumADCZPC)>1.e-10){
+/* if(TMath::Abs(sumADCZPC)>1.e-10){
if((TMath::Abs(pmQZPC-pmCZPC)/pmCZPC)<percentageDiff)
res=1.;
else
test[specie] += res;
count++;
}
+*/
}
esdInd++;
}
}
}
- for(Int_t i=0; i<32; i++) fZDCScaler[i] = fZDCTDCData[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;
+ }
}
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 scalerOn, UInt_t* scaler, Int_t* tdcData) :
+ UInt_t recoFlag, Bool_t scalerOn, UInt_t* scaler, Int_t tdcData[32][4]) :
TObject(),
//
}
for(Int_t j=0; j<32; j++){
fZDCScaler[j] = scaler[j];
- fZDCTDCData[j] = tdcData[j];
+ for(Int_t y=0; y<4; y++) fZDCTDCData[j][y] = tdcData[j][y];
}
}
fPMRef2[1] = oldreco.GetPMRef2LRsignal();
for(Int_t j=0; j<32; j++){
fZDCScaler[j] = oldreco.GetZDCScaler(j);
- fZDCTDCData[j] = oldreco.GetZDCTDCData(j);
+ for(Int_t y=0; y<4; y++) fZDCTDCData[j][y] = oldreco.GetZDCTDCData(j, y);
}
}
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 scalerOn, UInt_t* scaler, Int_t *tdcData);
+ UInt_t recoFlag, Bool_t scalerOn, UInt_t* scaler, Int_t tdcData[32][4]);
AliZDCReco(const AliZDCReco &oldreco);
virtual ~AliZDCReco() {}
virtual Bool_t IsScalerOn() const {return fIsScalerOn;}
virtual UInt_t GetZDCScaler(Int_t k) const {return fZDCScaler[k];}
//
- virtual Int_t GetZDCTDCData(Int_t j) const {return fZDCTDCData[j];}
+ virtual Int_t GetZDCTDCData(Int_t j, Int_t k) const {return fZDCTDCData[j][k];}
// Print method
virtual void Print(Option_t *) const;
Bool_t fIsScalerOn; // True if scaler has been read in the event
UInt_t fZDCScaler[32]; // Counts from ZDC VME scaler
//
- Int_t fZDCTDCData[32]; // TDC data
+ Int_t fZDCTDCData[32][4]; // TDC data
- ClassDef(AliZDCReco,9) // RecPoints for the Zero Degree Calorimeters
+ ClassDef(AliZDCReco,10) // RecPoints for the Zero Degree Calorimeters
};
#endif
printf("\n\n ***** ZDC reconstruction initialized for %s @ %1.0f + %1.0f GeV *****\n\n",
beamType.Data(), fBeamEnergy, fBeamEnergy);
+ // if EMD calibration run NO ENERGY CALIBRATION should be performed
+ // pp-like reconstruction must be performed (E cailb. coeff. = 1)
+ if((runType.CompareTo("CALIBRATION_EMD")) == 0){
+ fRecoMode=1;
+ }
+
fESDZDC = new AliESDZDC();
}
}//digits loop
UInt_t counts[32];
- Int_t tdc[32];
+ Int_t tdc[32][4];
for(Int_t jj=0; jj<32; jj++){
counts[jj]=0;
- tdc[jj]=0;
+ for(Int_t ii=0; ii<4; ii++) tdc[jj][ii]=0;
}
Int_t evQualityBlock[4] = {1,0,0,0};
}
Bool_t isScalerOn=kFALSE;
- Int_t jsc=0, itdc=0;
+ Int_t jsc=0, itdc=0, iprevtdc=-1, ihittdc=0;
UInt_t scalerData[32];
- Int_t tdcData[32];
+ Int_t tdcData[32][4];
for(Int_t k=0; k<32; k++){
scalerData[k]=0;
- tdcData[k]=0;
+ for(Int_t i=0; i<4; i++) tdcData[k][i]=0;
}
Int_t evQualityBlock[4] = {1,0,0,0};
}// VME SCALER DATA
// ***************************** Reading ZDC TDC
else if(rawData.GetADCModule()==kZDCTDCGeo && rawData.IsZDCTDCDatum()==kTRUE){
- tdcData[itdc] = rawData.GetZDCTDCDatum();
+ itdc = rawData.GetChannel();
+ if(itdc==iprevtdc) ihittdc++;
+ else ihittdc=0;
+ iprevtdc=itdc;
+ tdcData[itdc][ihittdc] = rawData.GetZDCTDCDatum();
// Ch. debug
- //printf(" Reconstructed VME Scaler: %d %d ",jsc,scalerData[jsc]);
- //
- itdc++;
+ printf(" Reconstructed TDC[%d, %d] %d ",itdc, ihittdc, tdcData[itdc][ihittdc]);
}// ZDC TDC DATA
// ***************************** Reading PU
else if(rawData.GetADCModule()==kPUGeo){
const Float_t* const corrADCZN2, const Float_t* const corrADCZP2,
const Float_t* const corrADCZEM1, const Float_t* const corrADCZEM2,
Float_t* sPMRef1, Float_t* sPMRef2, Bool_t isScalerOn, UInt_t* scaler,
- Int_t* tdcData, const Int_t* const evQualityBlock,
+ Int_t tdcData[32][4], const Int_t* const evQualityBlock,
const Int_t* const triggerBlock, const Int_t* const chBlock, UInt_t puBits) const
{
// ****************** Reconstruct one event ******************
const Float_t* const corrADCZN2, const Float_t* const corrADCZP2,
const Float_t* const corrADCZEM1, const Float_t* const corrADCZEM2,
Float_t* sPMRef1, Float_t* sPMRef2, Bool_t isScalerOn, UInt_t* scaler,
- Int_t* tdcData, const Int_t* const evQualityBlock,
+ Int_t tdcData[32][4], const Int_t* const evQualityBlock,
const Int_t* const triggerBlock, const Int_t* const chBlock, UInt_t puBits) const
{
// ****************** Reconstruct one event ******************
}
// Writing TDC data into ZDC ESDs
- Int_t tdcValues[32];
- for(Int_t jk=0; jk<32; jk++) tdcValues[jk] = reco.GetZDCTDCData(jk);
+ Int_t tdcValues[32][4];
+ for(Int_t jk=0; jk<32; jk++){
+ for(Int_t lk=0; lk<4; lk++) tdcValues[jk][lk] = reco.GetZDCTDCData(jk, lk);
+ }
fESDZDC->SetZDCTDC(tdcValues);
if(esd) esd->SetZDCData(fESDZDC);
const Float_t* const corrADCZN2, const Float_t* const corrADCZP2,
const Float_t* const corrADCZEM1, const Float_t* const corrADCZEM2,
Float_t* sPMRef1, Float_t* sPMRef2, Bool_t isScalerOn, UInt_t* scaler,
- Int_t* tdcData, const Int_t* const evQualityBlock,
+ Int_t tdcData[32][4], const Int_t* const evQualityBlock,
const Int_t* const triggerBlock, const Int_t* const chBlock, UInt_t puBits) const;
void ReconstructEventPbPb(TTree *clustersTree,
const Float_t* const corrADCZN1, const Float_t* const corrADCZP1,
const Float_t* const corrADCZN2, const Float_t* const corrADCZP2,
const Float_t* const corrADCZEM1, const Float_t* const corrADCZEM2,
Float_t* sPMRef1, Float_t* sPMRef2, Bool_t isScalerOn, UInt_t* scaler,
- Int_t* tdcData, const Int_t* const evQualityBlock,
+ Int_t tdcData[32][4], const Int_t* const evQualityBlock,
const Int_t* const triggerBlock, const Int_t* const chBlock, UInt_t puBits) const;
static AliZDCRecoParam *fgRecoParam; // reconstruction parameters