]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ZDC/AliZDCReconstructor.cxx
Now, the estimator can work with the tracklets too (R.Shahoyan)
[u/mrichter/AliRoot.git] / ZDC / AliZDCReconstructor.cxx
index 3cc68e88feeda38ee40d350e9c9527ec35897f9d..2e7efe34376ef9d7935858ce556558ea1d4bef50 100644 (file)
@@ -42,6 +42,7 @@
 #include "AliZDCPedestals.h"
 #include "AliZDCEnCalib.h"
 #include "AliZDCTowerCalib.h"
+#include "AliZDCMBCalib.h"
 #include "AliZDCRecoParam.h"
 #include "AliZDCRecoParampp.h"
 #include "AliZDCRecoParamPbPb.h"
@@ -56,6 +57,7 @@ AliZDCReconstructor:: AliZDCReconstructor() :
   fPedData(GetPedestalData()),
   fEnCalibData(GetEnergyCalibData()),
   fTowCalibData(GetTowerCalibData()),
+  fMBCalibData(GetMBCalibData()),
   fRecoMode(0),
   fBeamEnergy(0.),
   fNRun(0),
@@ -75,6 +77,7 @@ AliZDCReconstructor::~AliZDCReconstructor()
    if(fPedData)      delete fPedData;    
    if(fEnCalibData)  delete fEnCalibData;
    if(fTowCalibData) delete fTowCalibData;
+   if(fMBCalibData)  delete fMBCalibData;
 }
 
 //____________________________________________________________________________
@@ -90,7 +93,8 @@ void AliZDCReconstructor::Init()
     
   TString beamType = GetRunInfo()->GetBeamType();
   // This is a temporary solution to allow reconstruction in tests without beam
-  if(((beamType.CompareTo("UNKNOWN"))==0) && ((runType.CompareTo("PHYSICS")) == 0)){
+  if(((beamType.CompareTo("UNKNOWN"))==0) && 
+     ((runType.CompareTo("PHYSICS"))==0 || (runType.CompareTo("CALIBRATION_BC"))==0)){
     fRecoMode=1;
   }
   /*else if((beamType.CompareTo("UNKNOWN"))==0){
@@ -107,10 +111,7 @@ void AliZDCReconstructor::Init()
   }
     
   fBeamEnergy = GetRunInfo()->GetBeamEnergy();
-  if(fBeamEnergy==0.){
-    AliWarning(" Beam energy value missing -> E_beam = 0");
-    fBeamEnergy = 0.;
-  }
+  if(fBeamEnergy==0.) AliWarning(" Beam energy value missing -> E_beam = 0");
     
   if(fIsCalibrationMB==kFALSE)  
     printf("\n\n ***** ZDC reconstruction initialized for %s @ %1.0f GeV *****\n\n",beamType.Data(), fBeamEnergy);
@@ -477,9 +478,12 @@ void AliZDCReconstructor::Reconstruct(AliRawReader* rawReader, TTree* clustersTr
    }// ADC DATA
    // ***************************** Reading Scaler
    else if(rawData.GetADCModule()==kScalerGeo){
-     if(rawData.IsScHeaderRead()==kTRUE && rawData.IsScEventGood()==kTRUE){
+     if(rawData.IsScalerWord()==kTRUE && rawData.IsScEventGood()==kTRUE){
        isScalerOn = kTRUE;
        scalerData[jsc] = rawData.GetTriggerCount();
+       // Ch. debug
+       //printf("   Reconstructed VME Scaler: %d %d  ",jsc,scalerData[jsc]);
+       //
        jsc++;
      }
    }// VME SCALER DATA
@@ -647,7 +651,7 @@ void AliZDCReconstructor::ReconstructEventpp(TTree *clustersTree, Float_t* corrA
   Float_t calibEne[4];
   // **** Energy calibration coefficient set to 1 
   // **** (no trivial way to calibrate in p-p runs)
-  for(Int_t ij=0; ij<4; ij++) calibEne[ij] = fEnCalibData->GetEnCalib(ij);
+  for(Int_t ij=0; ij<6; ij++) calibEne[ij] = fEnCalibData->GetEnCalib(ij);
   
   // ******    Equalization of detector responses
   Float_t equalTowZN1[10], equalTowZN2[10], equalTowZP1[10], equalTowZP2[10];
@@ -914,15 +918,12 @@ void AliZDCReconstructor::ReconstructEventPbPb(TTree *clustersTree,
   
   if(fIsCalibrationMB == kFALSE){
     // ******  Reconstruction parameters ------------------ 
-    // Ch. debug
-    //fRecoParam->Print("");
-    //
     if (!fRecoParam) fRecoParam = const_cast<AliZDCRecoParam*>(GetRecoParam()); 
  
-    TH2F *hZDCvsZEM  = fRecoParam->GethZDCvsZEM();
-    TH2F *hZDCCvsZEM = fRecoParam->GethZDCCvsZEM();
-    TH2F *hZDCAvsZEM = fRecoParam->GethZDCAvsZEM();
+    TH2F *hZDCvsZEM  = fMBCalibData->GethZDCvsZEM();
+    TH2F *hZDCCvsZEM = fMBCalibData->GethZDCCvsZEM();
+    TH2F *hZDCAvsZEM = fMBCalibData->GethZDCAvsZEM();
+    //
     TH1D *hNpartDist = fRecoParam->GethNpartDist();
     TH1D *hbDist = fRecoParam->GethbDist();    
     Float_t ClkCenter = fRecoParam->GetClkCenter();
@@ -1155,15 +1156,6 @@ void AliZDCReconstructor::ReconstructEventPbPb(TTree *clustersTree,
   clustersTree->Fill();
 }
 
-//_____________________________________________________________________________
-void AliZDCReconstructor::BuildRecoParam(Float_t ZDCC, Float_t ZDCA, Float_t ZEM) const
-{
-  // Calculate RecoParam object for Pb-Pb data
-  (fRecoParam->GethZDCvsZEM())->Fill(ZDCC+ZDCA, ZEM);
-  (fRecoParam->GethZDCCvsZEM())->Fill(ZDCC, ZEM);
-  (fRecoParam->GethZDCAvsZEM())->Fill(ZDCA, ZEM);
-}
 
 //_____________________________________________________________________________
 void AliZDCReconstructor::FillZDCintoESD(TTree *clustersTree, AliESDEvent* esd) const
@@ -1296,6 +1288,22 @@ AliZDCTowerCalib* AliZDCReconstructor::GetTowerCalibData() const
   return calibdata;
 }
 
+//_____________________________________________________________________________
+AliZDCMBCalib* AliZDCReconstructor::GetMBCalibData() const
+{
+
+  // Getting energy and equalization calibration object for ZDC set
+
+  AliCDBEntry  *entry = AliCDBManager::Instance()->Get("ZDC/Calib/MBCalib");
+  if(!entry) AliFatal("No calibration data loaded!");  
+  entry->SetOwner(kFALSE);
+
+  AliZDCMBCalib *calibdata = dynamic_cast<AliZDCMBCalib*> (entry->GetObject());
+  if(!calibdata)  AliFatal("Wrong calibration object in calibration  file!");
+
+  return calibdata;
+}
+
 //_____________________________________________________________________________
 AliZDCRecoParampp* AliZDCReconstructor::GetppRecoParamFromOCDB() const
 {