]>
Commit | Line | Data |
---|---|---|
bfab35d9 | 1 | /** |
2 | * @file MakeMultDistsTrain.C | |
3 | * @author Christian Holm Christensen <cholm@master.hehi.nbi.dk> | |
4 | * @date Fri Jun 1 13:51:26 2012 | |
5 | * | |
6 | * @brief | |
7 | * | |
8 | * @ingroup pwglf_forward_trains_specific | |
9 | * | |
10 | */ | |
11 | ||
12 | #include "TrainSetup.C" | |
13 | ||
14 | //==================================================================== | |
15 | /** | |
671df6c9 | 16 | * Analysis train to make @f$ P(N_{ch})@f$ |
bfab35d9 | 17 | * |
18 | * | |
671df6c9 | 19 | * @ingroup pwglf_forward_multdists |
bfab35d9 | 20 | * @ingroup pwglf_forward_trains_specific |
21 | */ | |
22 | class MakeMultDistsTrain : public TrainSetup | |
23 | { | |
24 | public: | |
25 | /** | |
26 | * Constructor. | |
27 | * | |
28 | * @param name Name of train (free form) | |
29 | */ | |
30 | MakeMultDistsTrain(const char* name) | |
31 | : TrainSetup(name) | |
32 | { | |
33 | fOptions.Add("trig", "TYPE", "Trigger type", "V0AND"); | |
34 | fOptions.Add("vzMin", "CENTIMETER", "Min Ip Z", -4); | |
35 | fOptions.Add("vzMax", "CENTIMETER", "Max Ip Z", +4); | |
9aba161a | 36 | fOptions.Add("phi-acc", "Use stored phi acceptance", false); |
91b3e533 | 37 | fOptions.Add("asymmetric", "Make asymmetric (+/-) bins", false); |
bfab35d9 | 38 | } |
39 | protected: | |
40 | /** | |
41 | * Create the tasks | |
42 | * | |
43 | */ | |
44 | void CreateTasks(AliAnalysisManager*) | |
45 | { | |
46 | // --- Output file name ------------------------------------------ | |
47 | AliAnalysisManager::SetCommonFileName("forward_multdists.root"); | |
48 | ||
49 | // --- Load libraries/pars --------------------------------------- | |
78ac7e09 | 50 | fRailway->LoadLibrary("PWGLFforward2"); |
bfab35d9 | 51 | |
52 | // --- Set load path --------------------------------------------- | |
53 | gROOT->SetMacroPath(Form("%s:$(ALICE_ROOT)/PWGLF/FORWARD/analysis2", | |
54 | gROOT->GetMacroPath())); | |
55 | ||
56 | // --- Get parameters -------------------------------------------- | |
57 | TString trig = fOptions.AsString("trig", "V0AND"); | |
58 | Double_t vzMin = fOptions.AsDouble("vzmin", -4); | |
59 | Double_t vzMax = fOptions.AsDouble("vzmax", +4); | |
bfab35d9 | 60 | Bool_t phiAcc = fOptions.AsBool("phi-acc"); |
61 | Bool_t aSymm = fOptions.AsBool("asymmetric"); | |
62 | ||
63 | // --- Form arguments -------------------------------------------- | |
64 | TString args; | |
d4a5ea4a | 65 | args.Form("\"%s\",%f,%f,%d,%d", |
66 | trig.Data(), vzMin, vzMax, phiAcc, aSymm); | |
bfab35d9 | 67 | // --- Add the task ---------------------------------------------- |
78ac7e09 | 68 | CoupleCar("AddTaskForwardMultDists.C(%s)", args); |
6ee074b7 | 69 | AddMonitor("ForwardMultSums"); |
bfab35d9 | 70 | } |
71 | //__________________________________________________________________ | |
72 | /** | |
73 | * Do not the centrality selection | |
74 | */ | |
75 | //__________________________________________________________________ | |
78ac7e09 | 76 | void CreateCentralitySelection(Bool_t) {} |
bfab35d9 | 77 | /** |
78 | * Do not create MC input handler | |
79 | * | |
80 | * @return Always null | |
81 | */ | |
82 | AliVEventHandler* CreateMCHandler(UShort_t, bool) { return 0; } | |
83 | //__________________________________________________________________ | |
84 | /** | |
85 | * Crete output handler - we don't want one here. | |
86 | * | |
87 | * @return 0 | |
88 | */ | |
89 | AliVEventHandler* CreateOutputHandler(UShort_t) { return 0; } | |
90 | //__________________________________________________________________ | |
91 | const char* ClassName() const { return "MakeMultDistsTrain"; } | |
92 | //__________________________________________________________________ | |
93 | /** | |
94 | * Overloaded to create new draw.C | |
95 | * | |
96 | * @param asShellScript | |
97 | */ | |
98 | void SaveSetup(Bool_t asShellScript) | |
99 | { | |
100 | TrainSetup::SaveSetup(asShellScript); | |
101 | ||
102 | SaveSummarize(); | |
91b3e533 | 103 | SaveUnfold(); |
c8b1a7db | 104 | SaveDraw(); |
91b3e533 | 105 | } |
106 | void SaveUnfold() | |
107 | { | |
108 | std::ofstream f("Unfold.C"); | |
109 | if (!f) { | |
110 | Error("SaveUnfold", "Failed to open Unfold.C script"); | |
111 | return; | |
112 | } | |
113 | f << "// Generated by " << ClassName() << "\n" | |
114 | << "void Unfold(const char* other=\"\",\n" | |
d4a5ea4a | 115 | << " Double_t regP=20,\n" |
91b3e533 | 116 | << " const char* here=\"forward_multdists.root\")\n" |
117 | << "{\n" | |
118 | << " const char* rooUnfold = gSystem->Getenv(\"ROOUNFOLD\");\n" | |
119 | << " if (rooUnfold) {\n" | |
120 | << " gSystem->AddIncludePath(Form(\"-I%s/src\",rooUnfold));\n" | |
121 | << " gSystem->AddDynamicPath(Form(\"%s\", rooUnfold));\n" | |
122 | << " }\n" | |
123 | << " gSystem->Load(\"libRooUnfold\");\n" | |
124 | << " const char* fwd=\"$ALICE_ROOT/PWGLF/FORWARD/analysis2\";\n" | |
125 | << " gROOT->LoadMacro(Form(\"%s/scripts/UnfoldMultDists.C++g\",fwd));\n" | |
d4a5ea4a | 126 | << " UnfoldMultDists(\"bayes\",regP,here,other);\n" |
91b3e533 | 127 | << "}\n" |
128 | << "// EOF" << std::endl; | |
129 | ||
130 | f.close(); | |
bfab35d9 | 131 | } |
132 | void SaveSummarize() | |
133 | { | |
134 | std::ofstream f("Summarize.C"); | |
135 | if (!f) { | |
136 | Error("SaveSummarize", "Failed to open Summarize.C script"); | |
137 | return; | |
138 | } | |
139 | f << "// Generated by " << ClassName() << "\n" | |
140 | << "// WHAT is a bit mask of\n" | |
141 | << "// 0x001 Forward\n" | |
142 | << "// 0x002 Central\n" | |
143 | << "// 0x004 Sums\n" | |
144 | << "// 0x008 Results\n" | |
145 | << "// 0x010 Only min-bias (no centrality)\n" | |
146 | << "// 0x020 Landscape\n" | |
147 | << "// 0x040 Pause\n" | |
148 | << "//\n" | |
149 | << "void Summarize(const char* filename=\"forward_multdists.root\",\n" | |
150 | << " UShort_t what=0xF)\n" | |
151 | << "{\n" | |
91b3e533 | 152 | << " const char* fwd=\"$ALICE_ROOT/PWGLF/FORWARD/analysis2\";\n" |
153 | << " gROOT->LoadMacro(Form(\"%s/DrawMultDistsSummary.C\",fwd));\n" | |
bfab35d9 | 154 | << " DrawMultDistsSummary(filename,what);\n" |
155 | << "}\n" | |
156 | << "// EOF" << std::endl; | |
157 | f.close(); | |
158 | } | |
c8b1a7db | 159 | void SaveDraw() |
160 | { | |
161 | std::ofstream f("Draw.C"); | |
162 | if (!f) { | |
163 | Error("SaveSummarize", "Failed to open Summarize.C script"); | |
164 | return; | |
165 | } | |
166 | f << "// Generated by " << ClassName() << "\n" | |
167 | << "// WHAT is a bit mask of\n" | |
168 | << "// 0x001 Forward\n" | |
169 | << "// 0x002 Central\n" | |
170 | << "// 0x004 Sums\n" | |
171 | << "// 0x008 Results\n" | |
172 | << "// 0x010 Only min-bias (no centrality)\n" | |
173 | << "// 0x020 Landscape\n" | |
174 | << "// 0x040 Pause\n" | |
175 | << "//\n" | |
176 | << "void Draw(const char* filename=\"forward_unfolded.root\",\n" | |
177 | << " UShort_t what=0xF)\n" | |
178 | << "{\n" | |
179 | << " const char* fwd=\"$ALICE_ROOT/PWGLF/FORWARD/analysis2\";\n" | |
180 | << " gROOT->LoadMacro(Form(\"%s/DrawUnfoldedSummary.C\",fwd));\n" | |
181 | << " DrawUnfoldedSummary(filename);\n" | |
182 | << "}\n" | |
183 | << "// EOF" << std::endl; | |
184 | f.close(); | |
185 | } | |
91b3e533 | 186 | void PostShellCode(std::ostream& f) |
187 | { | |
188 | f << " echo \"=== Summarizing results ...\"\n" | |
189 | << " aliroot -l -b -q ${prefix}Summarize.C\n" | |
190 | << " echo \"=== Unfolding ...\"\n" | |
191 | << " export ROOUNFOLD=${HOME}/tmp/RooUnfoldMyEdits\n" | |
c8b1a7db | 192 | << " mc=\n" |
193 | << " if test x$dest != x ; then mc=${dest}/forward_multdists.root; fi\n" | |
194 | << " aliroot -l -b -q ${prefix}Unfold.C\\(\\\"${mc}\\\"\\)\n" | |
195 | << " aliroot -l -b -q ${prefix}Draw.C\n" | |
91b3e533 | 196 | << std::endl; |
197 | } | |
bfab35d9 | 198 | }; |
199 | // | |
200 | // EOF | |
201 | // |