//_____________________________________________________________________________
AliZDCReconstructor:: AliZDCReconstructor() :
- fPedData(GetPedData()),
- fEnCalibData(GetEnCalibData()),
- fTowCalibData(GetTowCalibData()),
+ fPedData(GetPedestalData()),
+ fEnCalibData(GetEnergyCalibData()),
+ fTowCalibData(GetTowerCalibData()),
fRecoMode(0),
fBeamEnergy(0.),
fNRun(0),
fIsCalibrationMB(kFALSE),
fPedSubMode(0),
- fRecoFlag(0x0)
+ fSignalThreshold(7)
{
// **** Default constructor
if(entry){
TMap* m = dynamic_cast<TMap*>(entry->GetObject()); // old GRP entry
if(m){
- m->Print();
+ //m->Print();
grpData = new AliGRPObject();
grpData->ReadValuesFromMap(m);
}
}
if((runType.CompareTo("CALIBRATION_MB")) == 0){
fIsCalibrationMB = kTRUE;
- //
- fRecoParam = new AliZDCRecoParamPbPb();
- //
- TH2F* hZDCvsZEM = new TH2F("hZDCvsZEM","hZDCvsZEM",100,0.,10.,100,0.,1000.);
- hZDCvsZEM->SetXTitle("E_{ZEM} (TeV)"); hZDCvsZEM->SetYTitle("E_{ZDC} (TeV)");
- fRecoParam->SetZDCvsZEM(hZDCvsZEM);
- //
- TH2F* hZDCCvsZEM = new TH2F("hZDCCvsZEM","hZDCCvsZEM",100,0.,10.,100,0.,500.);
- hZDCCvsZEM->SetXTitle("E_{ZEM} (TeV)"); hZDCCvsZEM->SetYTitle("E_{ZDCC} (TeV)");
- fRecoParam->SetZDCCvsZEM(hZDCCvsZEM);
- //
- TH2F* hZDCAvsZEM = new TH2F("hZDCAvsZEM","hZDCAvsZEM",100,0.,10.,100,0.,500.);
- hZDCAvsZEM->SetXTitle("E_{ZEM} (TeV)"); hZDCAvsZEM->SetYTitle("E_{ZDCA} (TeV)");
- fRecoParam->SetZDCAvsZEM(hZDCAvsZEM);
}
TString beamType = grpData->GetBeamType();
AliError("\t ZDC does not reconstruct event 4 UNKNOWN beam type\n");
return;
}
- if((beamType.CompareTo("p-p")) == 0){
- fRecoMode=1;
- fRecoParam = (AliZDCRecoParampp*) GetppRecoParamFromOCDB();
- }
+ if((beamType.CompareTo("P-P")) == 0) fRecoMode=1;
else if((beamType.CompareTo("A-A")) == 0){
fRecoMode=2;
- if(fIsCalibrationMB == kFALSE)
- fRecoParam = (AliZDCRecoParamPbPb*) GetPbPbRecoParamFromOCDB();
+ if(fIsCalibrationMB == kTRUE){
+ fRecoParam = new AliZDCRecoParamPbPb();
+ //
+ TH2F* hZDCvsZEM = new TH2F("hZDCvsZEM","hZDCvsZEM",100,0.,10.,100,0.,1000.);
+ hZDCvsZEM->SetXTitle("E_{ZEM} (TeV)"); hZDCvsZEM->SetYTitle("E_{ZDC} (TeV)");
+ fRecoParam->SetZDCvsZEM(hZDCvsZEM);
+ //
+ TH2F* hZDCCvsZEM = new TH2F("hZDCCvsZEM","hZDCCvsZEM",100,0.,10.,100,0.,500.);
+ hZDCCvsZEM->SetXTitle("E_{ZEM} (TeV)"); hZDCCvsZEM->SetYTitle("E_{ZDCC} (TeV)");
+ fRecoParam->SetZDCCvsZEM(hZDCCvsZEM);
+ //
+ TH2F* hZDCAvsZEM = new TH2F("hZDCAvsZEM","hZDCAvsZEM",100,0.,10.,100,0.,500.);
+ hZDCAvsZEM->SetXTitle("E_{ZEM} (TeV)"); hZDCAvsZEM->SetYTitle("E_{ZDCA} (TeV)");
+ fRecoParam->SetZDCAvsZEM(hZDCAvsZEM);
+ //
+ AliInfo("\n ***** CALIBRATION_MB data -> building AliZDCRecoParamPbPb object *****");
+ }
}
fBeamEnergy = grpData->GetBeamEnergy();
fBeamEnergy = 0.;
}
- if(fIsCalibrationMB==kTRUE){
- AliInfo("\n ***** CALIBRATION_MB data -> building AliZDCRecoParamPbPb object *****");
- }
- else{
- AliInfo(Form("\n\n ***** ZDC reconstruction initialized for %s @ %1.3f GeV *****\n",beamType.Data(), fBeamEnergy));
- }
+ if(fIsCalibrationMB==kFALSE)
+ AliInfo(Form("\n\n ***** ZDC reconstruction initialized for %s @ %1.0f GeV *****\n",beamType.Data(), fBeamEnergy));
}
else{
AliError(" ATTENTION!!!!!! No beam type nor beam energy has been set!!!!!!\n");
printf(" LGChain -> RawDig %d DigCorr %1.2f\n", digit.GetADCValue(1), digit.GetADCValue(1)-ped2SubLg);
*/
}//digits loop
+
// If CALIBRATION_MB run build the RecoParam object
if(fIsCalibrationMB){
ZDCA += tZN2Corr[jkl] + tZP2Corr[jkl];
}
// Using energies in TeV in fRecoParam object
- BuildRecoParam(fRecoParam->GethZDCvsZEM(), fRecoParam->GethZDCCvsZEM(),
- fRecoParam->GethZDCAvsZEM(), ZDCC/1000., ZDCA/1000., ZEM/1000.);
+ BuildRecoParam(ZDCC/1000., ZDCA/1000., ZEM/1000.);
}
+ Bool_t recFlag1 = kFALSE, recFlag2 = kFALSE, recFlag3 = kFALSE;
// reconstruct the event
if(fRecoMode==1)
ReconstructEventpp(clustersTree, tZN1Corr, tZP1Corr, tZN2Corr, tZP2Corr,
- dZEM1Corr, dZEM2Corr, sPMRef1, sPMRef2);
+ dZEM1Corr, dZEM2Corr, sPMRef1, sPMRef2, recFlag1, recFlag2, recFlag3);
else if(fRecoMode==2)
ReconstructEventPbPb(clustersTree, tZN1Corr, tZP1Corr, tZN2Corr, tZP2Corr,
- dZEM1Corr, dZEM2Corr, sPMRef1, sPMRef2);
+ dZEM1Corr, dZEM2Corr, sPMRef1, sPMRef2, recFlag1, recFlag2, recFlag3);
}
//_____________________________________________________________________________
-void AliZDCReconstructor::Reconstruct(AliRawReader* rawReader, TTree* clustersTree)
+void AliZDCReconstructor::Reconstruct(AliRawReader* rawReader, TTree* clustersTree) const
{
// *** ZDC raw data reconstruction
// Works on the current event
tZN1Corr[i] = tZP1Corr[i] = tZN2Corr[i] = tZP2Corr[i] = 0.;
if(i<2) dZEM1Corr[i] = dZEM2Corr[i] = sPMRef1[i] = sPMRef2[i] = 0.;
}
+
+ //fNRun = (Int_t) rawReader->GetRunNumber();
+ Bool_t chOff=kFALSE, isUndflw=kFALSE, isOvflw=kFALSE;
//
rawReader->Reset();
- fNRun = (Int_t) rawReader->GetRunNumber();
AliZDCRawStream rawData(rawReader);
while(rawData.Next()){
- // Do
- Bool_t ch2process = kTRUE;
- //
- // Setting reco flags (part I)
- if((rawData.IsADCDataWord()) && (rawData.IsUnderflow() == kTRUE)){
- fRecoFlag = 0x1<< 8;
- ch2process = kFALSE;
- }
- if((rawData.IsADCDataWord()) && (rawData.IsOverflow() == kTRUE)){
- fRecoFlag = 0x1 << 7;
- ch2process = kFALSE;
- }
- if(rawData.GetNChannelsOn() < 48 ) fRecoFlag = 0x1 << 6;
-
- if((rawData.IsADCDataWord()) && (ch2process == kTRUE)){
+ if(rawData.IsCalibration() == kFALSE){ // Reading ADCs
+ //printf(" **** Reading ADC raw data **** \n");
+ //
+ if(rawData.GetNChannelsOn() < 48 ) chOff=kTRUE;
+ if((rawData.IsADCDataWord()) && (rawData.IsOverflow() == kTRUE)) isUndflw=kTRUE;
+ if((rawData.IsADCDataWord()) && (rawData.IsUnderflow() == kTRUE)) isOvflw=kTRUE;
+
+ if((rawData.IsADCDataWord()) && (isUndflw==kFALSE) && (isOvflw==kFALSE)){
- Int_t adcMod = rawData.GetADCModule();
- Int_t det = rawData.GetSector(0);
- Int_t quad = rawData.GetSector(1);
- Int_t gain = rawData.GetADCGain();
- Int_t pedindex=0;
- //
- // Mean pedestal value subtraction -------------------------------------------------------
- if(fPedSubMode == 0){
+ Int_t adcMod = rawData.GetADCModule();
+ Int_t det = rawData.GetSector(0);
+ Int_t quad = rawData.GetSector(1);
+ Int_t gain = rawData.GetADCGain();
+ Int_t pedindex=0;
+ //
+ // Mean pedestal value subtraction -------------------------------------------------------
+ if(fPedSubMode == 0){
// Not interested in o.o.t. signals (ADC modules 2, 3)
- if(adcMod == 2 || adcMod == 3) return;
+ if(adcMod == 2 || adcMod == 3) continue;
//
if(quad != 5){ // ZDCs (not reference PTMs)
if(det == 1){
printf(" -> AliZDCReconstructor: RawADC %1.0f ADCCorr %1.0f\n",
rawData.GetADCValue(), rawData.GetADCValue()-meanPed[pedindex]);*/
- }// mean pedestal subtraction
- // Pedestal subtraction from correlation ------------------------------------------------
- else if(fPedSubMode == 1){
+ }// mean pedestal subtraction
+ // Pedestal subtraction from correlation ------------------------------------------------
+ else if(fPedSubMode == 1){
// In time signals
if(adcMod==0 || adcMod==1){
if(quad != 5){ // signals from ZDCs
else pmRefootlg[quad-1] = rawData.GetADCValue();
}
}
- } // pedestal subtraction from correlation
- // Ch. debug
- //printf("\t AliZDCReconstructor - det %d quad %d res %d -> Ped[%d] = %1.0f\n",
- // det,quad,gain, pedindex, meanPed[pedindex]);
- }//IsADCDataWord
+ } // pedestal subtraction from correlation
+ // Ch. debug
+ //printf("\t AliZDCReconstructor - det %d quad %d res %d -> Ped[%d] = %1.0f\n",
+ // det,quad,gain, pedindex, meanPed[pedindex]);
+ }//IsADCDataWord
+ }// Not raw data from calibration run!
+ else{
+ }
}//loop on raw data
if(fPedSubMode==1){
sPMRef2[0] = pmRef[0] - (corrCoeff1[23]*pmRefoot[1]+corrCoeff0[23]);
sPMRef2[1] = pmReflg[0] - (corrCoeff1[23+kNch]*pmRefootlg[1]+corrCoeff0[23+kNch]);
}
- // Setting reco flags (part II)
- Float_t sumZNAhg=0, sumZPAhg=0, sumZNChg=0, sumZPChg=0;
- for(Int_t jj=0; jj<5; jj++){
- sumZNAhg += tZN2Corr[jj];
- sumZPAhg += tZP2Corr[jj];
- sumZNChg += tZN1Corr[jj];
- sumZPChg += tZP1Corr[jj];
- }
- if(sumZNAhg>0.) fRecoFlag = 0x1;
- if(sumZPAhg>0.) fRecoFlag = 0x1 << 1;
- if(dZEM1Corr[0]>0.) fRecoFlag = 0x1 << 2;
- if(dZEM2Corr[0]>0.) fRecoFlag = 0x1 << 3;
- if(sumZNChg>0.) fRecoFlag = 0x1 << 4;
- if(sumZPChg>0.) fRecoFlag = 0x1 << 5;
// If CALIBRATION_MB run build the RecoParam object
if(fIsCalibrationMB){
ZDCC += tZN1Corr[jkl] + tZP1Corr[jkl];
ZDCA += tZN2Corr[jkl] + tZP2Corr[jkl];
}
- BuildRecoParam(fRecoParam->GethZDCvsZEM(), fRecoParam->GethZDCCvsZEM(),
- fRecoParam->GethZDCAvsZEM(), ZDCC/100., ZDCA/100., ZEM/100.);
+ BuildRecoParam(ZDCC/100., ZDCA/100., ZEM/100.);
}
// reconstruct the event
else{
if(fRecoMode==1) // p-p data
ReconstructEventpp(clustersTree, tZN1Corr, tZP1Corr, tZN2Corr, tZP2Corr,
- dZEM1Corr, dZEM2Corr, sPMRef1, sPMRef2);
+ dZEM1Corr, dZEM2Corr, sPMRef1, sPMRef2, chOff, isUndflw, isOvflw);
else if(fRecoMode==2) // Pb-Pb data
ReconstructEventPbPb(clustersTree, tZN1Corr, tZP1Corr, tZN2Corr, tZP2Corr,
- dZEM1Corr, dZEM2Corr, sPMRef1, sPMRef2);
+ dZEM1Corr, dZEM2Corr, sPMRef1, sPMRef2, chOff, isUndflw, isOvflw);
}
}
//_____________________________________________________________________________
void AliZDCReconstructor::ReconstructEventpp(TTree *clustersTree, Float_t* corrADCZN1,
Float_t* corrADCZP1, Float_t* corrADCZN2, Float_t* corrADCZP2,
- Float_t* corrADCZEM1, Float_t* corrADCZEM2, Float_t* sPMRef1, Float_t* sPMRef2) const
+ Float_t* corrADCZEM1, Float_t* corrADCZEM2, Float_t* sPMRef1, Float_t* sPMRef2,
+ Bool_t channelsOff, Bool_t chUnderflow, Bool_t chOverflow) const
{
// ****************** Reconstruct one event ******************
-
+
+ // ---- Setting reco flags
+ UInt_t recoFlag=0;
+ UInt_t rFlags[32];
+ for(Int_t ifl=0; ifl<32; ifl++) rFlags[ifl]=0;
+
+ if(corrADCZN2[0]>fSignalThreshold) rFlags[0] = 0x1;
+ if(corrADCZP2[0]>fSignalThreshold) rFlags[1] = 0x1;
+ if(corrADCZEM1[0]>fSignalThreshold) rFlags[2] = 0x1;
+ if(corrADCZEM2[0]>fSignalThreshold) rFlags[3] = 0x1;
+ if(corrADCZN1[0]>fSignalThreshold) rFlags[4] = 0x1;
+ if(corrADCZP1[0]>fSignalThreshold) rFlags[5] = 0x1;
+ //
+ if(channelsOff==kTRUE) rFlags[8] = 0x1;
+ if(chUnderflow == kTRUE) rFlags[9] = 0x1;
+ if(chOverflow==kTRUE) rFlags[10] = 0x1;
+ recoFlag = rFlags[10] << 10 | rFlags[9] << 9 | rFlags[8] << 8 |
+ rFlags[5] << 5 | rFlags[4] << 4 | rFlags[3] << 3 |
+ rFlags[2] << 2 | rFlags[1] << 1 | rFlags[0];
+
// ****** Retrieving calibration data
// --- Equalization coefficients ---------------------------------------------
Float_t equalCoeffZN1[5], equalCoeffZP1[5], equalCoeffZN2[5], equalCoeffZP2[5];
// ****** Equalization of detector responses
Float_t equalTowZN1[10], equalTowZN2[10], equalTowZP1[10], equalTowZP2[10];
for(Int_t gi=0; gi<10; gi++){
- equalTowZN1[gi] = corrADCZN1[gi]*equalCoeffZN1[gi];
- equalTowZP1[gi] = corrADCZP1[gi]*equalCoeffZP1[gi];
- equalTowZN2[gi] = corrADCZN2[gi]*equalCoeffZN2[gi];
- equalTowZP2[gi] = corrADCZP2[gi]*equalCoeffZP2[gi];
+ if(gi<5){
+ equalTowZN1[gi] = corrADCZN1[gi]*equalCoeffZN1[gi];
+ equalTowZP1[gi] = corrADCZP1[gi]*equalCoeffZP1[gi];
+ equalTowZN2[gi] = corrADCZN2[gi]*equalCoeffZN2[gi];
+ equalTowZP2[gi] = corrADCZP2[gi]*equalCoeffZP2[gi];
+ }
+ else{
+ equalTowZN1[gi] = corrADCZN1[gi]*equalCoeffZN1[gi-5];
+ equalTowZP1[gi] = corrADCZP1[gi]*equalCoeffZP1[gi-5];
+ equalTowZN2[gi] = corrADCZN2[gi]*equalCoeffZN2[gi-5];
+ equalTowZP2[gi] = corrADCZP2[gi]*equalCoeffZP2[gi-5];
+ }
}
// ****** Summed response for hadronic calorimeter (SUMMED and then CALIBRATED!)
Double_t impPar=0., impPar1=0., impPar2=0.;
// create the output tree
- AliZDCReco reco(calibSumZN1, calibSumZP1, calibSumZN2, calibSumZP2,
- calibTowZN1, calibTowZP1, calibTowZN2, calibTowZP2,
- calibZEM1, calibZEM2, sPMRef1, sPMRef2,
- nDetSpecNLeft, nDetSpecPLeft, nDetSpecNRight, nDetSpecPRight,
- nGenSpec, nGenSpecLeft, nGenSpecRight,
- nPart, nPartTotLeft, nPartTotRight,
- impPar, impPar1, impPar2);
+ AliZDCReco* reco = new AliZDCReco(calibSumZN1, calibSumZP1, calibSumZN2, calibSumZP2,
+ calibTowZN1, calibTowZP1, calibTowZN2, calibTowZP2,
+ calibZEM1, calibZEM2, sPMRef1, sPMRef2,
+ nDetSpecNLeft, nDetSpecPLeft, nDetSpecNRight, nDetSpecPRight,
+ nGenSpec, nGenSpecLeft, nGenSpecRight,
+ nPart, nPartTotLeft, nPartTotRight,
+ impPar, impPar1, impPar2,
+ recoFlag);
- AliZDCReco* preco = &reco;
- const Int_t kBufferSize = 4000;
- clustersTree->Branch("ZDC", "AliZDCReco", &preco, kBufferSize);
-
+ //AliZDCReco* preco = &reco;
+ const Int_t kBufferSize = 8000;
+ clustersTree->Branch("ZDC", "AliZDCReco", &reco, kBufferSize);
+
// write the output tree
clustersTree->Fill();
+ delete reco;
}
//_____________________________________________________________________________
void AliZDCReconstructor::ReconstructEventPbPb(TTree *clustersTree,
Float_t* corrADCZN1, Float_t* corrADCZP1, Float_t* corrADCZN2, Float_t* corrADCZP2,
- Float_t* corrADCZEM1, Float_t* corrADCZEM2, Float_t* sPMRef1, Float_t* sPMRef2) const
+ Float_t* corrADCZEM1, Float_t* corrADCZEM2, Float_t* sPMRef1, Float_t* sPMRef2,
+ Bool_t channelsOff, Bool_t chUnderflow, Bool_t chOverflow) const
{
// ****************** Reconstruct one event ******************
+
+ // ---- Setting reco flags
+ UInt_t recoFlag=0;
+ UInt_t rFlags[32];
+ for(Int_t ifl=0; ifl<32; ifl++) rFlags[ifl]=0;
+
+ if(corrADCZN2[0]>fSignalThreshold) rFlags[0] = 0x1;
+ if(corrADCZP2[0]>fSignalThreshold) rFlags[1] = 0x1;
+ if(corrADCZEM1[0]>fSignalThreshold) rFlags[2] = 0x1;
+ if(corrADCZEM2[0]>fSignalThreshold) rFlags[3] = 0x1;
+ if(corrADCZN1[0]>fSignalThreshold) rFlags[4] = 0x1;
+ if(corrADCZP1[0]>fSignalThreshold) rFlags[5] = 0x1;
+ //
+ if(channelsOff==kTRUE) rFlags[8] = 0x1;
+ if(chUnderflow == kTRUE) rFlags[9] = 0x1;
+ if(chOverflow==kTRUE) rFlags[10] = 0x1;
+ recoFlag = rFlags[10] << 10 | rFlags[9] << 9 | rFlags[8] << 8 |
+ rFlags[5] << 5 | rFlags[4] << 4 | rFlags[3] << 3 |
+ rFlags[2] << 2 | rFlags[1] << 1 | rFlags[0];
// ****** Retrieving calibration data
// --- Equalization coefficients ---------------------------------------------
// ****** Equalization of detector responses
Float_t equalTowZN1[10], equalTowZN2[10], equalTowZP1[10], equalTowZP2[10];
for(Int_t gi=0; gi<10; gi++){
- equalTowZN1[gi] = corrADCZN1[gi]*equalCoeffZN1[gi];
- equalTowZP1[gi] = corrADCZP1[gi]*equalCoeffZP1[gi];
- equalTowZN2[gi] = corrADCZN2[gi]*equalCoeffZN2[gi];
- equalTowZP2[gi] = corrADCZP2[gi]*equalCoeffZP2[gi];
+ if(gi<5){
+ equalTowZN1[gi] = corrADCZN1[gi]*equalCoeffZN1[gi];
+ equalTowZP1[gi] = corrADCZP1[gi]*equalCoeffZP1[gi];
+ equalTowZN2[gi] = corrADCZN2[gi]*equalCoeffZN2[gi];
+ equalTowZP2[gi] = corrADCZP2[gi]*equalCoeffZP2[gi];
+ }
+ else{
+ equalTowZN1[gi] = corrADCZN1[gi]*equalCoeffZN1[gi-5];
+ equalTowZP1[gi] = corrADCZP1[gi]*equalCoeffZP1[gi-5];
+ equalTowZN2[gi] = corrADCZN2[gi]*equalCoeffZN2[gi-5];
+ equalTowZP2[gi] = corrADCZP2[gi]*equalCoeffZP2[gi-5];
+ }
}
// ****** Summed response for hadronic calorimeter (SUMMED and then CALIBRATED!)
" nDetSpecNRight %d, nDetSpecPRight %d\n",nDetSpecNLeft, nDetSpecPLeft,
nDetSpecNRight, nDetSpecPRight);*/
+ Int_t nGenSpec=0, nGenSpecA=0, nGenSpecC=0;
+ Int_t nPart=0, nPartA=0, nPartC=0;
+ Double_t b=0., bA=0., bC=0.;
+
if(fIsCalibrationMB == kFALSE){
// ****** Reconstruction parameters ------------------
// Ch. debug
Double_t xHighEdge = hZDCvsZEM->GetXaxis()->GetXmax();
Double_t origin = xHighEdge*ClkCenter;
// Ch. debug
- printf("\n\n xHighEdge %1.2f, origin %1.4f \n", xHighEdge, origin);
+ //printf("\n\n xHighEdge %1.2f, origin %1.4f \n", xHighEdge, origin);
//
// ====> Summed ZDC info (sideA+side C)
TF1 *line = new TF1("line","[0]*x+[1]",0.,xHighEdge);
line->SetParameter(0, y/(x-origin));
line->SetParameter(1, -origin*y/(x-origin));
// Ch. debug
- printf(" ***************** Summed ZDC info (sideA+side C) \n");
- printf(" E_{ZEM} %1.4f, E_{ZDC} %1.2f, TF1: %1.2f*x + %1.2f ", x, y,y/(x-origin),-origin*y/(x-origin));
+ //printf(" ***************** Summed ZDC info (sideA+side C) \n");
+ //printf(" E_{ZEM} %1.4f, E_{ZDC} %1.2f, TF1: %1.2f*x + %1.2f ", x, y,y/(x-origin),-origin*y/(x-origin));
//
Double_t countPerc=0;
Double_t xBinCenter=0, yBinCenter=0;
printf("\t AliZDCReconstructor -> NpartL %d, NpartR %d, b %1.2f fm\n\n",nPartTotLeft, nPartTotRight, impPar);
*/
- // create the output tree
- AliZDCReco reco(calibSumZN1, calibSumZP1, calibSumZN2, calibSumZP2,
- calibTowZN1, calibTowZP1, calibTowZN2, calibTowZP2,
- calibZEM1, calibZEM2, sPMRef1, sPMRef2,
- nDetSpecNLeft, nDetSpecPLeft, nDetSpecNRight, nDetSpecPRight,
- nGenSpec, nGenSpecA, nGenSpecC,
- nPart, nPartA, nPartC, b, bA, bC);
-
- AliZDCReco* preco = &reco;
- const Int_t kBufferSize = 4000;
- clustersTree->Branch("ZDC", "AliZDCReco", &preco, kBufferSize);
- // write the output tree
- clustersTree->Fill();
-
delete lineC; delete lineA;
+
} // ONLY IF fIsCalibrationMB==kFALSE
- else{
- // create the output tree
- AliZDCReco reco(calibSumZN1, calibSumZP1, calibSumZN2, calibSumZP2,
- calibTowZN1, calibTowZP1, calibTowZN2, calibTowZP2,
- calibZEM1, calibZEM2, sPMRef1, sPMRef2,
- nDetSpecNLeft, nDetSpecPLeft, nDetSpecNRight, nDetSpecPRight,
- 0, 0, 0,
- 0, 0, 0, 0., 0., 0.);
-
- AliZDCReco* preco = &reco;
- const Int_t kBufferSize = 4000;
- clustersTree->Branch("ZDC", "AliZDCReco", &preco, kBufferSize);
- // write the output tree
- clustersTree->Fill();
- }
+
+ AliZDCReco* reco = new AliZDCReco(calibSumZN1, calibSumZP1, calibSumZN2, calibSumZP2,
+ calibTowZN1, calibTowZP1, calibTowZN2, calibTowZP2,
+ calibZEM1, calibZEM2, sPMRef1, sPMRef2,
+ nDetSpecNLeft, nDetSpecPLeft, nDetSpecNRight, nDetSpecPRight,
+ nGenSpec, nGenSpecA, nGenSpecC,
+ nPart, nPartA, nPartC, b, bA, bC,
+ recoFlag);
+
+ const Int_t kBufferSize = 4000;
+ clustersTree->Branch("ZDC", "AliZDCReco", &reco, kBufferSize);
+ // write the output tree
+ clustersTree->Fill();
+ delete reco;
}
//_____________________________________________________________________________
-void AliZDCReconstructor::BuildRecoParam(TH2F* hCorr, TH2F* hCorrC, TH2F* hCorrA,
- Float_t ZDCC, Float_t ZDCA, Float_t ZEM) const
+void AliZDCReconstructor::BuildRecoParam(Float_t ZDCC, Float_t ZDCA, Float_t ZEM) const
{
// Calculate RecoParam object for Pb-Pb data
- hCorr->Fill(ZDCC+ZDCA, ZEM);
- hCorrC->Fill(ZDCC, ZEM);
- hCorrA->Fill(ZDCA, ZEM);
- //
- /*TH1D* hNpartDist;
- TH1D* hbDist;
- Float_t clkCenter;*/
+ (fRecoParam->GethZDCvsZEM())->Fill(ZDCC+ZDCA, ZEM);
+ (fRecoParam->GethZDCCvsZEM())->Fill(ZDCC, ZEM);
+ (fRecoParam->GethZDCAvsZEM())->Fill(ZDCA, ZEM);
}
Double_t b = reco.GetImpParameter();
Double_t bA = reco.GetImpParSideA();
Double_t bC = reco.GetImpParSideC();
- //
+ UInt_t recoFlag = reco.GetRecoFlag();
+ //
esd->SetZDC(reco.GetZN1HREnergy(), reco.GetZP1HREnergy(), reco.GetZEM1HRsignal(),
reco.GetZEM2HRsignal(), reco.GetZN2HREnergy(), reco.GetZP2HREnergy(),
- nPart, nPartA, nPartC, b, bA, bC, fRecoFlag);
+ nPart, nPartA, nPartC, b, bA, bC, recoFlag);
}
}
//_____________________________________________________________________________
-AliZDCPedestals* AliZDCReconstructor::GetPedData() const
+AliZDCPedestals* AliZDCReconstructor::GetPedestalData() const
{
// Getting pedestal calibration object for ZDC set
}
//_____________________________________________________________________________
-AliZDCEnCalib* AliZDCReconstructor::GetEnCalibData() const
+AliZDCEnCalib* AliZDCReconstructor::GetEnergyCalibData() const
{
// Getting energy and equalization calibration object for ZDC set
}
//_____________________________________________________________________________
-AliZDCTowerCalib* AliZDCReconstructor::GetTowCalibData() const
+AliZDCTowerCalib* AliZDCReconstructor::GetTowerCalibData() const
{
// Getting energy and equalization calibration object for ZDC set