27 |
|
|
28 |
|
|
29 |
|
def MakeCondorSubmitFile(arguments, dataset): |
30 |
+ |
outdir = "condor/"+arguments.condorDir+"/"+dataset+"/" |
31 |
|
p = subprocess.Popen(["which", "makeBNTreePlot.py"], stdout=subprocess.PIPE) |
32 |
< |
executable = p.communicate()[0] # read the stdout of the command |
32 |
> |
executable = p.communicate()[0] # read the stdout of the command |
33 |
|
workdir = os.getcwd() + "/" |
34 |
< |
outdir = "condor/"+arguments.condorDir+"/"+dataset+"/" |
34 |
> |
|
35 |
> |
# Count the number of hist*root files in the specified directory |
36 |
> |
p = subprocess.Popen("ls " + workdir + outdir + "hist*root | wc", shell=True, stdout=subprocess.PIPE) |
37 |
> |
out = p.communicate()[0] |
38 |
> |
outSplit = out.split() |
39 |
> |
totalJobs = int(outSplit[0]) # The first element of the list is the number of files |
40 |
> |
|
41 |
> |
## print "Debug: outSplit = " |
42 |
> |
## print outSplit |
43 |
> |
## out, err = p.communicate() |
44 |
> |
## print "Debug: Size of out:" |
45 |
> |
## print len(out) |
46 |
> |
## print "out = " |
47 |
> |
## print out |
48 |
> |
## print "err = " |
49 |
> |
## print err |
50 |
> |
## print "Debug: p.communicate()[0] = " + p.communicate()[0] |
51 |
> |
## totalJobs = len(out) |
52 |
|
out = open(outdir+"/condorBNTree.sub", "w") |
53 |
|
out.write("Executable = " + executable + " \n") |
54 |
|
out.write("Universe = vanilla \n") |
55 |
|
out.write("Getenv = True \n") |
56 |
< |
out.write("Arguments = -D " + dataset + " -l " + arguments.localConfig + " -c " + arguments.condorDir + " \n") |
56 |
> |
argCondorProcess = "" |
57 |
> |
if arguments.splitCondorJobs: |
58 |
> |
argCondorProcess = " -p $(Process) " |
59 |
> |
out.write("Arguments = -D " + dataset + " -l " + arguments.localConfig + " -c " + arguments.condorDir + argCondorProcess + " \n") |
60 |
|
out.write("Output = " + workdir + outdir + "condorBNTree_$(Process).out \n") |
61 |
|
out.write("Error = " + workdir + outdir + "condorBNTree_$(Process).err \n") |
62 |
|
out.write("Log = " + workdir + outdir + "condorBNTree_$(Process).log \n") |
63 |
|
out.write("+IsLocalJob = true \n") |
64 |
|
out.write("Rank = TARGET.IsLocalSlot \n") |
65 |
< |
out.write("Queue 1 \n") |
65 |
> |
if arguments.splitCondorJobs: |
66 |
> |
out.write("Queue " + str(totalJobs) + " \n") |
67 |
> |
else: |
68 |
> |
out.write("Queue 1 \n") |
69 |
|
out.close() |
70 |
|
|
71 |
|
|
96 |
|
parser = set_commandline_arguments(parser) |
97 |
|
|
98 |
|
### Only used by makeBNTreePlot.py (maybe move to another file?) |
99 |
+ |
parser.remove_option("-p") |
100 |
|
parser.add_option("-D", "--dataset", dest="datasetName", |
101 |
|
help="Name of dataset (overrides value from local configuration file)") |
102 |
|
parser.add_option("-C", "--runOnCondor", action="store_true", dest="runOnCondor", default=False, |
103 |
|
help="Run on condor instead of interactively") |
104 |
+ |
parser.add_option("-S", "--splitCondorJobs", action="store_true", dest="splitCondorJobs", default=False, |
105 |
+ |
help="Split condor jobs to have one for each file, rather than one for each dataset") |
106 |
+ |
parser.add_option("-p", "--condorProcessNum", dest="condorProcessNum", default=-1, |
107 |
+ |
help="Specify which condor process to run (default is to run over all).") |
108 |
+ |
|
109 |
|
|
110 |
|
(arguments, args) = parser.parse_args() |
111 |
|
|
143 |
|
for dataset in split_datasets: |
144 |
|
if BNTreeUseScript: |
145 |
|
chainName = "OSUAnalysis/" + BNTreeChannel + "/BNTree_" + BNTreeChannel |
146 |
< |
command = "root -l -b -q '" + BNTreeScript + "+(\"" + condor_dir + "\",\"" + dataset + "\",\"" + chainName + "\")'" |
146 |
> |
command = "root -l -b -q '" + BNTreeScript + "+(\"" + condor_dir + "\",\"" + dataset + "\",\"" + chainName + "\"," + str(arguments.condorProcessNum) + ")'" |
147 |
|
print "About to execute command: " + command |
148 |
|
os.system(command) |
149 |
|
else: |
189 |
|
print "Merging output for composite dataset: " + composite_dataset |
190 |
|
os.system(command) |
191 |
|
|
192 |
< |
print ("Total time: "), |
192 |
> |
print ("Total time to run makeBNTreePlot.py: "), |
193 |
|
watch.Stop() |
194 |
|
watch.Print() |
195 |
|
|