ra4_stats  0341147a0dc35f80f4e12c6003afb76a38e2ed6e
mod_parameter.py
Go to the documentation of this file.
1 #! /usr/bin/env python
2 
3 import argparse
4 import tempfile
5 import shutil
6 import os
7 import ROOT
8 
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)
13 
14  if valtype == "upper":
15  param.setMax(value)
16  elif valtype == "lower":
17  param.setMin(value)
18  elif valtype == "central":
19  param.setVal(value)
20  else:
21  print "Unknown type argument \""+valtype+".\""
22 
23  copy_name = tempfile.mkstemp(suffix=".root")[1]
24  workspace.writeToFile(copy_name)
25  in_file.Close()
26  shutil.copyfile(copy_name, filename)
27  os.remove(copy_name)
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)+"."
32 
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()
41 
42  ModParam(args.file, args.workspace, args.parameter, args.type, args.value[0])
43 
def ModParam(filename, workspacename, parameter, valtype, value)
Definition: mod_parameter.py:9