3 from __future__
import print_function
13 mc_dir = os.path.dirname(skim)
14 skim_name = os.path.basename(skim)
15 slim_name = os.path.splitext(os.path.basename(slim))[0]
17 out_dir = os.path.join(mc_dir,
"merged_"+slim_name+
"_"+skim_name).replace(
"_skim_",
"_")
19 out_dir = os.path.join(out_dir,
"merged_"+slim_name+
"_"+skim_name).replace(
"_skim_",
"_")
20 run_dir = os.path.join(out_dir,
"run")
27 in_files = os.path.join(skim,
"*"+tag+
"*.root")
28 out_name =
"mergedbaby_"+tag+
"_"+skim_name+
"_"+slim_name+
"_nfiles_"+str(len(glob.glob(in_files)))
29 out_file = os.path.join(out_dir,out_name+
".root")
30 run_file = os.path.join(run_dir,out_name+
".sh")
32 if os.path.exists(out_file)
and not overwrite:
33 print(
"Keeping pre-existing "+out_file)
35 with open(run_file,
"wb")
as f:
36 f.write(
"#! /bin/bash\n\n")
38 f.write(
"python/slim_ntuple.py "+slim+
" "+out_file+
" "+in_files+
"\n")
39 os.fchmod(f.fileno(),0755)
40 subprocess.call([
"JobSubmit.csh",
"run/wrapper.sh",run_file])
47 if skims == []: skims = [
"*"]
48 skims = [
utilities.fullPath(skim)
for sublist
in skims
for skim
in glob.glob(os.path.join(input_dir,
"skim_"+sublist)) ]
49 slims = [
utilities.fullPath(slim)
for sublist
in slims
for slim
in glob.glob(sublist)]
54 total_jobs +=
sendSlimJob(skim, slim, overwrite, output_dir)
56 print(
"Submitted "+str(total_jobs)+
" jobs.")
58 if __name__ ==
"__main__":
59 parser = argparse.ArgumentParser(description=
"Submits jobs to slim and merge ntuples.",
60 formatter_class=argparse.ArgumentDefaultsHelpFormatter)
61 parser.add_argument(
"-i",
"--input_dir", default=
"/net/cms2/cms2r0/babymaker/babies/2016_06_14/mc",
62 help=
"Directory containing skim directories with ntuples.")
63 parser.add_argument(
"-k",
"--skims", default=[
"*"], nargs=
"+",
64 help=
"List of skimmed subdirectories to slim. Prefix \"skim_\" is automatically added.")
65 parser.add_argument(
"-l",
"--slims", default=[
"txt/slim_rules/*.txt"], nargs=
"+",
66 help=
"List of slims to generate.")
67 parser.add_argument(
"--overwrite", action=
"store_true",
68 help=
"Remake slimmed output file even if it already exists")
69 parser.add_argument(
"--output_dir", default=
None,
70 help=
"Directory in which to put slimmed subdirectories. Uses input directory if omitted.")
71 args = parser.parse_args()
73 sendSlimJobs(args.input_dir, args.skims, args.slims, args.overwrite, args.output_dir)
def findBaseSampleNames(folder)
Finding basename for each dataset.
def sendSlimJobs(input_dir, skims, slims, overwrite, output_dir)
def sendSlimJob(skim, slim, overwrite, out_dir)