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)