]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ZDC/AliZDCRecoParamPbPb.cxx
Coverity 21238
[u/mrichter/AliRoot.git] / ZDC / AliZDCRecoParamPbPb.cxx
index 221fa3d7ac2c326b6eb27fdd3a61c0960d258371..da718d0199de3de971410d10c487de0b34a802ee 100644 (file)
@@ -33,9 +33,6 @@ ClassImp(AliZDCRecoParamPbPb)
 //_____________________________________________________________________________
 AliZDCRecoParamPbPb::AliZDCRecoParamPbPb() :
   AliZDCRecoParam(),
-  fhZDCvsZEM(0x0),
-  fhZDCCvsZEM(0x0),
-  fhZDCAvsZEM(0x0),
   fhNpartDist(0x0),
   fhbDist(0x0),
   fClkCenter(0)
@@ -44,26 +41,8 @@ AliZDCRecoParamPbPb::AliZDCRecoParamPbPb() :
   //Default constructor
 }
 //_____________________________________________________________________________
-AliZDCRecoParamPbPb::AliZDCRecoParamPbPb(TH2F *hZDCvsZEM, TH2F *hZDCCvsZEM, TH2F *hZDCAvsZEM) :
+AliZDCRecoParamPbPb::AliZDCRecoParamPbPb(TH1D *hNpart, TH1D *hb, Float_t clkCent) :
   AliZDCRecoParam(),
-  fhZDCvsZEM(hZDCvsZEM),
-  fhZDCCvsZEM(hZDCCvsZEM),
-  fhZDCAvsZEM(hZDCAvsZEM),
-  fhNpartDist(0x0),
-  fhbDist(0x0),
-  fClkCenter(0.1)
-{
-  //
-  //Standard constructor
-  SetGlauberMCDist();
-}
-//_____________________________________________________________________________
-AliZDCRecoParamPbPb::AliZDCRecoParamPbPb(TH2F *hZDCvsZEM, TH2F *hZDCCvsZEM, TH2F *hZDCAvsZEM,
-                     TH1D *hNpart, TH1D *hb, Float_t clkCent) :
-  AliZDCRecoParam(),
-  fhZDCvsZEM(hZDCvsZEM),
-  fhZDCCvsZEM(hZDCCvsZEM),
-  fhZDCAvsZEM(hZDCAvsZEM),
   fhNpartDist(hNpart),
   fhbDist(hb),
   fClkCenter(clkCent)
