2 * @file MakeFMDELossTrain.C
3 * @author Christian Holm Christensen <cholm@master.hehi.nbi.dk>
4 * @date Fri Jun 1 13:53:02 2012
9 * @ingroup pwglf_forward_trains_specific
11 #include "TrainSetup.C"
13 //====================================================================
15 * Analysis train to do energy loss fits
17 * @ingroup pwglf_forward_trains_specific
18 * @ingroup pwglf_forward_eloss
20 class MakeFMDELossTrain : public TrainSetup
26 * @param name Name of train
28 MakeFMDELossTrain(const char* name = "FMD Energy Loss")
31 fOptions.Add("cent", "Use centrality");
32 fOptions.Add("only-mb", "Only collect statistics from MB events");
33 fOptions.Add("residuals", "MODE", "Optional calculation of residuals", "");
34 fOptions.Set("type", "ESD");
37 //------------------------------------------------------------------
39 * Create the analysis manager
41 * @param name Name of the analysis
43 * @return Created analysis manager
45 virtual AliAnalysisManager* CreateAnalysisManager(const char* name)
47 AliAnalysisManager* mgr = TrainSetup::CreateAnalysisManager(name);
48 // mgr->SetAutoBranchLoading(false);
51 //__________________________________________________________________
55 * @param mgr Analysis manager
57 void CreateTasks(AliAnalysisManager* mgr)
59 // --- Output file name ------------------------------------------
60 AliAnalysisManager::SetCommonFileName("forward_eloss.root");
62 // --- Load libraries/pars ---------------------------------------
63 fHelper->LoadLibrary("PWGLFforward2");
65 // --- Set load path ---------------------------------------------
66 gROOT->SetMacroPath(Form("%s:$(ALICE_ROOT)/PWGLF/FORWARD/analysis2",
67 gROOT->GetMacroPath()));
69 // --- Check if this is MC ---------------------------------------
70 Bool_t mc = HasMCHandler();
71 Bool_t cent = fOptions.Has("cent");
72 Bool_t onlyMB = fOptions.AsBool("only-mb");
73 Int_t verb = fOptions.AsInt("verbose");
75 if (fOptions.Has("residuals")) resi = fOptions.Get("residuals");
77 // --- Add the task ----------------------------------------------
78 AddTask("AddTaskFMDELoss.C", Form("%d,%d,%d,%d,\"%s\"",
79 mc, cent, onlyMB, verb, resi.Data()));
82 * Create entrality selection if enabled
84 * @param mc Whether this is MC or not
85 * @param mgr Analysis manager
87 virtual void CreateCentralitySelection(Bool_t mc, AliAnalysisManager* mgr)
89 if (!fOptions.Has("cent")) return;
91 const char* name = "CentralitySelection";
92 gROOT->Macro("AddTaskCentrality.C");
93 AliCentralitySelectionTask* ctask =
94 dynamic_cast<AliCentralitySelectionTask*>(mgr->GetTask(name));
96 // ctask->SetPass(fESDPass);
97 if (mc) ctask->SetMCInput();
100 * Crete output handler - we don't want one here.
104 AliVEventHandler* CreateOutputHandler(UShort_t) { return 0; }
106 //__________________________________________________________________
107 const char* ClassName() const { return "MakeFMDELossTrain"; }
108 //__________________________________________________________________
110 * Overloaded to create new Extract.C in the output
113 * @param asShellScript
115 void SaveSetup(Bool_t asShellScript)
117 TrainSetup::SaveSetup(asShellScript);
123 std::ofstream f("Extract.C");
125 Error("SaveSetup", "Failed to open Extract.C");
128 f << "// Generated by " << ClassName() << "\n"
129 << "void Extract()\n"
131 << " const char* fwd=\"$ALICE_ROOT/PWGLF/FORWARD/analysis2\";\n"
132 << " gROOT->LoadMacro(Form(\"%s/corrs/ExtractELoss.C\",fwd));\n"
133 << " ExtractELoss(\"forward_eloss.root\","
134 << fHelper->IsMC() << ");\n"
136 << "// EOF" << std::endl;
141 std::ofstream f("Summarize.C");
143 Error("SaveSummarize", "Failed to open Summarize.C script");
146 f << "// Generated by " << ClassName() << "\n"
148 << "void Summarize(Bool_t mc=false,\n"
149 << " const char* filename=\"forward_eloss.root\")\n"
151 << " const char* fwd=\"$ALICE_ROOT/PWGLF/FORWARD/analysis2\";\n"
152 << " gROOT->LoadMacro(Form(\"%s/corrs/DrawCorrELoss.C\",fwd));\n"
153 << " DrawCorrELoss(mc,filename);\n"
155 << "// EOF" << std::endl;
158 void PostShellCode(std::ostream& f)
160 Bool_t mc = HasMCHandler();
161 f << " echo \"=== Extracting Corrections ...\"\n"
162 << " aliroot -l -b -q ${prefix}Extract.C\n"
163 << " echo \"=== Summarizing results ...\"\n"
164 << " aliroot -l -b -q ${prefix}Summarize.C\\(" << mc << "\\)\n"
165 << " if test x$dest = x ; then return ; fi\n"
166 << " echo \"=== Uploading to ${dest} ...\"\n"
167 << " aliroot -l -b -q Upload.C\\(\\\"${dest}\\\"\\);\n"