14 from caf
import backends
15 from pathlib
import Path
16 from caf.utils
import IoV
19 _tempdir_name =
'tmp_create_mc'
25 _tag =
'Calibration_Offline_Development'
28 _bg =
'/group/belle2/BGFile/OfficialBKG/15thCampaign/phase2'
31 def run_job_submission(backend, mc_iov_list):
36 for mc_iov
in mc_iov_list:
37 for setNo
in range(0, _number_of_sets):
38 expNo = mc_iov.exp_low
39 runNo = mc_iov.run_low
40 job =
backends.Job(
"Create_Exp_{}_Run_{}_Set_{}".format(expNo, runNo, setNo))
41 job.output_dir = str(Path(_tempdir_name, job.name).absolute())
42 job.working_dir = str(Path(_tempdir_name, job.name).absolute())
47 '--tag={}'.format(_tag),
48 '--bg={}'.format(_bg),
49 '--expNo={}'.format(expNo),
50 '--runNo={}'.format(runNo),
51 '--setNo={}'.format(setNo)]
54 job.input_sandbox_files.append(
"create_mcrun.py")
60 job.backend_args[
'queue'] =
's'
62 job.backend_args[
'queue'] =
'short'
70 from basf2
import B2INFO
76 ready = all(job.ready()
for job
in jobs)
77 B2INFO(
"Not finished all jobs yet")
82 def main(backend_choice, mc_iov_list, output_dir):
84 if backend_choice ==
"qsub":
86 elif backend_choice ==
"bsub":
88 elif backend_choice ==
"local":
91 print(
"How did I get here?")
93 run_job_submission(backend, mc_iov_list)
94 if backend_choice ==
'local':
100 output_files = glob.glob(str(Path(_tempdir_name).absolute()) +
'/**/beam*.root')
104 for file_name
in output_files:
105 shutil.move(file_name, output_dir)
108 if __name__ ==
"__main__":
111 parser = argparse.ArgumentParser(description=
"Submit jobs for creattion of SimHits for a run with user specified ExpRuns")
112 parser.add_argument(
'--outputdir', default=
'pxd_mc_phase2', type=str,
113 help=
'Add all simulated files to this folder. Create it if it does not exist.')
114 parser.add_argument(
'--backend', default=
'local', type=str, help=
'Where <backend> is one of: local, qsub, bsub.')
115 parser.add_argument(
'--runLow', default=0, type=int, help=
'Compute mask for specific IoV')
116 parser.add_argument(
'--runHigh', default=-1, type=int, help=
'Compute mask for specific IoV')
117 parser.add_argument(
'--expNo', default=3, type=int, help=
'Compute mask for specific IoV')
118 args = parser.parse_args()
121 output_dir = str(Path(args.outputdir).absolute())
124 if not os.path.exists(output_dir):
125 os.makedirs(output_dir)
128 iov_to_calibrate = IoV(exp_low=args.expNo, run_low=args.runLow, exp_high=args.expNo, run_high=args.runHigh)
131 with open(
"file_iov_map.pkl",
'br')
as map_file:
132 files_to_iovs = pickle.load(map_file)
135 data_iov_set = set(files_to_iovs.values())
139 for data_iov
in data_iov_set:
140 if iov_to_calibrate.contains(data_iov):
141 mc_iov_list.append(data_iov)
143 print(
'Number selected iovs for mc generation : {}'.format(len(mc_iov_list)))
145 main(args.backend, mc_iov_list, output_dir)