20 from caf
import backends
21 from pathlib
import Path
22 from caf.utils
import IoV
25 _tempdir_name =
'tmp_create_mc'
31 _tag =
'Calibration_Offline_Development'
34 _bg =
'/group/belle2/BGFile/OfficialBKG/15thCampaign/phase2'
37 def run_job_submission(backend, mc_iov_list):
42 for mc_iov
in mc_iov_list:
43 for setNo
in range(0, _number_of_sets):
44 expNo = mc_iov.exp_low
45 runNo = mc_iov.run_low
46 job =
backends.Job(
"Create_Exp_{}_Run_{}_Set_{}".format(expNo, runNo, setNo))
47 job.output_dir = str(Path(_tempdir_name, job.name).absolute())
48 job.working_dir = str(Path(_tempdir_name, job.name).absolute())
53 '--tag={}'.format(_tag),
54 '--bg={}'.format(_bg),
55 '--expNo={}'.format(expNo),
56 '--runNo={}'.format(runNo),
57 '--setNo={}'.format(setNo)]
60 job.input_sandbox_files.append(
"create_mcrun.py")
66 job.backend_args[
'queue'] =
's'
68 job.backend_args[
'queue'] =
'short'
76 from basf2
import B2INFO
82 ready = all(job.ready()
for job
in jobs)
83 B2INFO(
"Not finished all jobs yet")
88 def main(backend_choice, mc_iov_list, output_dir):
90 if backend_choice ==
"qsub":
92 elif backend_choice ==
"bsub":
94 elif backend_choice ==
"local":
97 print(
"How did I get here?")
99 run_job_submission(backend, mc_iov_list)
100 if backend_choice ==
'local':
106 output_files = glob.glob(str(Path(_tempdir_name).absolute()) +
'/**/beam*.root')
110 for file_name
in output_files:
111 shutil.move(file_name, output_dir)
114 if __name__ ==
"__main__":
117 parser = argparse.ArgumentParser(description=
"Submit jobs for creattion of SimHits for a run with user specified ExpRuns")
118 parser.add_argument(
'--outputdir', default=
'pxd_mc_phase2', type=str,
119 help=
'Add all simulated files to this folder. Create it if it does not exist.')
120 parser.add_argument(
'--backend', default=
'local', type=str, help=
'Where <backend> is one of: local, qsub, bsub.')
121 parser.add_argument(
'--runLow', default=0, type=int, help=
'Compute mask for specific IoV')
122 parser.add_argument(
'--runHigh', default=-1, type=int, help=
'Compute mask for specific IoV')
123 parser.add_argument(
'--expNo', default=3, type=int, help=
'Compute mask for specific IoV')
124 args = parser.parse_args()
127 output_dir = str(Path(args.outputdir).absolute())
130 if not os.path.exists(output_dir):
131 os.makedirs(output_dir)
134 iov_to_calibrate = IoV(exp_low=args.expNo, run_low=args.runLow, exp_high=args.expNo, run_high=args.runHigh)
137 with open(
"file_iov_map.pkl",
'br')
as map_file:
138 files_to_iovs = pickle.load(map_file)
141 data_iov_set = set(files_to_iovs.values())
145 for data_iov
in data_iov_set:
146 if iov_to_calibrate.contains(data_iov):
147 mc_iov_list.append(data_iov)
149 print(
'Number selected iovs for mc generation : {}'.format(len(mc_iov_list)))
151 main(args.backend, mc_iov_list, output_dir)
int main(int argc, char **argv)
Run all tests.