//_____________________________________________________________________________
AliZDCRecoParamPbPb::AliZDCRecoParamPbPb() :
AliZDCRecoParam(),
- fhZDCvsZEM(0x0),
- fhZDCCvsZEM(0x0),
- fhZDCAvsZEM(0x0),
fhNpartDist(0x0),
fhbDist(0x0),
fClkCenter(0)
//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)
//______________________________________________________________________________
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);
{
// 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();
}