forked from jnugent42/mcsframework
-
Notifications
You must be signed in to change notification settings - Fork 0
/
run_Matsys.py
130 lines (110 loc) · 5.11 KB
/
run_Matsys.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
import libxml2
import os, subprocess
from ROOT import TRandom3, TMath
def updatesysval(infile, outfile, name, value):
doc = libxml2.parseFile(infile)
for node in doc.xpathEval("spec/sys"):
if node.prop("name").find(name) >= 0:
node.setProp("value", str(value))
f = open(outfile,"w")
doc.saveTo(f)
f.close()
doc.freeDoc()
def updatecutval(infile, outfile, name, value):
doc = libxml2.parseFile(infile)
for node in doc.xpathEval("spec/cuts"):
if node.prop("name").find(name) >= 0:
node.setProp("value", str(value))
f = open(outfile,"w")
doc.saveTo(f)
f.close()
doc.freeDoc()
def updatefilename(infile, outfile, newname):
doc = libxml2.parseFile(infile)
for node in doc.xpathEval("spec/file"):
if node.prop("id").find("outfile") >= 0:
node.setProp("name", newname)
f = open(outfile,"w")
doc.saveTo(f)
f.close()
doc.freeDoc()
def submitUnfolding(xmlfile):
execdir = "/data/neutrino02/rbayes/MICE/MCS_selection/Unfolding/v2.5.0"
cmd = [os.path.join(execdir,"MCSUnfolding"), xmlfile]
proc = subprocess.Popen(cmd)
proc.wait()
def print_batch_submission(configfile, settings):
batch_data = '''
#PBS -N %(name)s
#PBS -q medium6
#PBS -l walltime=5:59:00,mem=3000Mb
#PBS -e %(working_dir)s/logs/%(name)s.err
#PBS -o %(working_dir)s/logs/%(name)s.out
cd %(working_dir)s
. %(maus_root_dir)s/local_env.sh
%(execcmd)s %(xmlfile)s
'''% settings
outfile = open(configfile, 'w+')
outfile.write(batch_data)
outfile.close()
def submit_to_batch(xmlfile):
execdir = "/data/neutrino02/rbayes/MICE/MCS_selection/Unfolding/v2.5.0"
execcmd = os.path.join(execdir,"MCSUnfolding")
maus_root_dir = "/data/neutrino02/rbayes/MICE/MCS_selection/Unfolding/v2.5.0"
working_dir = os.getcwd()
name = xmlfile[:-4]
settings = {"xmlfile":xmlfile, "name":name, "working_dir":working_dir, "maus_root_dir":maus_root_dir, "execcmd":execcmd}
batch_file = os.path.join(working_dir, name + ".job")
print_batch_submission(batch_file, settings)
cmd = ['qsub', batch_file]
q = subprocess.Popen(cmd)
q.wait()
llim_172 = 1.
ulim_172 = 28.9
llim_200 = 1.
ulim_200 = 27.9
llim_240 = 1.
ulim_240 = 27.3
for i in [-10,-3,-2,-1,1,2,3,10]:
updatefilename("material_0/LiHMu_3172_0.xml",
"material_0/LiHMu_3172_res_lim"+str(llim_172 + i*0.0109)+".xml",
"material_0/LiHMu_3172_res_lim"+str(llim_172 + i*0.0109)+".root")
updatesysval("material_0/LiHMu_3172_res_lim"+str(llim_172 + i*0.0109)+".xml",
"material_0/LiHMu_3172_res_lim"+str(llim_172 + i*0.0109)+".xml",
"resX", llim_172 + i*0.0109)
updatesysval("material_0/LiHMu_3172_res_lim"+str(llim_172 + i*0.0109)+".xml",
"material_0/LiHMu_3172_res_lim"+str(llim_172 + i*0.0109)+".xml",
"resY", llim_172 + i*0.0109)
submit_to_batch("material_0/LiHMu_3172_res_lim"+str(llim_172 + i*0.0109)+".xml")
updatefilename("material_0/LiHMu_3200_0.xml",
"material_0/LiHMu_3200_res_lim"+str(llim_200 + i*0.0109)+".xml",
"material_0/LiHMu_3200_res_lim"+str(llim_200 + i*0.0109)+".root")
updatesysval("material_0/LiHMu_3200_res_lim"+str(llim_200 + i*0.0109)+".xml",
"material_0/LiHMu_3200_res_lim"+str(llim_200 + i*0.0109)+".xml",
"resX", llim_200 + i*0.0109)
updatesysval("material_0/LiHMu_3200_res_lim"+str(llim_200 + i*0.0109)+".xml",
"material_0/LiHMu_3200_res_lim"+str(llim_200 + i*0.0109)+".xml",
"resY", llim_200 + i*0.0109)
submit_to_batch("material_0/LiHMu_3200_res_lim"+str(llim_200 + i*0.0109)+".xml")
updatefilename("material_0/LiHMu_3240_0.xml",
"material_0/LiHMu_3240_res_lim"+str(llim_240 + i*0.0109)+".xml",
"material_0/LiHMu_3240_res_lim"+str(llim_240 + i*0.0109)+".root")
updatesysval("material_0/LiHMu_3240_res_lim"+str(llim_240 + i*0.0109)+".xml",
"material_0/LiHMu_3240_res_lim"+str(llim_240 + i*0.0109)+".xml",
"resX", llim_240 + i*0.0109)
updatesysval("material_0/LiHMu_3240_res_lim"+str(llim_240 + i*0.0109)+".xml",
"material_0/LiHMu_3240_res_lim"+str(llim_240 + i*0.0109)+".xml",
"resY", llim_240 + i*0.0109)
submit_to_batch("material_0/LiHMu_3240_res_lim"+str(llim_240 + i*0.0109)+".xml")
'''
updatefilename("material_0/XePion_3240.xml",
"material_0/XePion_3240_res_lim"+str(llim_240 + i*0.0109)+".xml",
"material_0/XePion_3240_res_lim"+str(llim_240 + i*0.0109)+".root")
updatesysval("material_0/XePion_3240_res_lim"+str(llim_240 + i*0.0109)+".xml",
"material_0/XePion_3240_res_lim"+str(llim_240 + i*0.0109)+".xml",
"resX", llim_240 + i*0.0109)
updatesysval("material_0/XePion_3240_res_lim"+str(llim_240 + i*0.0109)+".xml",
"material_0/XePion_3240_res_lim"+str(llim_240 + i*0.0109)+".xml",
"resY", llim_240 + i*0.0109)
submit_to_batch("material_0/XePion_3240_res_lim"+str(llim_240 + i*0.0109)+".xml")
'''