9 def ModParam(filename, workspacename, parameter, valtype, value):
10 in_file = ROOT.TFile(filename,
"read")
11 workspace = in_file.Get(workspacename)
12 param = workspace.var(parameter)
14 if valtype ==
"upper":
16 elif valtype ==
"lower":
18 elif valtype ==
"central":
21 print "Unknown type argument \""+valtype+
".\"" 23 copy_name = tempfile.mkstemp(suffix=
".root")[1]
24 workspace.writeToFile(copy_name)
26 shutil.copyfile(copy_name, filename)
28 ROOT.SetOwnership(in_file,
True)
29 ROOT.SetOwnership(workspace,
True)
30 ROOT.SetOwnership(param,
True)
31 print "Set "+valtype+
" value of parameter "+parameter+
" in workspace "+workspacename+
" in file "+filename+
" to "+str(value)+
"." 33 if __name__ ==
"__main__":
34 parser = argparse.ArgumentParser(description=
"Modifies a parameter in an existing workspace.")
35 parser.add_argument(
"-f",
"--file", required=
True)
36 parser.add_argument(
"-w",
"--workspace", default=
"w")
37 parser.add_argument(
"-p",
"--parameter", default=
"r") 38 parser.add_argument("-t",
"--type", choices=[
"upper",
"lower",
"central"], default=
"upper")
39 parser.add_argument(
"value", type=float, nargs=1)
40 args = parser.parse_args()
42 ModParam(args.file, args.workspace, args.parameter, args.type, args.value[0])
def ModParam(filename, workspacename, parameter, valtype, value)