33 fOptions.
Add(
"run",
"NUMBER",
"Run number for corrs", 0);
34 fOptions.
Add(
"sys",
"SYSTEM",
"1:pp, 2:PbPb, 3:pPb", 0);
35 fOptions.
Add(
"snn",
"ENERGY",
"Center of mass energy in GeV", 0);
36 fOptions.
Add(
"field",
"STRENGTH",
"L3 field strength in kG", 0);
38 fOptions.
Add(
"dead",
"FILE",
"Additional dead-map script",
"");
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);
47 fOptions.
Add(
"satelitte",
"Use satelitte interactions");
48 fOptions.
Add(
"secmap",
"Use secondary maps to correct",
false);
49 fOptions.
Add(
"hit-threshold",
"CUT",
"Threshold for hits", 0.9);
52 fOptions.
Add(
"copy",
"LIST",
"',' separated list to copy",
"cent");
53 fOptions.
Add(
"mc-tracks",
"Enable MC track filter",
false);
57 fOptions.
Add(
"max-delta",
"X",
"Cut on weighted distance",25.);
58 fOptions.
Add(
"scale-dtheta",
"Scale dTheta" ,
true);
59 fOptions.
Add(
"dphi-window",
"X",
"dPhi window", 0.06);
60 fOptions.
Add(
"dtheta-window",
"X",
"dTheta window", 0.025);
61 fOptions.
Add(
"dphi-shift",
"X",
"Bending shift", 0.0045);
62 fOptions.
Add(
"phi-overlap-cut",
"X",
"Phi overlap cut", 0.005);
63 fOptions.
Add(
"z-eta-overlap-cut",
"X",
"Z-Eta overlap cut", 0.05);
64 fOptions.
Add(
"filter-mode",
"MODE",
"Filter strange clusters", 0);
65 fOptions.
Add(
"filter-weight",
"FILE",
"File with filter weights",
"");
66 fOptions.
Add(
"need-clusters",
"If set, insist on RecPoints",
false);
96 AliMCEventHandler* ret =
98 if (ret) ret->SetPreReadMode(AliMCEventHandler::kLmPreRead);
116 Info(
"",
"What to copy: %s", cpy.Data());
117 CoupleSECar(
"AddTaskCopyHeader.C", Form(
"\"%s\"", cpy.Data()), mask);
131 cmd.Form(
"((AliForwardMultiplicityBase*)%p)->%s(%s)",
132 task, call.Data(), arg.Data());
133 gROOT->ProcessLine(cmd);
147 cmd.Form(
"((AliForwardMCMultiplicityTask*)%p)->%s(%s)",
148 task, call.Data(), arg.Data());
149 gROOT->ProcessLine(cmd);
161 AliAnalysisManager::SetCommonFileName(
"forward.root");
180 Form(
"%d,%ld,%d,%d,%d,\"%s\",\"%s\",\"%s\"",
181 mc, run, sys, sNN, fld,
182 fwdConfig.Data(), corr.Data(),
185 Fatal(
"CoupleForwardCar",
"Failed to add forward task");
187 SetOnFwd(fwd,
"GetCorrections().SetUseSecondaryMap", Form(
"%d",sec));
190 SetOnMCFwd(fwd,
"GetTrackDensity().SetMaxConsequtiveStrips",
208 if (noCentral)
return;
223 Form(
"%d,%ld,%d,%d,%d,\"%s\",\"%s\"",
224 mc, run, sys, sNN, fld,
225 cenConfig.Data(), corr.Data()),
228 Fatal(
"CoupleClusterCar",
"Failed to add central (cluster) task");
232 gROOT->ProcessLine(Form(
"((AliCentralMultiplicityTask*)%p)"
233 "->SetUseSecondary(%d)",
246 AliAnalysisManager::SetCommonFileName(
"tracklet.root");
258 if (!gROOT->ProcessLine(
"AliSimpleHeaderTask::Create()"))
259 Fatal(
"CoupleTrackletTask",
"Failed to make simple header task");
263 gROOT->ProcessLine(Form(
"AliTrackletAODTask::Create(\"%s\")",
267 Fatal(
"CoupleTrackletCar",
"Failed to make tracklet task");
270 FromOption(task,
"MaxDelta",
"max-delta", 25.);
271 FromOption(task,
"ScaleDTheta",
"scale-dtheta",
true);
272 FromOption(task,
"DPhiWindow",
"dphi-window", 0.06);
273 FromOption(task,
"DThetaWindow",
"dtheta-window", 0.025);
274 FromOption(task,
"DPhiShift",
"dphi-shift", 0.0045);
275 FromOption(task,
"PhiOverlapCut",
"phi-overlap-cut" , 0.005);
276 FromOption(task,
"ZEtaOverlapCut",
"z-eta-overlap-cut", 0.05);
277 FromOption(task,
"FilterMode",
"filter-mode", 0);
289 AliAnalysisManager::SetCommonFileName(
"AnalysisResults.root");
305 TString mp(gROOT->GetMacroPath());
306 mp.Append(
":$(ALICE_PHYSICS)/PWGLF/FORWARD/analysis2");
307 mp.Append(
":$(ALICE_ROOT)/ANALYSIS/macros");
308 mp.Append(
":$(ALICE_PHYSICS)/PWGLF/FORWARD/analysis2/dndeta/tracklets3");
309 gROOT->SetMacroPath(mp);
312 Bool_t mc = mgr->GetMCtruthEventHandler() != 0;
313 UInt_t mask = AliVEvent::kAny;
334 const char*
ClassName()
const {
return "BothAODTrain"; }
356 Warning(
"BothAODTrain::SaveSetup",
357 "Cannot make dNdeta.C script without helper");
362 Bool_t mc = mgr && (mgr->GetMCtruthEventHandler() != 0);
365 TString cls(
"BothdNdetaTrain");
368 if (name.Contains(
"aod")) name.ReplaceAll(
"aod",
"dndeta");
369 else name.Append(
"_dndeta");
373 opts.Remove(
"field");
374 opts.Remove(
"tpc-ep");
376 opts.Remove(
"max-strips");
377 opts.Remove(
"mc-tracks");
378 opts.Remove(
"secmap");
380 opts.Remove(
"scale-dtheta");
381 opts.Remove(
"dphi-window");
382 opts.Remove(
"dtheta-window");
383 opts.Remove(
"phi-overlap-cut");
384 opts.Remove(
"z-eta-overlap-cut");
385 opts.Remove(
"filter-k0s");
387 opts.Add(
"cent-bins",
"BINS",
"Centrality bins",
"");
388 opts.Add(
"ipz-bins",
"BINS",
"IPz bins",
"u15");
389 opts.Add(
"satellite",
"Restrict analysis to satellite events",
false);
390 opts.Add(
"trig",
"TRIGGER",
"Trigger type",
"INEL");
391 opts.Add(
"filter",
"FILTER",
"Filter type",
"OUTLIER|PILEUP-BIN");
392 opts.Add(
"mc",
"Also analyse MC truth",
fRailway->
IsMC());
393 opts.Add(
"multsel",
"Enable MultSelection",
false);
394 opts.Add(
"abs-min-cent",
"PERCENT",
"Absolute least cent.", -1);
396 opts.Add(
"scheme",
"FLAGS",
"Normalization scheme",
"TRIGGER,EVENT");
397 opts.Add(
"trigEff",
"EFFICIENCY",
"Trigger efficiency", 1.);
398 opts.Add(
"trigEff0",
"EFFICIENCY",
"0-bin trigger efficiency",1.);
399 opts.Add(
"truth-config",
"FILE",
"MC-Truth configuration",
"");
400 opts.Add(
"mean-ipz",
"MU",
"Mean of IPz dist.", 0);
401 opts.Add(
"var-ipz",
"SIGMA",
"Variance of IPz dist.", -1);
403 opts.Add(
"eta-bins",
"BINS",
"Eta bins",
"r16:-2:+2");
404 opts.Add(
"tail-delta",
"X",
"Tail cut on distance", 5.);
405 opts.Add(
"tail-max",
"X",
"Tail cut on distance", -1.);
406 opts.Add(
"delta-cut",
"X",
"Cut on weighted distance",1.5);
407 opts.Add(
"shifted-dphi-cut",
"RADIANS",
"Cut on dPhi-phiBent", -1.);
408 opts.Add(
"reweigh",
"FILE",
"File with weights",
"");
409 opts.Add(
"reweigh-calc",
"MODE",
"prod,square,sum",
"prod");
410 opts.Add(
"reweigh-mask",
"MASK",
"Tracklet mask for weighing", 0xFF);
411 opts.Add(
"reweigh-veto",
"VETO",
"Tracklet veto for weighing", 0x0);
412 opts.Add(
"reweigh-inv",
"W -> 1/W",
false);
417 TUrl outUrl(outString);
419 if (uopts.Find(
"pattern"))
420 uopts.Set(
"pattern",
"*/AliAOD.root");
422 if (uopts.Find(
"par")) uopts.Set(
"par",
"task");
425 uopts.Store(s,
"",
"&",
false,
true);
426 outUrl.SetOptions(s.str().c_str());
428 const char* defConfig=
429 "$ALICE_PHYSICS/PWGLF/FORWARD/analysis2/dNdetaConfig.C";
430 opts.Set(
"url", outUrl.GetUrl());
431 opts.Set(
"type",
"AOD");
432 opts.Set(
"forward-config",defConfig);
433 opts.Set(
"central-config",defConfig);
434 opts.Set(
"truth-config",defConfig);
438 opts.Set(
"cent",
"default");
439 opts.Set(
"trig",
"V0AND");
440 opts.Set(
"scheme",
"default");
441 opts.Set(
"cent-bins",
"default");
447 name.ReplaceAll(
"dndeta",
"dndeta_inel");
452 name.ReplaceAll(
"inel",
"nsd");
453 opts.Set(
"trig",
"V0AND");
458 name.ReplaceAll(
"nsd",
"inelgt0");
459 opts.Set(
"trig",
"INELGT0");
471 std::ofstream f(
"Summarize.C");
473 Error(
"SaveSummarize",
"Failed to open Summarize.C script");
476 f <<
"// Generated by " <<
ClassName() <<
"\n"
477 <<
"// WHAT is a bit mask of\n"
478 <<
"// 0x001 Event inspector\n"
479 <<
"// 0x002 Sharing filter\n"
480 <<
"// 0x004 Density calculator\n"
481 <<
"// 0x008 Corrector\n"
482 <<
"// 0x010 Histogram collector\n"
483 <<
"// 0x020 Analysis step cartoon\n"
484 <<
"// 0x040 Results\n"
485 <<
"// 0x080 Central\n"
486 <<
"// 0x100 Landscape\n"
487 <<
"// 0x200 Pause\n"
489 <<
"void Summarize(const char* filename=\"forward.root\",\n"
490 <<
" UShort_t what=0x1FF)\n"
492 <<
" const char* fwd=\"$ALICE_PHYSICS/PWGLF/FORWARD/analysis2\";\n"
493 <<
" gROOT->LoadMacro(Form(\"%s/DrawAODSummary.C\",fwd));\n"
494 <<
" DrawAODSummary(filename,what);\n"
496 <<
"// EOF" << std::endl;
506 f <<
" echo \"=== Summarizing results ...\"\n"
507 <<
" aliroot -l -b -q ${prefix}Summarize.C\n"
Double_t AsDouble(const TString &name, Double_t def=0) const
void CoupleTrackletCar(AliAnalysisManager *mgr, Bool_t mc, UInt_t mask)
virtual void CreateCentralitySelection(Bool_t mc)
virtual AliVEventHandler * CreateInputHandler(UShort_t type, Bool_t esdRecPoints=false)
void CoupleClusterCar(AliAnalysisManager *mgr, Bool_t mc, UInt_t mask)
void PostShellCode(std::ostream &f)
Bool_t AsBool(const TString &name) const
virtual AliVEventHandler * CreateMCHandler(UShort_t, bool mc)
Int_t AsInt(const TString &name, Int_t def=0) const
const char * AsString(const TString &name, const TString &def="") const
static void SaveSetupShell(const TString &out, const TString &cls, const TString &name, const OptionList &opts, const OptionList *uopts)
void CreateTasks(AliAnalysisManager *mgr)
const TString & Get(const TString &name) const
Bool_t Has(const TString &name) const
AliVEventHandler * CreateMCHandler(UShort_t type, bool mc)
BothAODTrain(const TString &name)
void CoupleForwardCar(AliAnalysisManager *mgr, Bool_t mc, UInt_t mask)
const OptionList & Options() const
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
void CouplePostCars(AliAnalysisManager *mgr, Bool_t mc, UInt_t mask)
void SaveSetup(Bool_t asShellScript)
virtual void SaveSetup(Bool_t asShellScript)
virtual Bool_t LoadAux(const TString &name, Bool_t copy=false)
void CouplePreCars(AliAnalysisManager *mgr, Bool_t mc, UInt_t mask)
void FromOption(AliAnalysisTaskSE *task, const char *what, const char *opt, Double_t defval)
void SetOnFwd(AliAnalysisTask *task, const TString &call, const TString &arg)
AliVEventHandler * CreateInputHandler(UShort_t type, Bool_t needRec=false)
void SetOnMCFwd(AliAnalysisTask *task, const TString &call, const TString &arg)
void CreateCentralitySelection(Bool_t mc)
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
const char * ClassName() const
static void SaveSetupROOT(const TString &out, const TString &cls, const TString &name, const OptionList &opts, const OptionList *uopts)
virtual Bool_t LoadSource(const TString &name, bool copy=false)
void SavedNdeta(Bool_t asShellScript)