12parser = argparse.ArgumentParser(description=
'Run trigger rate analysis with prescale keys')
13parser.add_argument(
'aod_dir', type=str,
14 help=
'Directory containing AOD files from a rate reprocessing')
15parser.add_argument(
'--hlt_ps', type=str, help=
'HLT Prescale JSON')
16parser.add_argument(
'--l1_ps', type=str, help=
'L1 Prescale JSON')
17parser.add_argument(
'--targetlumi', type=float, default=2.0e34, help=
'Target luminosity')
18parser.add_argument(
'--maxEvents', type=int, default=-1, help=
'Target luminosity')
19parser.add_argument(
'--workdir', type=str, default=
'rate_analysis/', help=
'Working directory')
21args = parser.parse_args()
24filesIn=glob(f
'{os.path.abspath(args.aod_dir)}/*')
25print(f
"Found {len(filesIn)} input files in '{args.aod_dir}'")
28if not os.path.isdir(args.workdir):
29 os.makedirs(args.workdir)
31hlt_ps_filen=args.hlt_ps.split(
'/',1)[1]
if '/' in args.hlt_ps
else args.hlt_ps
32l1_ps_filen=args.l1_ps.split(
'/',1)[1]
if '/' in args.l1_ps
else args.l1_ps
33shutil.copy(args.hlt_ps, f
"{args.workdir}/{hlt_ps_filen}")
34shutil.copy(args.l1_ps, f
"{args.workdir}/{l1_ps_filen}")
40filesIn_str =
",".join(filesIn)
42 'RatesAnalysisFullMenu.py',
43 '--inputPrescalesHLTJSON', hlt_ps_filen,
44 '--inputPrescalesL1JSON', l1_ps_filen,
45 '--outputHist=TrigCostRoot_Results.root',
46 '--targetLuminosity', str(args.targetlumi),
47 '--filesInput', filesIn_str
50 cmd_analysis += [
'--evtMax',str(args.maxEvents)]
52 'RatesAnalysisPostProcessing.py',
53 '--file=TrigCostRoot_Results.root',
56print(f
"Analysis cmd > {' '.join(cmd_analysis)}")
57with open(
"log_RatesAnalysis.txt",
'w')
as log_analysis:
58 assert(subprocess.run(cmd_analysis, stdout=log_analysis, stderr=subprocess.STDOUT, text=
True).returncode==0)
60print(f
"Postprocess cmd > {' '.join(cmd_postproc)}")
61with open(
"log_RatesPostProcess.txt",
'w')
as log_postproc:
62 assert(subprocess.run(cmd_postproc, stdout=log_postproc, stderr=subprocess.STDOUT, text=
True).returncode==0)
65if not os.path.isdir(
'output/csv'):
66 os.makedirs(
'output/csv')
68 shutil.rmtree(
'output')
69 os.makedirs(
'output/csv')
70for csv
in [
'Table_Rate_Group_HLT_All.csv',
'Table_Rate_ChainL1_HLT_All.csv',
'Table_Rate_ChainHLT_HLT_All.csv']:
71 shutil.move(csv,
'output/csv/')
72for f
in [
'TrigCostRoot_Results.root',
'metadata.json',
'rates.json']:
73 shutil.move(f,
'output')
77print(f
"Output placed in {args.workdir}/output")
78print(
"Format for trig-cost page dirs: costMonitoring_[tag]_[runNumber]")
void print(char *figname, TCanvas *c1)