@@ -75,26 +54,11 @@ AliZDCRecoParamPbPb::AliZDCRecoParamPbPb(TH2F *hZDCvsZEM, TH2F *hZDCCvsZEM, TH2F
 //______________________________________________________________________________
 AliZDCRecoParamPbPb::AliZDCRecoParamPbPb(const AliZDCRecoParamPbPb &oldrecopar) :
   AliZDCRecoParam(),
-  fhZDCvsZEM(0x0),
-  fhZDCCvsZEM(0x0),
-  fhZDCAvsZEM(0x0),
   fhNpartDist(0x0),
   fhbDist(0x0),
   fClkCenter(oldrecopar.fClkCenter)
 {
   //Copy constructor
-  if(oldrecopar.fhZDCvsZEM){
-    fhZDCvsZEM = new TH2F(*oldrecopar.fhZDCvsZEM);
-    fhZDCvsZEM->SetDirectory(0);
-  }
-  if(oldrecopar.fhZDCCvsZEM){
-    fhZDCCvsZEM = new TH2F(*oldrecopar.fhZDCCvsZEM);
-    fhZDCCvsZEM->SetDirectory(0);
-  }
-  if(oldrecopar.fhZDCAvsZEM){
-    fhZDCAvsZEM = new TH2F(*oldrecopar.fhZDCAvsZEM);
-    fhZDCAvsZEM->SetDirectory(0);
-  }
   if(oldrecopar.fhNpartDist){
     fhNpartDist = new TH1D(*oldrecopar.fhNpartDist);
     fhNpartDist->SetDirectory(0);
@@ -120,35 +84,89 @@ AliZDCRecoParamPbPb::~AliZDCRecoParamPbPb()
 {
   // destructor
 
-  if(fhZDCvsZEM)  delete fhZDCvsZEM;
-  if(fhZDCCvsZEM) delete fhZDCCvsZEM;
-  if(fhZDCAvsZEM) delete fhZDCAvsZEM;
   if(fhNpartDist) delete fhNpartDist;
   if(fhbDist)     delete fhbDist;
 }
 
 //_____________________________________________________________________________
-AliZDCRecoParamPbPb *AliZDCRecoParamPbPb::GetPbPbRecoParam() const
+void AliZDCRecoParamPbPb::SetGlauberMCDist(Float_t beamEnergy)
 {
+  // Setting Glauber MC distributions
+  // from histos file stored in $ALICE_ROOT/ZDC
+  TH1::AddDirectory(0);
+  TH2::AddDirectory(0);
+  
+  TFile *fileGlauberMC =  TFile::Open("$ALICE_ROOT/ZDC/GlauberMCDist.root");
+  if(!fileGlauberMC) {
+    AliError((" Opening file $ALICE_ROOT/ZDC/GlauberMCDist.root failed\n"));
+    return;
+  }
+  
+  Float_t sqrtS = 2*beamEnergy;
   //
-  // Makes default reconstruction parameters for Pb-Pb collisions
+  if(TMath::Abs(sqrtS-5500) < 100.){
+    AliDebug(2, " ZDC -> Looking for energy5500 in file $ALICE_ROOT/ZDC/GlauberMCDist.root");
+    fileGlauberMC->cd("energy5500");
+    fileGlauberMC->GetObject("energy5500/hbGlauber;1", fhbDist);
+    if(!fhbDist) AliError("  PROBLEM!!! Can't get Glauber MC b distribution from file GlauberMCDist.root\n");
+    fileGlauberMC->GetObject("energy5500/hNpartGlauber;1", fhNpartDist);
+    if(!fhNpartDist) AliError("  PROBLEM!!! Can't get Glauber MC Npart distribution from file GlauberMCDist.root\n");
+  }
+  else if(TMath::Abs(sqrtS-2760) < 100.){
+    AliDebug(2, " ZDC -> Looking for energy2760 in file $ALICE_ROOT/ZDC/GlauberMCDist.root");
+    fileGlauberMC->cd("energy2760");
+    fileGlauberMC->GetObject("energy2760/hbGlauber;1", fhbDist);
+    if(!fhbDist) AliError("  PROBLEM!!! Can't get Glauber MC b distribution from file GlauberMCDist.root\n");
+    fileGlauberMC->GetObject("energy2760/hNpartGlauber;1", fhNpartDist);
+    if(!fhNpartDist) AliError("  PROBLEM!!! Can't get Glauber MC Npart distribution from file GlauberMCDist.root\n");
+  }
+  else AliError(Form(" No AliZDCRecoParam provided for Pb-Pb @ sqrt(s) = %1.0f GeV\n", sqrtS));
   //
-  AliZDCRecoParamPbPb *param = new AliZDCRecoParamPbPb();  
-  return param;
-
+  fhNpartDist->SetDirectory(0);
+  fhbDist->SetDirectory(0);
+  
+  fileGlauberMC->Close();
 }
 
 //_____________________________________________________________________________
-void AliZDCRecoParamPbPb::SetGlauberMCDist()
+AliZDCRecoParamPbPb *AliZDCRecoParamPbPb::GetHighFluxParam(Float_t beamEnergy) 
 {
-  // Setting Glauber MC distributions
-  // from histos file stored in $ALICE_ROOT/ZDC
-  TFile * fileHistos = TFile::Open("$ALICE_ROOT/ZDC/GlauberMCHistos.root");
+  // Create high flux reco parameter
+  TH1::AddDirectory(0);
+  TH2::AddDirectory(0);
+  
+  TFile *fileGlauberMC =  TFile::Open("$ALICE_ROOT/ZDC/GlauberMCDist.root");
+  if(!fileGlauberMC) {
+    printf(" Opening file $ALICE_ROOT/ZDC/GlauberMCDist.root failed\n");
+    return NULL;
+  }
+  
+  Float_t sqrtS = 2*beamEnergy;
+  
+  TH1D *hNpartDist=0x0, *hbDist=0x0;
+  if(TMath::Abs(sqrtS-5500)<100.){
+    fileGlauberMC->cd("energy5500");
+    fileGlauberMC->GetObject("energy5500/hNpartGlauber;1", hNpartDist);
+    if(!hNpartDist) printf("  AliZDCRecoParamPbPb::GetHighFluxParam() PROBLEM!!! Can't get Glauber MC Npart distribution from file GlauberMCDist.root\n");
+    fileGlauberMC->GetObject("energy5500/hbGlauber;1", hbDist);
+    if(!hbDist) printf("  AliZDCRecoParamPbPb::GetHighFluxParam() PROBLEM!!! Can't get Glauber MC b distribution from file GlauberMCDist.root\n");
+  }
+  else if(TMath::Abs(sqrtS-2760)<100.){
+    fileGlauberMC->cd("energy2760");
+    fileGlauberMC->GetObject("energy2760/hNpartGlauber;1", hNpartDist);
+    if(!hNpartDist) printf("  PROBLEM!!! Can't get Glauber MC Npart distribution from file GlauberMCDist.root\n");
+    fileGlauberMC->GetObject("energy2760/hbGlauber;1", hbDist);
+    if(!hbDist) printf("  AliZDCRecoParamPbPb::GetHighFluxParam() PROBLEM!!! Can't get Glauber MC b distribution from file GlauberMCDist.root\n");
+  }
+  else printf(" No AliZDCRecoParam provided for Pb-Pb @ sqrt(s) = %1.0f GeV\n", sqrtS);
   //
-  fhNpartDist = (TH1D*) fileHistos->Get("hDist");
-  fhNpartDist->SetDirectory(0);
-  fhbDist = (TH1D*) fileHistos->Get("hbDist");
-  fhbDist->SetDirectory(0);
+  if(hNpartDist) hNpartDist->SetDirectory(0);
+  if(hbDist) hbDist->SetDirectory(0);
+
+  AliZDCRecoParamPbPb* zdcRecoParam = new AliZDCRecoParamPbPb(hNpartDist, hbDist, 0.1);
+  //
+  fileGlauberMC->Close();
+             
+  return zdcRecoParam;
   
-  fileHistos->Close();
 }