Instantiate the flux tuning, reading in the relevant histograms for applying the flux tuning.
fluxfile is the ROOT file containing the flux weighting histograms.
tuning if the name of the tuning to use, as specified in the histogram titles. For example, the 'tuned11b' tuning will use the histograms with titles like enu_nd5_tuned11b_numu_ratio.
11 bool load_run5 =
false;
12 bool load_run6 =
false;
13 if (fluxfolder.find(
"13a") != std::string::npos) {
15 if (fluxfolder.find(
"av1.1") != std::string::npos) load_run6 =
true;
18 std::cout <<
" ------------------------------------------------------ " 20 std::cout <<
" ------------------------------------------------------ " 22 std::cout <<
" Flux reweight is enabled " << std::endl;
23 std::cout <<
" Folder : " << fluxfolder << std::endl;
24 std::cout <<
" File : " 25 << fluxfolder +
"/runXXX/" + planeident +
"_" + version +
28 std::cout <<
" Tuning : " << tuning << std::endl;
29 std::cout <<
" ------------------------------------------------------ " 31 std::cout <<
" ------------------------------------------------------ " 34 std::string file1 =
"/run1/" + planeident +
"_" + version +
"_run1.root";
35 std::string file2 =
"/run2/" + planeident +
"_" + version +
"_run2.root";
36 std::string file3b =
"/run3b/" + planeident +
"_" + version +
"_run3b.root";
37 std::string file3c =
"/run3c/" + planeident +
"_" + version +
"_run3c.root";
38 std::string file4 =
"/run4/" + planeident +
"_" + version +
"_run4.root";
39 std::string file5a =
"/run5a/" + planeident +
"_" + version +
"_run5a.root";
40 std::string file5b =
"/run5b/" + planeident +
"_" + version +
"_run5b.root";
42 "/run5c/" + planeident +
"_" + version +
"_run5c_antinumode.root";
44 "/run6b/" + planeident +
"_" + version +
"_run6b_antinumode.root";
46 "/run6c/" + planeident +
"_" + version +
"_run6c_antinumode.root";
48 "/run6d/" + planeident +
"_" + version +
"_run6d_antinumode.root";
50 "/run6e/" + planeident +
"_" + version +
"_run6e_antinumode.root";
52 run1_file =
new TFile(file1.insert(0, fluxfolder).c_str(),
"READ");
53 run2_file =
new TFile(file2.insert(0, fluxfolder).c_str(),
"READ");
54 run3b_file =
new TFile(file3b.insert(0, fluxfolder).c_str(),
"READ");
55 run3c_file =
new TFile(file3c.insert(0, fluxfolder).c_str(),
"READ");
56 run4_file =
new TFile(file4.insert(0, fluxfolder).c_str(),
"READ");
59 run5a_file =
new TFile(file5a.insert(0, fluxfolder).c_str(),
"READ");
60 run5b_file =
new TFile(file5b.insert(0, fluxfolder).c_str(),
"READ");
61 run5c_file =
new TFile(file5c.insert(0, fluxfolder).c_str(),
"READ");
69 run6b_file =
new TFile(file6b.insert(0, fluxfolder).c_str(),
"READ");
70 run6c_file =
new TFile(file6c.insert(0, fluxfolder).c_str(),
"READ");
71 run6d_file =
new TFile(file6d.insert(0, fluxfolder).c_str(),
"READ");
72 run6e_file =
new TFile(file6e.insert(0, fluxfolder).c_str(),
"READ");
81 run1_weight_numu =
dynamic_cast<TH1D*
>(run1_file->Get(
82 (
"enu_" + planeident +
"_" + tuning +
"_numu_ratio").c_str()));
83 if (run1_weight_numu) {
84 run1_weight_numu =
static_cast<TH1D*
>(run1_weight_numu->Clone());
85 run1_weight_numu->SetDirectory(NULL);
87 run1_weight_numubar =
dynamic_cast<TH1D*
>(run1_file->Get(
88 (
"enu_" + planeident +
"_" + tuning +
"_numub_ratio").c_str()));
89 if (run1_weight_numubar) {
90 run1_weight_numubar =
static_cast<TH1D*
>(run1_weight_numubar->Clone());
91 run1_weight_numubar->SetDirectory(NULL);
93 run1_weight_nue =
dynamic_cast<TH1D*
>(run1_file->Get(
94 (
"enu_" + planeident +
"_" + tuning +
"_nue_ratio").c_str()));
95 if (run1_weight_nue) {
96 run1_weight_nue =
static_cast<TH1D*
>(run1_weight_nue->Clone());
97 run1_weight_nue->SetDirectory(NULL);
99 run1_weight_nuebar =
dynamic_cast<TH1D*
>(run1_file->Get(
100 (
"enu_" + planeident +
"_" + tuning +
"_nueb_ratio").c_str()));
101 if (run1_weight_nuebar) {
102 run1_weight_nuebar =
static_cast<TH1D*
>(run1_weight_nuebar->Clone());
103 run1_weight_nuebar->SetDirectory(NULL);
106 run2_weight_numu =
dynamic_cast<TH1D*
>(run2_file->Get(
107 (
"enu_" + planeident +
"_" + tuning +
"_numu_ratio").c_str()));
108 if (run2_weight_numu) {
109 run2_weight_numu =
static_cast<TH1D*
>(run2_weight_numu->Clone());
110 run2_weight_numu->SetDirectory(NULL);
112 run2_weight_numubar =
dynamic_cast<TH1D*
>(run2_file->Get(
113 (
"enu_" + planeident +
"_" + tuning +
"_numub_ratio").c_str()));
114 if (run2_weight_numubar) {
115 run2_weight_numubar =
static_cast<TH1D*
>(run2_weight_numubar->Clone());
116 run2_weight_numubar->SetDirectory(NULL);
118 run2_weight_nue =
dynamic_cast<TH1D*
>(run2_file->Get(
119 (
"enu_" + planeident +
"_" + tuning +
"_nue_ratio").c_str()));
120 if (run2_weight_nue) {
121 run2_weight_nue =
static_cast<TH1D*
>(run2_weight_nue->Clone());
122 run2_weight_nue->SetDirectory(NULL);
124 run2_weight_nuebar =
dynamic_cast<TH1D*
>(run2_file->Get(
125 (
"enu_" + planeident +
"_" + tuning +
"_nueb_ratio").c_str()));
126 if (run2_weight_nuebar) {
127 run2_weight_nuebar =
static_cast<TH1D*
>(run2_weight_nuebar->Clone());
128 run2_weight_nuebar->SetDirectory(NULL);
131 run3b_weight_numu =
dynamic_cast<TH1D*
>(run3b_file->Get(
132 (
"enu_" + planeident +
"_" + tuning +
"_numu_ratio").c_str()));
133 if (run3b_weight_numu) {
134 run3b_weight_numu =
static_cast<TH1D*
>(run3b_weight_numu->Clone());
135 run3b_weight_numu->SetDirectory(NULL);
137 run3b_weight_numubar =
dynamic_cast<TH1D*
>(run3b_file->Get(
138 (
"enu_" + planeident +
"_" + tuning +
"_numub_ratio").c_str()));
139 if (run3b_weight_numubar) {
140 run3b_weight_numubar =
static_cast<TH1D*
>(run3b_weight_numubar->Clone());
141 run3b_weight_numubar->SetDirectory(NULL);
143 run3b_weight_nue =
dynamic_cast<TH1D*
>(run3b_file->Get(
144 (
"enu_" + planeident +
"_" + tuning +
"_nue_ratio").c_str()));
145 if (run3b_weight_nue) {
146 run3b_weight_nue =
static_cast<TH1D*
>(run3b_weight_nue->Clone());
147 run3b_weight_nue->SetDirectory(NULL);
149 run3b_weight_nuebar =
dynamic_cast<TH1D*
>(run3b_file->Get(
150 (
"enu_" + planeident +
"_" + tuning +
"_nueb_ratio").c_str()));
151 if (run3b_weight_nuebar) {
152 run3b_weight_nuebar =
static_cast<TH1D*
>(run3b_weight_nuebar->Clone());
153 run3b_weight_nuebar->SetDirectory(NULL);
156 run3c_weight_numu =
dynamic_cast<TH1D*
>(run3c_file->Get(
157 (
"enu_" + planeident +
"_" + tuning +
"_numu_ratio").c_str()));
158 if (run3c_weight_numu) {
159 run3c_weight_numu =
static_cast<TH1D*
>(run3c_weight_numu->Clone());
160 run3c_weight_numu->SetDirectory(NULL);
162 run3c_weight_numubar =
dynamic_cast<TH1D*
>(run3c_file->Get(
163 (
"enu_" + planeident +
"_" + tuning +
"_numub_ratio").c_str()));
164 if (run3c_weight_numubar) {
165 run3c_weight_numubar =
static_cast<TH1D*
>(run3c_weight_numubar->Clone());
166 run3c_weight_numubar->SetDirectory(NULL);
168 run3c_weight_nue =
dynamic_cast<TH1D*
>(run3c_file->Get(
169 (
"enu_" + planeident +
"_" + tuning +
"_nue_ratio").c_str()));
170 if (run3c_weight_nue) {
171 run3c_weight_nue =
static_cast<TH1D*
>(run3c_weight_nue->Clone());
172 run3c_weight_nue->SetDirectory(NULL);
174 run3c_weight_nuebar =
dynamic_cast<TH1D*
>(run3c_file->Get(
175 (
"enu_" + planeident +
"_" + tuning +
"_nueb_ratio").c_str()));
176 if (run3c_weight_nuebar) {
177 run3c_weight_nuebar =
static_cast<TH1D*
>(run3c_weight_nuebar->Clone());
178 run3c_weight_nuebar->SetDirectory(NULL);
181 run4_weight_numu =
dynamic_cast<TH1D*
>(run4_file->Get(
182 (
"enu_" + planeident +
"_" + tuning +
"_numu_ratio").c_str()));
183 if (run4_weight_numu) {
184 run4_weight_numu =
static_cast<TH1D*
>(run4_weight_numu->Clone());
185 run4_weight_numu->SetDirectory(NULL);
187 run4_weight_numubar =
dynamic_cast<TH1D*
>(run4_file->Get(
188 (
"enu_" + planeident +
"_" + tuning +
"_numub_ratio").c_str()));
189 if (run4_weight_numubar) {
190 run4_weight_numubar =
static_cast<TH1D*
>(run4_weight_numubar->Clone());
191 run4_weight_numubar->SetDirectory(NULL);
193 run4_weight_nue =
dynamic_cast<TH1D*
>(run4_file->Get(
194 (
"enu_" + planeident +
"_" + tuning +
"_nue_ratio").c_str()));
195 if (run4_weight_nue) {
196 run4_weight_nue =
static_cast<TH1D*
>(run4_weight_nue->Clone());
197 run4_weight_nue->SetDirectory(NULL);
199 run4_weight_nuebar =
dynamic_cast<TH1D*
>(run4_file->Get(
200 (
"enu_" + planeident +
"_" + tuning +
"_nueb_ratio").c_str()));
201 if (run4_weight_nuebar) {
202 run4_weight_nuebar =
static_cast<TH1D*
>(run4_weight_nuebar->Clone());
203 run4_weight_nuebar->SetDirectory(NULL);
207 run5a_weight_numu =
dynamic_cast<TH1D*
>(run5a_file->Get(
208 (
"enu_" + planeident +
"_" + tuning +
"_numu_ratio").c_str()));
209 if (run5a_weight_numu) {
210 run5a_weight_numu =
static_cast<TH1D*
>(run5a_weight_numu->Clone());
211 run5a_weight_numu->SetDirectory(NULL);
213 run5a_weight_numubar =
dynamic_cast<TH1D*
>(run5a_file->Get(
214 (
"enu_" + planeident +
"_" + tuning +
"_numub_ratio").c_str()));
215 if (run5a_weight_numubar) {
216 run5a_weight_numubar =
static_cast<TH1D*
>(run5a_weight_numubar->Clone());
217 run5a_weight_numubar->SetDirectory(NULL);
219 run5a_weight_nue =
dynamic_cast<TH1D*
>(run5a_file->Get(
220 (
"enu_" + planeident +
"_" + tuning +
"_nue_ratio").c_str()));
221 if (run5a_weight_nue) {
222 run5a_weight_nue =
static_cast<TH1D*
>(run5a_weight_nue->Clone());
223 run5a_weight_nue->SetDirectory(NULL);
225 run5a_weight_nuebar =
dynamic_cast<TH1D*
>(run5a_file->Get(
226 (
"enu_" + planeident +
"_" + tuning +
"_nueb_ratio").c_str()));
227 if (run5a_weight_nuebar) {
228 run5a_weight_nuebar =
static_cast<TH1D*
>(run5a_weight_nuebar->Clone());
229 run5a_weight_nuebar->SetDirectory(NULL);
232 run5b_weight_numu =
dynamic_cast<TH1D*
>(run5b_file->Get(
233 (
"enu_" + planeident +
"_" + tuning +
"_numu_ratio").c_str()));
234 if (run5b_weight_numu) {
235 run5b_weight_numu =
static_cast<TH1D*
>(run5b_weight_numu->Clone());
236 run5b_weight_numu->SetDirectory(NULL);
238 run5b_weight_numubar =
dynamic_cast<TH1D*
>(run5b_file->Get(
239 (
"enu_" + planeident +
"_" + tuning +
"_numub_ratio").c_str()));
240 if (run5b_weight_numubar) {
241 run5b_weight_numubar =
static_cast<TH1D*
>(run5b_weight_numubar->Clone());
242 run5b_weight_numubar->SetDirectory(NULL);
244 run5b_weight_nue =
dynamic_cast<TH1D*
>(run5b_file->Get(
245 (
"enu_" + planeident +
"_" + tuning +
"_nue_ratio").c_str()));
246 if (run5b_weight_nue) {
247 run5b_weight_nue =
static_cast<TH1D*
>(run5b_weight_nue->Clone());
248 run5b_weight_nue->SetDirectory(NULL);
250 run5b_weight_nuebar =
dynamic_cast<TH1D*
>(run5b_file->Get(
251 (
"enu_" + planeident +
"_" + tuning +
"_nueb_ratio").c_str()));
252 if (run5b_weight_nuebar) {
253 run5b_weight_nuebar =
static_cast<TH1D*
>(run5b_weight_nuebar->Clone());
254 run5b_weight_nuebar->SetDirectory(NULL);
257 run5c_weight_numu =
dynamic_cast<TH1D*
>(run5c_file->Get(
258 (
"enu_" + planeident +
"_" + tuning +
"_numu_ratio").c_str()));
259 if (run5c_weight_numu) {
260 run5c_weight_numu =
static_cast<TH1D*
>(run5c_weight_numu->Clone());
261 run5c_weight_numu->SetDirectory(NULL);
263 run5c_weight_numubar =
dynamic_cast<TH1D*
>(run5c_file->Get(
264 (
"enu_" + planeident +
"_" + tuning +
"_numub_ratio").c_str()));
265 if (run5c_weight_numubar) {
266 run5c_weight_numubar =
static_cast<TH1D*
>(run5c_weight_numubar->Clone());
267 run5c_weight_numubar->SetDirectory(NULL);
269 run5c_weight_nue =
dynamic_cast<TH1D*
>(run5c_file->Get(
270 (
"enu_" + planeident +
"_" + tuning +
"_nue_ratio").c_str()));
271 if (run5c_weight_nue) {
272 run5c_weight_nue =
static_cast<TH1D*
>(run5c_weight_nue->Clone());
273 run5c_weight_nue->SetDirectory(NULL);
275 run5c_weight_nuebar =
dynamic_cast<TH1D*
>(run5c_file->Get(
276 (
"enu_" + planeident +
"_" + tuning +
"_nueb_ratio").c_str()));
277 if (run5c_weight_nuebar) {
278 run5c_weight_nuebar =
static_cast<TH1D*
>(run5c_weight_nuebar->Clone());
279 run5c_weight_nuebar->SetDirectory(NULL);
282 run5a_weight_numu = NULL;
283 run5a_weight_numubar = NULL;
284 run5a_weight_nue = NULL;
285 run5a_weight_nuebar = NULL;
287 run5b_weight_numu = NULL;
288 run5b_weight_numubar = NULL;
289 run5b_weight_nue = NULL;
290 run5b_weight_nuebar = NULL;
292 run5c_weight_numu = NULL;
293 run5c_weight_numubar = NULL;
294 run5c_weight_nue = NULL;
295 run5c_weight_nuebar = NULL;
298 run6b_weight_numu =
dynamic_cast<TH1D*
>(run6b_file->Get(
299 (
"enu_" + planeident +
"_" + tuning +
"_numu_ratio").c_str()));
300 if (run6b_weight_numu) {
301 run6b_weight_numu =
static_cast<TH1D*
>(run6b_weight_numu->Clone());
302 run6b_weight_numu->SetDirectory(NULL);
304 run6b_weight_numubar =
dynamic_cast<TH1D*
>(run6b_file->Get(
305 (
"enu_" + planeident +
"_" + tuning +
"_numub_ratio").c_str()));
306 if (run6b_weight_numubar) {
307 run6b_weight_numubar =
static_cast<TH1D*
>(run6b_weight_numubar->Clone());
308 run6b_weight_numubar->SetDirectory(NULL);
310 run6b_weight_nue =
dynamic_cast<TH1D*
>(run6b_file->Get(
311 (
"enu_" + planeident +
"_" + tuning +
"_nue_ratio").c_str()));
312 if (run6b_weight_nue) {
313 run6b_weight_nue =
static_cast<TH1D*
>(run6b_weight_nue->Clone());
314 run6b_weight_nue->SetDirectory(NULL);
316 run6b_weight_nuebar =
dynamic_cast<TH1D*
>(run6b_file->Get(
317 (
"enu_" + planeident +
"_" + tuning +
"_nueb_ratio").c_str()));
318 if (run6b_weight_nuebar) {
319 run6b_weight_nuebar =
static_cast<TH1D*
>(run6b_weight_nuebar->Clone());
320 run6b_weight_nuebar->SetDirectory(NULL);
322 run6c_weight_numu =
dynamic_cast<TH1D*
>(run6c_file->Get(
323 (
"enu_" + planeident +
"_" + tuning +
"_numu_ratio").c_str()));
324 if (run6c_weight_numu) {
325 run6c_weight_numu =
static_cast<TH1D*
>(run6c_weight_numu->Clone());
326 run6c_weight_numu->SetDirectory(NULL);
328 run6c_weight_numubar =
dynamic_cast<TH1D*
>(run6c_file->Get(
329 (
"enu_" + planeident +
"_" + tuning +
"_numub_ratio").c_str()));
330 if (run6c_weight_numubar) {
331 run6c_weight_numubar =
static_cast<TH1D*
>(run6c_weight_numubar->Clone());
332 run6c_weight_numubar->SetDirectory(NULL);
334 run6c_weight_nue =
dynamic_cast<TH1D*
>(run6c_file->Get(
335 (
"enu_" + planeident +
"_" + tuning +
"_nue_ratio").c_str()));
336 if (run6c_weight_nue) {
337 run6c_weight_nue =
static_cast<TH1D*
>(run6c_weight_nue->Clone());
338 run6c_weight_nue->SetDirectory(NULL);
340 run6c_weight_nuebar =
dynamic_cast<TH1D*
>(run6c_file->Get(
341 (
"enu_" + planeident +
"_" + tuning +
"_nueb_ratio").c_str()));
342 if (run6c_weight_nuebar) {
343 run6c_weight_nuebar =
static_cast<TH1D*
>(run6c_weight_nuebar->Clone());
344 run6c_weight_nuebar->SetDirectory(NULL);
346 run6d_weight_numu =
dynamic_cast<TH1D*
>(run6d_file->Get(
347 (
"enu_" + planeident +
"_" + tuning +
"_numu_ratio").c_str()));
348 if (run6d_weight_numu) {
349 run6d_weight_numu =
static_cast<TH1D*
>(run6d_weight_numu->Clone());
350 run6d_weight_numu->SetDirectory(NULL);
352 run6d_weight_numubar =
dynamic_cast<TH1D*
>(run6d_file->Get(
353 (
"enu_" + planeident +
"_" + tuning +
"_numub_ratio").c_str()));
354 if (run6d_weight_numubar) {
355 run6d_weight_numubar =
static_cast<TH1D*
>(run6d_weight_numubar->Clone());
356 run6d_weight_numubar->SetDirectory(NULL);
358 run6d_weight_nue =
dynamic_cast<TH1D*
>(run6d_file->Get(
359 (
"enu_" + planeident +
"_" + tuning +
"_nue_ratio").c_str()));
360 if (run6d_weight_nue) {
361 run6d_weight_nue =
static_cast<TH1D*
>(run6d_weight_nue->Clone());
362 run6d_weight_nue->SetDirectory(NULL);
364 run6d_weight_nuebar =
dynamic_cast<TH1D*
>(run6d_file->Get(
365 (
"enu_" + planeident +
"_" + tuning +
"_nueb_ratio").c_str()));
366 if (run6d_weight_nuebar) {
367 run6d_weight_nuebar =
static_cast<TH1D*
>(run6d_weight_nuebar->Clone());
368 run6d_weight_nuebar->SetDirectory(NULL);
370 run6e_weight_numu =
dynamic_cast<TH1D*
>(run6e_file->Get(
371 (
"enu_" + planeident +
"_" + tuning +
"_numu_ratio").c_str()));
372 if (run6e_weight_numu) {
373 run6e_weight_numu =
static_cast<TH1D*
>(run6e_weight_numu->Clone());
374 run6e_weight_numu->SetDirectory(NULL);
376 run6e_weight_numubar =
dynamic_cast<TH1D*
>(run6e_file->Get(
377 (
"enu_" + planeident +
"_" + tuning +
"_numub_ratio").c_str()));
378 if (run6e_weight_numubar) {
379 run6e_weight_numubar =
static_cast<TH1D*
>(run6e_weight_numubar->Clone());
380 run6e_weight_numubar->SetDirectory(NULL);
382 run6e_weight_nue =
dynamic_cast<TH1D*
>(run6e_file->Get(
383 (
"enu_" + planeident +
"_" + tuning +
"_nue_ratio").c_str()));
384 if (run6e_weight_nue) {
385 run6e_weight_nue =
static_cast<TH1D*
>(run6e_weight_nue->Clone());
386 run6e_weight_nue->SetDirectory(NULL);
388 run6e_weight_nuebar =
dynamic_cast<TH1D*
>(run6e_file->Get(
389 (
"enu_" + planeident +
"_" + tuning +
"_nueb_ratio").c_str()));
390 if (run6e_weight_nuebar) {
391 run6e_weight_nuebar =
static_cast<TH1D*
>(run6e_weight_nuebar->Clone());
392 run6e_weight_nuebar->SetDirectory(NULL);
396 run6b_weight_numu = NULL;
397 run6b_weight_numubar = NULL;
398 run6b_weight_nue = NULL;
399 run6b_weight_nuebar = NULL;
400 run6c_weight_numu = NULL;
401 run6c_weight_numubar = NULL;
402 run6c_weight_nue = NULL;
403 run6c_weight_nuebar = NULL;
404 run6d_weight_numu = NULL;
405 run6d_weight_numubar = NULL;
406 run6d_weight_nue = NULL;
407 run6d_weight_nuebar = NULL;
408 run6e_weight_numu = NULL;
409 run6e_weight_numubar = NULL;
410 run6e_weight_nue = NULL;
411 run6e_weight_nuebar = NULL;
469 if (!run1_weight_numu || !run1_weight_numubar || !run1_weight_nue ||
470 !run1_weight_nuebar) {
472 <<
"ERROR: Flux weighting was requested, but could not be initialised." 475 <<
" Specify a valid flux file and tuning in your parameters file, or" 478 <<
" disable the flux weighting. Flux files can be downloaded from" 480 std::cerr <<
" http://www.t2k.org/beam/NuFlux/FluxRelease" << std::endl;