3 from __future__
import print_function
9 return os.path.realpath(os.path.abspath(os.path.expanduser(path)))
15 if not os.path.isdir(path):
19 print(
"SYSTEMATIC dilep_lownj", file=output_file)
20 print(
" PROCESSES ttbar,other", file=output_file)
21 print(
" r2_lowmet_lownj_1b 0.06", file=output_file)
22 print(
" r2_lowmet_lownj_2b 0.06", file=output_file)
23 print(
" r2_lowmet_lownj_3b 0.06", file=output_file)
24 print(
" r2_medmet_lownj_1b 0.06", file=output_file)
25 print(
" r2_medmet_lownj_2b 0.06", file=output_file)
26 print(
" r2_medmet_lownj_3b 0.06", file=output_file)
27 print(
" r2_highmet_lownj_1b 0.06", file=output_file)
28 print(
" r2_highmet_lownj_2b 0.06", file=output_file)
29 print(
" r2_highmet_lownj_3b 0.06", file=output_file)
30 print(
"", file=output_file)
31 print(
"SYSTEMATIC dilep_highnj", file=output_file)
32 print(
" PROCESSES ttbar,other", file=output_file)
33 print(
" r2_lowmet_highnj_1b 0.16", file=output_file)
34 print(
" r2_lowmet_highnj_2b 0.16", file=output_file)
35 print(
" r2_lowmet_highnj_3b 0.16", file=output_file)
36 print(
" r2_medmet_highnj_1b 0.16", file=output_file)
37 print(
" r2_medmet_highnj_2b 0.16", file=output_file)
38 print(
" r2_medmet_highnj_3b 0.16", file=output_file)
39 print(
" r2_highmet_highnj_1b 0.16", file=output_file)
40 print(
" r2_highmet_highnj_2b 0.16", file=output_file)
41 print(
" r2_highmet_highnj_3b 0.16", file=output_file)
42 print(
"", file=output_file)
43 print(
"SYSTEMATIC fivejet_lowmet", file=output_file)
44 print(
" PROCESSES ttbar,other", file=output_file)
45 print(
" r2_lowmet_lownj_1b 0.15", file=output_file)
46 print(
" r2_lowmet_lownj_2b 0.15", file=output_file)
47 print(
" r2_lowmet_lownj_3b 0.15", file=output_file)
48 print(
" r2_lowmet_highnj_1b 0.15", file=output_file)
49 print(
" r2_lowmet_highnj_2b 0.15", file=output_file)
50 print(
" r2_lowmet_highnj_3b 0.15", file=output_file)
51 print(
"", file=output_file)
52 print(
"SYSTEMATIC fivejet_highmet", file=output_file)
53 print(
" PROCESSES ttbar,other", file=output_file)
54 print(
" r2_medmet_lownj_1b 0.37", file=output_file)
55 print(
" r2_medmet_lownj_2b 0.37", file=output_file)
56 print(
" r2_medmet_lownj_3b 0.37", file=output_file)
57 print(
" r2_medmet_highnj_1b 0.37", file=output_file)
58 print(
" r2_medmet_highnj_2b 0.37", file=output_file)
59 print(
" r2_medmet_highnj_3b 0.37", file=output_file)
60 print(
" r2_highmet_lownj_1b 0.37", file=output_file)
61 print(
" r2_highmet_lownj_2b 0.37", file=output_file)
62 print(
" r2_highmet_lownj_3b 0.37", file=output_file)
63 print(
" r2_highmet_highnj_1b 0.37", file=output_file)
64 print(
" r2_highmet_highnj_2b 0.37", file=output_file)
65 print(
" r2_highmet_highnj_3b 0.37", file=output_file)
66 print(
"", file=output_file)
69 print(str.join(
" -> ",[input_path,output_path]))
70 if os.path.exists(output_path)
and not overwrite:
71 raise Exception(str.join(
" ", [
"Output file",output_path,
"already exists"]))
73 with open(input_path,
"r") as input_file, open(output_path, "w") as output_file:
78 for line
in input_file:
79 if "SYSTEMATIC" in line:
82 elif "PROCESSES" in line:
85 elif "signal" in proc_line
and syst_line !=
"" and proc_line !=
"":
87 print(syst_line, file=output_file, end=
"")
88 print(proc_line, file=output_file, end=
"")
90 print(line, file=output_file, end=
"")
93 input_dirs = [
fullPath(d)
for d
in input_dirs ]
96 for input_dir
in input_dirs:
97 for root, dirs, files
in os.walk(input_dir):
98 if root != input_dir
and not recurse:
100 subdir = os.path.relpath(root, input_dir)
101 output_subdir =
fullPath(os.path.join(output_dir, subdir))
103 for base_file
in files:
104 if os.path.splitext(base_file)[1] !=
".txt":
106 input_file = os.path.join(root, base_file)
107 output_file = os.path.join(output_subdir, base_file)
110 if __name__ ==
"__main__":
111 parser = argparse.ArgumentParser(description=
"Update systematics files in specified directories to use new background systematics.",
112 formatter_class=argparse.ArgumentDefaultsHelpFormatter)
113 parser.add_argument(
"input_dirs", nargs=
"+", help=
"Directories containing systematics files with old background systematics")
114 parser.add_argument(
"output_dir", help=
"Directory in which to place updated systematics files")
115 parser.add_argument(
"-r",
"--recurse", action=
"store_true", help=
"Recurse through subdirectories")
116 parser.add_argument(
"--overwrite", action=
"store_true", help=
"Allow overwriting of existing output files")
117 args = parser.parse_args()
119 UpdateBkgSysts(args.input_dirs, args.output_dir, args.recurse, args.overwrite)
def UpdateBkgSysts(input_dirs, output_dir, recurse, overwrite)
def UpdateOneBkgSyst(input_path, output_path, overwrite)
def PrintBkgSysts(output_file)