32 fOptions.
Add(
"run",
"NUMBER",
"Run number for corrs", 0);
33 fOptions.
Add(
"sys",
"SYSTEM",
"1:pp, 2:PbPb, 3:pPb", 0);
34 fOptions.
Add(
"snn",
"ENERGY",
"Center of mass energy in GeV", 0);
35 fOptions.
Add(
"field",
"STRENGTH",
"L3 field strength in kG", 0);
37 fOptions.
Add(
"dead",
"FILE",
"Additional dead-map script",
"");
38 fOptions.
Add(
"copy",
"LIST",
"',' separated list to copy",
"cent");
40 "Maximum consequtive strips (MC)", 2);
41 fOptions.
Add(
"forward-config",
"FILE",
"Forward configuration",
42 "ForwardAODConfig.C");
43 fOptions.
Add(
"central-config",
"FILE",
"Central configuration",
44 "CentralAODConfig.C");
45 fOptions.
Add(
"no-central",
"Do not at SPD cluster task",
false);
48 fOptions.
Add(
"satelitte",
"Use satelitte interactions");
49 fOptions.
Add(
"secmap",
"Use secondary maps to correct",
false);
50 fOptions.
Add(
"mc-tracks",
"Enable MC track filter",
false);
51 fOptions.
Add(
"hit-threshold",
"CUT",
"Threshold for hits", 0.9);
67 cmd.Form(
"((AliForwardMultiplicityBase*)%p)->%s(%s)",
68 tsk, call.Data(), arg.Data())
69 gROOT->ProcessLine(cmd);
83 cmd.Form(
"((AliForwardMCMultiplicityTask*)%p)->%s(%s)",
84 tsk, call.Data(), arg.Data())
85 gROOT->ProcessLine(cmd);
95 AliAnalysisManager::SetCommonFileName(
"forward.root");
101 gROOT->SetMacroPath(Form(
"%s:$(ALICE_PHYSICS)/PWGLF/FORWARD/analysis2",
102 gROOT->GetMacroPath()));
103 gROOT->SetMacroPath(Form(
"%s:$(ALICE_ROOT)/ANALYSIS/macros",
104 gROOT->GetMacroPath()));
107 Bool_t mc = mgr->GetMCtruthEventHandler() != 0;
109 UInt_t mask = AliVEvent::kAny;
115 Info(
"",
"What to copy: %s", cpy.Data());
116 CoupleSECar(
"AddTaskCopyHeader.C", Form(
"\"%s\"", cpy.Data()), mask);
135 Form(
"%d,%ld,%d,%d,%d,\"%s\",\"%s\",\"%s\"",
136 mc, run, sys, sNN, fld,
137 fwdConfig.Data(), corr.Data(),
140 Fatal(
"CoupleCars",
"Failed to add forward task");
141 SetOnFwd(fwd,
"GetCorrections().SetUseSecondaryMap", Form(
"%d",sec));
142 SetOnFwd(fwd,
"GetDensityCalculator()->SetHitThreshold", Form(
"%f", thr));
144 SetOnMCFwd(fwd,
"GetTrackDensity().SetMaxConsequtiveStrips",
159 Form(
"%d,%ld,%d,%d,%d,\"%s\",\"%s\"",
160 mc, run, sys, sNN, fld,
161 cenConfig.Data(), corr.Data()), mask);
165 gROOT->ProcessLine(Form(
"((AliCentralMultiplicityTask*)%p)"
166 "->SetUseSecondary(%d)",
186 const char*
ClassName()
const {
return "MakeAODTrain"; }
208 Warning(
"MakeAODTrain::SaveSetup",
209 "Cannot make dNdeta.C script without helper");
214 Bool_t mc = mgr && (mgr->GetMCtruthEventHandler() != 0);
217 TString cls(
"MakedNdetaTrain");
220 if (name.Contains(
"aod")) name.ReplaceAll(
"aod",
"dndeta");
221 else name.Append(
"_dndeta");
225 opts.Remove(
"field");
226 opts.Remove(
"tpc-ep");
228 opts.Remove(
"max-strips");
229 opts.Remove(
"mc-tracks");
230 opts.Remove(
"secmap");
232 opts.Add(
"abs-min-cent",
"PERCENT",
"Absolute least centrality",-1.);
233 opts.Add(
"cent-bins",
"BINS",
"Centrality bins",
"");
234 opts.Add(
"satellite",
"Restrict analysis to satellite events",
false);
235 opts.Add(
"trig",
"TRIGGER",
"Trigger type",
"INEL");
236 opts.Add(
"filter",
"FILTER",
"Filter type",
"OUTLIER|PILEUP-BIN");
237 opts.Add(
"ipz-bins",
"BINS",
"Lower bound on Ip Z",
"u10");
238 opts.Add(
"scheme",
"FLAGS",
"Normalization scheme",
"TRIGGER,EVENT");
239 opts.Add(
"trigEff",
"EFFICIENCY",
"Trigger efficiency", 1.);
240 opts.Add(
"trigEff0",
"EFFICIENCY",
"0-bin trigger efficiency", 1.);
241 opts.Add(
"mc",
"Also analyse MC truth",
fRailway->
IsMC());
242 opts.Add(
"truth-config",
"FILE",
"MC-Truth configuration",
"");
243 opts.Add(
"mean-ipz",
"MU",
"Mean of IPz dist.", 0);
244 opts.Add(
"var-ipz",
"SIGMA",
"Variance of IPz dist.", -1);
249 TUrl outUrl(outString);
251 if (uopts.Find(
"pattern"))
252 uopts.Set(
"pattern",
"*/AliAOD.root");
254 if (uopts.Find(
"par")) uopts.Set(
"par",
"task");
257 uopts.Store(s,
"",
"&",
false,
true);
258 outUrl.SetOptions(s.str().c_str());
260 const char* defConfig=
"$ALICE_PHYSICS/PWGLF/FORWARD/analysis2/dNdetaConfig.C";
261 opts.Set(
"url", outUrl.GetUrl());
262 opts.Set(
"type",
"AOD");
263 opts.Set(
"forward-config",defConfig);
264 opts.Set(
"central-config",defConfig);
265 opts.Set(
"truth-config",defConfig);
269 opts.Set(
"cent",
"default");
270 opts.Set(
"trig",
"V0AND");
271 opts.Set(
"scheme",
"default");
272 opts.Set(
"centBins",
"default");
278 name.ReplaceAll(
"dndeta",
"dndeta_inel");
283 name.ReplaceAll(
"inel",
"nsd");
284 opts.Set(
"trig",
"V0AND");
289 name.ReplaceAll(
"nsd",
"inelgt0");
290 opts.Set(
"trig",
"INELGT0");
302 std::ofstream f(
"Summarize.C");
304 Error(
"SaveSummarize",
"Failed to open Summarize.C script");
307 f <<
"// Generated by " <<
ClassName() <<
"\n"
308 <<
"// WHAT is a bit mask of\n"
309 <<
"// 0x001 Event inspector\n"
310 <<
"// 0x002 Sharing filter\n"
311 <<
"// 0x004 Density calculator\n"
312 <<
"// 0x008 Corrector\n"
313 <<
"// 0x010 Histogram collector\n"
314 <<
"// 0x020 Analysis step cartoon\n"
315 <<
"// 0x040 Results\n"
316 <<
"// 0x080 Central\n"
317 <<
"// 0x100 Landscape\n"
318 <<
"// 0x200 Pause\n"
320 <<
"void Summarize(const char* filename=\"forward.root\",\n"
321 <<
" UShort_t what=0x1FF)\n"
323 <<
" const char* fwd=\"$ALICE_PHYSICS/PWGLF/FORWARD/analysis2\";\n"
324 <<
" gROOT->LoadMacro(Form(\"%s/DrawAODSummary.C\",fwd));\n"
325 <<
" DrawAODSummary(filename,what);\n"
327 <<
"// EOF" << std::endl;
336 std::ofstream f(
"DownloadAODs.C");
338 Error(
"SaveDownloadAODs",
"Failed to open DownloadAODs.C");
341 f <<
"// Generated by " <<
ClassName() <<
"\n"
342 <<
"void DownloadAODs(Bool_t force=false)\n"
344 <<
" if (!TGrid::Connect(\"alien://\")) {\n"
345 <<
" Error(\"DownloadAODs\",\"Failed to connect to AliEn\");\n"
349 <<
" TString pat(\"*/AliAOD.root\");\n"
350 <<
" TGridResult* r = gGrid->Query(dir,pat);\n"
352 <<
" Error(\"DownloadAODs\",\"No result from query\");\n"
355 <<
" Int_t n = r->GetEntries();\n"
356 <<
" Printf(\"=== Got a total of %d AOD files\",n);\n"
357 <<
" for (Int_t i = 0; i < n; i++) {\n"
358 <<
" TString path(r->GetKey(i, \"turl\"));\n"
359 <<
" TString dir(gSystem->DirName(path));\n"
360 <<
" TString sub(gSystem->BaseName(dir));\n"
361 <<
" TString subsub(gSystem->BaseName(gSystem->DirName(dir)));\n"
362 <<
" TString out = TString::Format(\"AliAOD_%s_%s.root\",\n"
363 <<
" subsub.Data(),sub.Data());\n"
364 <<
" if (!gSystem->AccessPathName(out.Data()) && !force) {\n"
365 <<
" Printf(\"=== Already have %s\",out.Data());\n"
368 <<
" Printf(\"=== Getting %s %s (%3d/%3d)\",\n"
369 <<
" subsub.Data(),sub.Data(),i,n);\n"
370 <<
" if (!TFile::Cp(path, out)) {\n"
371 <<
" Warning(\"DownloadAODs\",\"Failed to copy %s -> %s\",\n"
372 <<
" path.Data(), out.Data());\n"
383 std::ofstream out(
"MakeIndex.C");
384 out <<
"// Made by " <<
ClassName() <<
"\n"
385 <<
"void MakeIndex() {\n"
386 <<
" gROOT->LoadMacro(\"$ALICE_PHYSICS/PWGLF/FORWARD/trains/CreateIndex.C\");\n"
387 <<
" CreateIndex(\".\",\"aodTree\");\n"
389 <<
"// EOD" << std::endl;
394 f <<
" echo \"=== Summarizing results ...\"\n"
395 <<
" aliroot -l -b -q ${prefix}Summarize.C\n"
Double_t AsDouble(const TString &name, Double_t def=0) const
virtual void CreateCentralitySelection(Bool_t mc)
void SaveSetup(Bool_t asShellScript)
const char * ClassName() const
Int_t AsInt(const TString &name, Int_t def=0) const
static void SaveSetupShell(const TString &out, const TString &cls, const TString &name, const OptionList &opts, const OptionList *uopts)
void SetOnMCFwd(AliAnalysisTask *task, const TString &call, const TString &arg)
const TString & Get(const TString &name) const
virtual UShort_t Mode() const =0
Bool_t Has(const TString &name) const
void CreateTasks(AliAnalysisManager *mgr)
const OptionList & Options() const
MakeAODTrain(const TString &name)
void Set(const TString &name, const TString &value)
virtual Bool_t IsMC() const
Base classs for train specifications.
Option * Add(const TString &name, const TString &arg, const TString &desc, const TString &val="")
virtual TString OutputLocation() const
virtual void SaveSetup(Bool_t asShellScript)
virtual Bool_t LoadAux(const TString &name, Bool_t copy=false)
void SavedNdeta(Bool_t asShellScript)
virtual TString OutputPath() const
void PostShellCode(std::ostream &f)
void SetOnFwd(AliAnalysisTask *task, const TString &call, const TString &arg)
virtual AliAnalysisTaskSE * CoupleSECar(const TString ¯o, const TString &args, UInt_t mask=0)
virtual Bool_t LoadLibrary(const TString &name, Bool_t slave=true, Bool_t forcePar=false)=0
void CreateCentralitySelection(Bool_t mc)
static void SaveSetupROOT(const TString &out, const TString &cls, const TString &name, const OptionList &opts, const OptionList *uopts)