20 from argparse
import ArgumentParser
21 parser = ArgumentParser()
22 parser.add_argument(
'--file', default=
'RatesHistograms.root',
23 help=
'Input ROOT file to generate output from, run hadd first if you have more than one')
24 parser.add_argument(
'--outputTag', default=
'LOCAL',
25 help=
'Tag identifying this processing to be used in the output folder name (any underscores will be removed)')
26 parser.add_argument(
'--outputJSONFile', default=
'rates.json',
27 help=
'JSON file of rates for use with the RuleBook')
28 parser.add_argument(
'--outputROOTFile', default=
'scanTriggers.root',
29 help=
'ROOT file of normalised scan-triggers')
30 parser.add_argument(
'--userDetails',
31 help=
'User supplied metadata string giving any extra details about this run.')
32 parser.add_argument(
'--jira',
33 help=
'Related jira ticket number')
34 parser.add_argument(
'--amiTag',
35 help=
'AMI tag used for data reprocessing')
36 parser.add_argument(
'--doBinomialCorrection', action=
'store_true',
37 help=
'apply binomial correction to trigger rates when using Monte Carlo JZ slices.')
40 args = parser.parse_args()
41 log = logging.getLogger(
'RatesPostProcessing')
43 inputFile = ROOT.TFile(args.file,
'READ')
49 if len(normdict)==0
or metadata
is None:
50 log.error(
'Cannot locate normHist, or metadata in top level of ntuple.')
53 for suffix, normHist
in normdict.items():
54 metadata[
'normalisation'+suffix] = normHist.GetBinContent(1)
55 metadata[
'n_evts'+suffix] = normHist.GetBinContent(2)
56 metadata[
'n_evts_weighted'+suffix] = normHist.GetBinContent(3)
58 metadata[
'details'] = args.userDetails
59 metadata[
'JIRA'] = args.jira
60 metadata[
'amiTag'] = args.amiTag
61 metadata[
'doBinomialCorrection'] = args.doBinomialCorrection
67 HLTTriggers =
populateTriggers(inputFile, metadata, HLTGlobalGroup,
'ChainHLT')
68 AllGlobalGroups =
populateTriggers(inputFile, metadata, HLTGlobalGroup,
'Group')
73 if not scanTriggers
and (
not L1Triggers
or not HLTTriggers
or not AllGlobalGroups):
74 log.error(
"Failed to populate triggers")
81 log.info(
"Exporting " + args.outputJSONFile)
82 toJson(args.outputJSONFile, metadata, L1Triggers, HLTTriggers)
83 log.info(
"Exporting " + HLTTable)
84 toCSV(HLTTable, metadata, HLTTriggers)
85 log.info(
"Exporting " + L1Table)
86 toCSV(L1Table, metadata, L1Triggers)
87 log.info(
"Exporting " + GroupTable)
88 toCSV(GroupTable, metadata, AllGlobalGroups)
89 log.info(
"Exporting scan triggers")
90 toROOT(args.outputROOTFile, scanTriggers)