33 fOptions.
Add(
"use-tuple",
"Whether to make an NTuple of hits");
34 fOptions.
Add(
"max-strips",
"NUMBER",
"Max strips/cluster", 2);
46 AliAnalysisManager::SetCommonFileName(
"forward_mctracks.root");
61 gROOT->SetMacroPath(Form(
"%s:$(ALICE_PHYSICS)/PWGLF/FORWARD/analysis2",
62 gROOT->GetMacroPath()));
65 if (!mgr->GetMCtruthEventHandler())
66 Fatal(
"CreateTasks",
"No MC truth handler");
72 TString args = TString::Format(
"%d,%d,%d",
76 if (!
CoupleCar(
"AddTaskFMDMCTracks.C", args))
77 Fatal(
"CreateTasks",
"Couldn't add our task");
92 AliInputEventHandler* ih =
93 dynamic_cast<AliInputEventHandler*
>(mgr->GetInputEventHandler());
95 Fatal(
"CreatePhysicsSelection",
"Couldn't get input handler (%p)", ih);
98 AliPhysicsSelection* ps =
99 dynamic_cast<AliPhysicsSelection*
>(ih->GetEventSelection());
101 Fatal(
"CreatePhysicsSelection",
"Couldn't get PhysicsSelection (%p)", ps);
117 const char*
ClassName()
const {
return "MakeFMDMCTrackTrain"; }
144 std::ofstream f(
"Summarize.C");
146 Error(
"SaveSummarize",
"Failed to open Summarize.C script");
149 f <<
"// Generated by " <<
ClassName() <<
"\n"
150 <<
"// WHAT is a bit mask of\n"
151 <<
"// 0x001 Event inspector\n"
152 <<
"// 0x002 Track inspector\n"
153 <<
"// 0x004 Energy loss fits\n"
154 <<
"// 0x100 Landscape\n"
155 <<
"// 0x200 Pause\n"
157 <<
"void Summarize(const char* filename=\"forward_mctracks.root\",\n"
158 <<
" UShort_t what=0x10F)\n"
160 <<
" const char* fwd=\"$ALICE_PHYSICS/PWGLF/FORWARD/analysis2\";\n"
161 <<
" gROOT->LoadMacro(Form(\"%s/scripts/SummaryMCTrackDrawer.C+g\",fwd));\n"
162 <<
" SummaryMCTrackDrawer smd;\n"
163 <<
" smd.Run(filename,what);\n"
165 <<
"// EOF" << std::endl;
174 std::ofstream f(
"DownloadTrees.C");
176 Error(
"SaveDownloadTrees",
"Failed to open DownloadTrees.C");
179 f <<
"// Generated by " <<
ClassName() <<
"\n"
180 <<
"void DownloadTrees(Bool_t force=false)\n"
182 <<
" if (!TGrid::Connect(\"alien://\")) {\n"
183 <<
" Error(\"DownloadTrees\",\"Failed to connect to AliEn\");\n"
187 <<
" TString pat(\"*/forward_tuple.root\");\n"
188 <<
" TGridResult* r = gGrid->Query(dir,pat);\n"
190 <<
" Error(\"DownloadTrees\",\"No result from query\");\n"
193 <<
" Int_t n = r->GetEntries();\n"
194 <<
" Printf(\"=== Got a total of %d AOD files\",n);\n"
195 <<
" for (Int_t i = 0; i < n; i++) {\n"
196 <<
" TString path(r->GetKey(i, \"turl\"));\n"
197 <<
" TString dir(gSystem->DirName(path));\n"
198 <<
" TString sub(gSystem->BaseName(dir));\n"
199 <<
" TString subsub(gSystem->BaseName(gSystem->DirName(dir)));\n"
200 <<
" TString out = TString::Format(\"forward_tree_%s_%s.root\",\n"
201 <<
" subsub.Data(),sub.Data());\n"
202 <<
" if (!gSystem->AccessPathName(out.Data()) && !force) {\n"
203 <<
" Printf(\"=== Already have %s\",out.Data());\n"
206 <<
" Printf(\"=== Getting %s %s (%3d/%3d)\",\n"
207 <<
" subsub.Data(),sub.Data(),i,n);\n"
208 <<
" if (!TFile::Cp(path, out)) {\n"
209 <<
" Warning(\"DownloadTrees\",\"Failed to copy %s -> %s\",\n"
210 <<
" path.Data(), out.Data());\n"
225 std::ofstream f(
"AnalyseNTuple.C");
227 Error(
"SaveAnalyseNTuple",
"Failed to open AnalyseNTuple.C");
230 f <<
"// Generated by " <<
ClassName() <<
"\n"
231 <<
"// Process with bare ROOT in ProofLite\n"
232 <<
"void AnalyseNTuple(Bool_t proof=true,\n"
233 <<
" Long64_t max=-1,\n"
234 <<
" const char* opt=\"\")\n"
236 <<
" const char* fwd=\"$ALICE_PHYSICS/PWGLF/FORWARD/analysis2\";\n"
237 <<
" gSystem->AddIncludePath(\"-I${ALICE_PHYSICS}/include\");\n"
238 <<
" gROOT->Macro(Form(\"%s/scripts/LoadLibs.C\",fwd));\n"
239 <<
" gROOT->LoadMacro(Form(\"%s/scripts/TupleSelector.C+%s\",\n"
241 <<
" if (proof) TupleSelector::Proof(maxEvents, opt);\n"
242 <<
" else TupleSelector::Run(maxEvents);\n"
244 <<
"// EOF" << std::endl;
249 std::ofstream f(
"ReFit.C");
251 Error(
"SaveRerun",
"Failed to open ReFit.C script");
255 <<
"// Generated by " <<
ClassName() <<
"\n"
256 <<
"// If force=true, then force set parameters\n"
258 <<
"void ReFit(Bool_t force=false,\n"
259 <<
" const char* filename=\"forward_mctracks.root\")\n"
261 <<
" const char* fwd=\"$ALICE_PHYSICS/PWGLF/FORWARD/analysis2\";\n"
262 <<
" gROOT->LoadMacro(Form(\"%s/corrs/RerunTrackELoss.C\",fwd));\n"
263 <<
" RerunTrackELoss(force,filename);\n"
265 <<
"// EOF" << std::endl;
271 f <<
" echo \"=== Summarizing results ...\"\n"
272 <<
" aliroot -l -b -q ${prefix}Summarize.C\n"
Bool_t AsBool(const TString &name) const
Int_t AsInt(const TString &name, Int_t def=0) const
void SaveSetup(Bool_t asShellScript)
void CreatePhysicsSelection(Bool_t mc, AliAnalysisManager *mgr)
virtual UShort_t Mode() const =0
const char * ClassName() const
void Set(const TString &name, const TString &value)
void CreateTasks(AliAnalysisManager *mgr)
void PostShellCode(std::ostream &f)
Base classs for train specifications.
Option * Add(const TString &name, const TString &arg, const TString &desc, const TString &val="")
virtual void SaveSetup(Bool_t asShellScript)
virtual TString OutputPath() const
MakeFMDMCTrackTrain(const char *name)
virtual AliAnalysisTask * CoupleCar(const TString ¯o, const TString &args)
virtual void CreatePhysicsSelection(Bool_t mc, AliAnalysisManager *mgr)
virtual Bool_t LoadLibrary(const TString &name, Bool_t slave=true, Bool_t forcePar=false)=0
virtual AliVEventHandler * CreateOutputHandler(UShort_t)