/** * @file MakeMultDistsTrain.C * @author Christian Holm Christensen * @date Fri Jun 1 13:51:26 2012 * * @brief * * @ingroup pwglf_forward_trains_specific * */ #include "TrainSetup.C" //==================================================================== /** * Analysis train to make @f$ P(N_{ch})@f$ * * * @ingroup pwglf_forward_multdists * @ingroup pwglf_forward_trains_specific */ class MakeMultDistsTrain : public TrainSetup { public: /** * Constructor. * * @param name Name of train (free form) */ MakeMultDistsTrain(const char* name) : TrainSetup(name) { fOptions.Add("trig", "TYPE", "Trigger type", "V0AND"); fOptions.Add("vzMin", "CENTIMETER", "Min Ip Z", -4); fOptions.Add("vzMax", "CENTIMETER", "Max Ip Z", +4); fOptions.Add("phi-acc", "Use stored phi acceptance", false); fOptions.Add("asymmetric", "Make asymmetric (+/-) bins", false); } protected: /** * Create the tasks * */ void CreateTasks(AliAnalysisManager*) { // --- Output file name ------------------------------------------ AliAnalysisManager::SetCommonFileName("forward_multdists.root"); // --- Load libraries/pars --------------------------------------- fRailway->LoadLibrary("PWGLFforward2"); // --- Set load path --------------------------------------------- gROOT->SetMacroPath(Form("%s:$(ALICE_ROOT)/PWGLF/FORWARD/analysis2", gROOT->GetMacroPath())); // --- Get parameters -------------------------------------------- TString trig = fOptions.AsString("trig", "V0AND"); Double_t vzMin = fOptions.AsDouble("vzmin", -4); Double_t vzMax = fOptions.AsDouble("vzmax", +4); Bool_t phiAcc = fOptions.AsBool("phi-acc"); Bool_t aSymm = fOptions.AsBool("asymmetric"); // --- Form arguments -------------------------------------------- TString args; args.Form("\"%s\",%f,%f,%d,%d", trig.Data(), vzMin, vzMax, phiAcc, aSymm); // --- Add the task ---------------------------------------------- CoupleCar("AddTaskForwardMultDists.C(%s)", args); AddMonitor("ForwardMultSums"); } //__________________________________________________________________ /** * Do not the centrality selection */ //__________________________________________________________________ void CreateCentralitySelection(Bool_t) {} /** * Do not create MC input handler * * @return Always null */ AliVEventHandler* CreateMCHandler(UShort_t, bool) { return 0; } //__________________________________________________________________ /** * Crete output handler - we don't want one here. * * @return 0 */ AliVEventHandler* CreateOutputHandler(UShort_t) { return 0; } //__________________________________________________________________ const char* ClassName() const { return "MakeMultDistsTrain"; } //__________________________________________________________________ /** * Overloaded to create new draw.C * * @param asShellScript */ void SaveSetup(Bool_t asShellScript) { TrainSetup::SaveSetup(asShellScript); SaveSummarize(); SaveUnfold(); SaveDraw(); } void SaveUnfold() { std::ofstream f("Unfold.C"); if (!f) { Error("SaveUnfold", "Failed to open Unfold.C script"); return; } f << "// Generated by " << ClassName() << "\n" << "void Unfold(const char* other=\"\",\n" << " Double_t regP=20,\n" << " const char* here=\"forward_multdists.root\")\n" << "{\n" << " const char* rooUnfold = gSystem->Getenv(\"ROOUNFOLD\");\n" << " if (rooUnfold) {\n" << " gSystem->AddIncludePath(Form(\"-I%s/src\",rooUnfold));\n" << " gSystem->AddDynamicPath(Form(\"%s\", rooUnfold));\n" << " }\n" << " gSystem->Load(\"libRooUnfold\");\n" << " const char* fwd=\"$ALICE_ROOT/PWGLF/FORWARD/analysis2\";\n" << " gROOT->LoadMacro(Form(\"%s/scripts/UnfoldMultDists.C++g\",fwd));\n" << " UnfoldMultDists(\"bayes\",regP,here,other);\n" << "}\n" << "// EOF" << std::endl; f.close(); } void SaveSummarize() { std::ofstream f("Summarize.C"); if (!f) { Error("SaveSummarize", "Failed to open Summarize.C script"); return; } f << "// Generated by " << ClassName() << "\n" << "// WHAT is a bit mask of\n" << "// 0x001 Forward\n" << "// 0x002 Central\n" << "// 0x004 Sums\n" << "// 0x008 Results\n" << "// 0x010 Only min-bias (no centrality)\n" << "// 0x020 Landscape\n" << "// 0x040 Pause\n" << "//\n" << "void Summarize(const char* filename=\"forward_multdists.root\",\n" << " UShort_t what=0xF)\n" << "{\n" << " const char* fwd=\"$ALICE_ROOT/PWGLF/FORWARD/analysis2\";\n" << " gROOT->LoadMacro(Form(\"%s/DrawMultDistsSummary.C\",fwd));\n" << " DrawMultDistsSummary(filename,what);\n" << "}\n" << "// EOF" << std::endl; f.close(); } void SaveDraw() { std::ofstream f("Draw.C"); if (!f) { Error("SaveSummarize", "Failed to open Summarize.C script"); return; } f << "// Generated by " << ClassName() << "\n" << "// WHAT is a bit mask of\n" << "// 0x001 Forward\n" << "// 0x002 Central\n" << "// 0x004 Sums\n" << "// 0x008 Results\n" << "// 0x010 Only min-bias (no centrality)\n" << "// 0x020 Landscape\n" << "// 0x040 Pause\n" << "//\n" << "void Draw(const char* filename=\"forward_unfolded.root\",\n" << " UShort_t what=0xF)\n" << "{\n" << " const char* fwd=\"$ALICE_ROOT/PWGLF/FORWARD/analysis2\";\n" << " gROOT->LoadMacro(Form(\"%s/DrawUnfoldedSummary.C\",fwd));\n" << " DrawUnfoldedSummary(filename);\n" << "}\n" << "// EOF" << std::endl; f.close(); } void PostShellCode(std::ostream& f) { f << " echo \"=== Summarizing results ...\"\n" << " aliroot -l -b -q ${prefix}Summarize.C\n" << " echo \"=== Unfolding ...\"\n" << " export ROOUNFOLD=${HOME}/tmp/RooUnfoldMyEdits\n" << " mc=\n" << " if test x$dest != x ; then mc=${dest}/forward_multdists.root; fi\n" << " aliroot -l -b -q ${prefix}Unfold.C\\(\\\"${mc}\\\"\\)\n" << " aliroot -l -b -q ${prefix}Draw.C\n" << std::endl; } }; // // EOF //