MakeFMDELossTrain(const char* name = "FMD Energy Loss")
: TrainSetup(name)
{
- fOptions.Add("cent", "Use centrality");
- fOptions.Add("residuals", "MODE", "Optional calculation of residuals", "");
+ fOptions.Add("only-mb", "Only collect statistics from MB events");
+ fOptions.Add("config", "FILE", "Configuration", "elossFitConfig.C");
+ fOptions.Add("corr", "DIR", "Corrections dir", "");
fOptions.Set("type", "ESD");
}
protected:
AliAnalysisManager::SetCommonFileName("forward_eloss.root");
// --- Load libraries/pars ---------------------------------------
- fHelper->LoadLibrary("PWGLFforward2");
+ fRailway->LoadLibrary("PWGLFforward2");
// --- Set load path ---------------------------------------------
gROOT->SetMacroPath(Form("%s:$(ALICE_ROOT)/PWGLF/FORWARD/analysis2",
gROOT->GetMacroPath()));
// --- Check if this is MC ---------------------------------------
- Bool_t mc = mgr->GetMCtruthEventHandler() != 0;
- Bool_t cent = fOptions.Has("cent");
- Int_t verb = fOptions.AsInt("verbose");
- TString resi = "";
- if (fOptions.Has("residuals")) resi = fOptions.Get("residuals");
+ Bool_t mc = HasMCHandler();
+ Bool_t onlyMB = fOptions.AsBool("only-mb");
+ TString config = fOptions.Get("config");
+ TString corrs = "";
+ if (fOptions.Has("corr")) corrs = fOptions.Get("corr");
// --- Add the task ----------------------------------------------
- gROOT->Macro(Form("AddTaskFMDELoss.C(%d,%d,%d,\"%s\")",
- mc, cent, verb, resi.Data()));
+ CoupleCar("AddTaskFMDELoss.C", Form("%d,%d,\"%s\",\"%s\"",
+ mc, onlyMB,
+ config.Data(),
+ corrs.Data()));
+ fRailway->LoadAux(gSystem->Which(gROOT->GetMacroPath(), config), true);
+ if (!corrs.IsNull())
+ fRailway->LoadAux(Form("%s/fmd_corrections.root",corrs.Data()), true);
+
}
/**
* Create entrality selection if enabled
* @param mc Whether this is MC or not
* @param mgr Analysis manager
*/
- virtual void CreateCentralitySelection(Bool_t mc, AliAnalysisManager* mgr)
+ virtual void CreateCentralitySelection(Bool_t mc)
{
if (!fOptions.Has("cent")) return;
-
- const char* name = "CentralitySelection";
- gROOT->Macro("AddTaskCentrality.C");
- AliCentralitySelectionTask* ctask =
- dynamic_cast<AliCentralitySelectionTask*>(mgr->GetTask(name));
- if (!ctask) return;
- // ctask->SetPass(fESDPass);
- if (mc) ctask->SetMCInput();
+ TrainSetup::CreateCentralitySelection(mc);
}
/**
* Crete output handler - we don't want one here.
TrainSetup::SaveSetup(asShellScript);
SaveExtract();
SaveSummarize();
+ SaveReFit();
}
void SaveExtract()
{
return;
}
f << "// Generated by " << ClassName() << "\n"
- << "void Extract()\n"
+ << "void Extract(Bool_t mc=" << HasMCHandler() << ",\n"
+ << " const char* file=\"forward_eloss.root\")\n"
<< "{\n"
<< " const char* fwd=\"$ALICE_ROOT/PWGLF/FORWARD/analysis2\";\n"
<< " gROOT->LoadMacro(Form(\"%s/corrs/ExtractELoss.C\",fwd));\n"
- << " ExtractELoss(\"forward_eloss.root\","
- << fHelper->IsMC() << ");\n"
+ << " ExtractELoss(file,mc);\n"
<< "}\n"
<< "// EOF" << std::endl;
f.close();
Error("SaveSummarize", "Failed to open Summarize.C script");
return;
}
- f << "// Generated by " << ClassName() << "\n"
+ f << std::boolalpha
+ << "// Generated by " << ClassName() << "\n"
<< "//\n"
- << "void Summarize(Bool_t mc=false,\n"
+ << "void Summarize(Bool_t mc=" << HasMCHandler() << ",\n"
<< " const char* filename=\"forward_eloss.root\")\n"
<< "{\n"
<< " const char* fwd=\"$ALICE_ROOT/PWGLF/FORWARD/analysis2\";\n"
<< "// EOF" << std::endl;
f.close();
}
+ void SaveReFit()
+ {
+ std::ofstream f("ReFit.C");
+ if (!f) {
+ Error("SaveRerun", "Failed to open ReFit.C script");
+ return;
+ }
+ f << std::boolalpha
+ << "// Generated by " << ClassName() << "\n"
+ << "// If force=true, then force set parameters\n"
+ << "// If shift=true, enable extra shift in Delta from sigma/xi\n"
+ << "//\n"
+ << "void ReFit(Bool_t force=false,\n"
+ << " Bool_t shift=true,\n"
+ << " const char* filename=\"forward_eloss.root\")\n"
+ << "{\n"
+ << " const char* fwd=\"$ALICE_ROOT/PWGLF/FORWARD/analysis2\";\n"
+ << " gROOT->LoadMacro(Form(\"%s/corrs/RerunELossFits.C\",fwd));\n"
+ << " RerunELossFits(force,filename);\n"
+ << "}\n"
+ << "// EOF" << std::endl;
+ f.close();
+ }
void PostShellCode(std::ostream& f)
{
- f << " echo \"=== Extracting Corrections ...\"\n"
- << " aliroot -l -b -q ${prefix}Extract.C\n"
+ f << " mc=" << std::boolalpha << HasMCHandler() << "\n"
+ << " echo \"=== Extracting Corrections ...\"\n"
+ << " aliroot -l -b -q ${prefix}Extract.C\\($mc\\)\n"
<< " echo \"=== Summarizing results ...\"\n"
- << " aliroot -l -b -q ${prefix}Summarize.C\n"
+ << " aliroot -l -b -q ${prefix}Summarize.C\\($mc\\)\n"
<< " if test x$dest = x ; then return ; fi\n"
<< " echo \"=== Uploading to ${dest} ...\"\n"
<< " aliroot -l -b -q Upload.C\\(\\\"${dest}\\\"\\);\n"