1 |
#!/usr/bin/python
|
2 |
|
3 |
# System libraries to interact with the shell
|
4 |
import sys
|
5 |
import os
|
6 |
from os import popen
|
7 |
import commands
|
8 |
import time
|
9 |
#from datetime import date
|
10 |
|
11 |
crab_jobs=[]
|
12 |
|
13 |
def produce_jobs(jobinfo):
|
14 |
print "Going to produce job based on "+str(jobinfo)
|
15 |
jobinformation=jobinfo.split(";")
|
16 |
PointName=jobinformation[0]
|
17 |
Minimum=jobinformation[1]
|
18 |
Maximum=jobinformation[2]
|
19 |
|
20 |
superstring= "ShapePreparationDirectory__"+str(time.strftime('%Y_%M_%d__%H_%m_%S'))
|
21 |
print superstring
|
22 |
print "Next steps: Create a directory (random!) copy histos & datacard there, run makeGridUsingCrab, and delete the directory"
|
23 |
|
24 |
print "Going to take action for "+str(PointName)
|
25 |
|
26 |
|
27 |
command=" dirname="+superstring+" && mkdir -p $dirname && cd $dirname && cp ../../models/model_"+PointName+"_histo.root limitfile.root && cp ../../models/model_"+PointName+".txt susydatacard.txt && python ../makeGridUsingCrab.py susydatacard.txt "+str(Minimum)+" "+str(Maximum)+" -n 100 -o "+str(PointName)+"FullComputation"
|
28 |
|
29 |
commands.getoutput(command)
|
30 |
# print command
|
31 |
f = open(superstring+"/"+PointName+"FullComputation.cfg", 'a')
|
32 |
f.write("ui_working_dir=../CrabJobs/"+PointName+"FullComputation");
|
33 |
f.close()
|
34 |
commands.getoutput("rm -rf CrabJobs/"+PointName+"FullComputation")
|
35 |
pipe=popen("mkdir -p CrabJobs && cd "+superstring+" && crab -create -cfg "+PointName+"FullComputation.cfg")
|
36 |
for l in pipe.readlines():
|
37 |
if l == " ": continue
|
38 |
print " crab job creation: -->" +str(l)+"<--"
|
39 |
print "Done with CRAB"
|
40 |
crab_jobs.append("Crab_Jobs/"+PointName+"FullComputation")
|
41 |
commands.getoutput("rm "+superstring+"/combine && rm -rf "+superstring)
|
42 |
|
43 |
|
44 |
if len(sys.argv) < 2:
|
45 |
print "You need to provide the fused file ... otherwise I can't do much :-)"
|
46 |
sys.exit(-1)
|
47 |
print sys.argv[1]
|
48 |
print "Going to compute the points for which a second computation is necessary"
|
49 |
commands.getoutput("make && ./ReadLimitsAndPrepareJobs.exec "+str(sys.argv[1]))
|
50 |
print "Going to read them back"
|
51 |
f = open('JobStrings.txt')
|
52 |
lines = f.readlines()
|
53 |
f.close()
|
54 |
|
55 |
counter=0
|
56 |
for line in lines:
|
57 |
print str(counter)+" "+line
|
58 |
produce_jobs(line)
|
59 |
counter = counter + 1
|
60 |
|
61 |
for job in crab_jobs:
|
62 |
print "Crab Job: "+str(job)
|
63 |
|