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("residuals", "MODE", "Optional calculation of residuals", "");
33 fOptions.Set("type", "ESD");
36 //------------------------------------------------------------------
38 * Create the analysis manager
40 * @param name Name of the analysis
42 * @return Created analysis manager
44 virtual AliAnalysisManager* CreateAnalysisManager(const char* name)
46 AliAnalysisManager* mgr = TrainSetup::CreateAnalysisManager(name);
47 // mgr->SetAutoBranchLoading(false);
50 //__________________________________________________________________
54 * @param mgr Analysis manager
56 void CreateTasks(AliAnalysisManager* mgr)
58 // --- Output file name ------------------------------------------
59 AliAnalysisManager::SetCommonFileName("forward_eloss.root");
61 // --- Load libraries/pars ---------------------------------------
62 fHelper->LoadLibrary("PWGLFforward2");
64 // --- Set load path ---------------------------------------------
65 gROOT->SetMacroPath(Form("%s:$(ALICE_ROOT)/PWGLF/FORWARD/analysis2",
66 gROOT->GetMacroPath()));
68 // --- Check if this is MC ---------------------------------------
69 Bool_t mc = mgr->GetMCtruthEventHandler() != 0;
70 Bool_t cent = fOptions.Has("cent");
71 Int_t verb = fOptions.AsInt("verbose");
73 if (fOptions.Has("residuals")) resi = fOptions.Get("residuals");
75 // --- Add the task ----------------------------------------------
76 gROOT->Macro(Form("AddTaskFMDELoss.C(%d,%d,%d,\"%s\")",
77 mc, cent, verb, resi.Data()));
80 * Create entrality selection if enabled
82 * @param mc Whether this is MC or not
83 * @param mgr Analysis manager
85 virtual void CreateCentralitySelection(Bool_t mc, AliAnalysisManager* mgr)
87 if (!fOptions.Has("cent")) return;
89 const char* name = "CentralitySelection";
90 gROOT->Macro("AddTaskCentrality.C");
91 AliCentralitySelectionTask* ctask =
92 dynamic_cast<AliCentralitySelectionTask*>(mgr->GetTask(name));
94 // ctask->SetPass(fESDPass);
95 if (mc) ctask->SetMCInput();
98 * Crete output handler - we don't want one here.
102 AliVEventHandler* CreateOutputHandler(UShort_t) { return 0; }
104 //__________________________________________________________________
105 const char* ClassName() const { return "MakeFMDELossTrain"; }
106 //__________________________________________________________________
108 * Overloaded to create new Extract.C in the output
111 * @param asShellScript
113 void SaveSetup(Bool_t asShellScript)
115 TrainSetup::SaveSetup(asShellScript);
117 std::ofstream f("Extract.C");
119 Error("SaveSetup", "Failed to open Extract.C");
122 f << "// Generated by " << ClassName() << "\n"
123 << "void Extract()\n"
125 << " gROOT->LoadMacro(\"$ALICE_ROOT/PWGLF/FORWARD/analysis2/corrs/ExtractELoss.C\");\n"
126 << " ExtractELoss(\"forward_eloss.root\","
127 << fHelper->IsMC() << ");\n"
129 << "// EOF" << std::endl;