ATLAS Offline Software
Functions
python.RatesAnalysisPostProcessing Namespace Reference

Functions

def main ()
 

Function Documentation

◆ main()

def python.RatesAnalysisPostProcessing.main ( )

Definition at line 19 of file RatesAnalysisPostProcessing.py.

19 def main():
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.')
38 
39 
40  args = parser.parse_args()
41  log = logging.getLogger('RatesPostProcessing')
42 
43  inputFile = ROOT.TFile(args.file, 'READ')
44 
45  metadata = getMetadata(inputFile)
46 
47  normdict = slice_dictionary(inputFile, "normalisation")
48 
49  if len(normdict)==0 or metadata is None:
50  log.error('Cannot locate normHist, or metadata in top level of ntuple.')
51  exit()
52 
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)
57 
58  metadata['details'] = args.userDetails
59  metadata['JIRA'] = args.jira
60  metadata['amiTag'] = args.amiTag
61  metadata['doBinomialCorrection'] = args.doBinomialCorrection
62 
63  HLTGlobalGroup = getGlobalGroup(inputFile, 'RATE_GLOBAL_HLT')
64  L1GlobalGroup = getGlobalGroup(inputFile, 'RATE_GLOBAL_L1')
65 
66  L1Triggers = populateTriggers(inputFile, metadata, L1GlobalGroup, 'ChainL1')
67  HLTTriggers = populateTriggers(inputFile, metadata, HLTGlobalGroup, 'ChainHLT')
68  AllGlobalGroups = populateTriggers(inputFile, metadata, HLTGlobalGroup, 'Group')
69 
70  scanTriggers = populateScanTriggers(inputFile, metadata)
71 
72 
73  if not scanTriggers and (not L1Triggers or not HLTTriggers or not AllGlobalGroups):
74  log.error("Failed to populate triggers")
75  return
76 
77  L1Table = getTableName("L1")
78  HLTTable = getTableName("HLT")
79  GroupTable = getTableName("Group")
80 
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)
91 
python.Util.slice_dictionary
def slice_dictionary(directory, object_key)
Definition: RatesAnalysis/python/Util.py:221
python.Util.getGlobalGroup
def getGlobalGroup(inputFile, filter)
Definition: RatesAnalysis/python/Util.py:246
python.Util.populateTriggers
def populateTriggers(inputFile, metadata, globalGroupDict, filter)
Definition: RatesAnalysis/python/Util.py:196
getMetadata
Definition: getMetadata.py:1
calibdata.exit
exit
Definition: calibdata.py:235
python.Util.getTableName
def getTableName(name)
Definition: RatesAnalysis/python/Util.py:14
python.Util.toJson
def toJson(fileName, metadata, L1Triggers, HLTTriggers)
Definition: RatesAnalysis/python/Util.py:65
python.Util.populateScanTriggers
def populateScanTriggers(inputFile, metadata)
Definition: RatesAnalysis/python/Util.py:232
python.Util.toROOT
def toROOT(fileName, triggers)
Definition: RatesAnalysis/python/Util.py:122
python.RatesAnalysisOnlineProcessing.toCSV
def toCSV(fileName, dirName, data)
Definition: RatesAnalysisOnlineProcessing.py:159
python.RatesAnalysisPostProcessing.main
def main()
Definition: RatesAnalysisPostProcessing.py:19