ATLAS Offline Software
runIDTPM.py
Go to the documentation of this file.
1 #!/usr/bin/env python
2 # Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 
4 from glob import glob
5 
7  from argparse import ArgumentParser
8  IDTPMparser = ArgumentParser( description='Parser for IDTPM configuration' )
9  IDTPMparser.add_argument( "--inputFileNames", help="Comma-separated list of input files", required=True)
10  IDTPMparser.add_argument( "--maxEvents", help="Limit number of events. Default: all input events", default=-1, type=int )
11  IDTPMparser.add_argument( "--debug", help="Enable debugging messages", action="store_true", default=False )
12  IDTPMparser.add_argument( "--dirName", help="Main directory name for storing plots", default="InDetTrackPerfMonPlots/" )
13  IDTPMparser.add_argument( "--outputFilePrefix", help='Name of output file', default="myIDTPM_out" )
14  IDTPMparser.add_argument( "--writeAOD_IDTPM", help="Write output file for reprocessing", action="store_true", default=False )
15  IDTPMparser.add_argument( "--trkAnaCfgFile", help='File with track analysis setup (.json format)', default='Default' )
16  IDTPMparser.add_argument( "--unpackTrigChains", help="Run each configured trigger chain in a separate track analysis", action="store_true", default=False )
17  IDTPMparser.add_argument( "--plotsDefFormat", help='Format of the plots definition file', default="JSON" )
18  IDTPMparser.add_argument( "--plotsDefFileList", help='Plain txt file containing the list of .json file names with the plots definitions', default="InDetTrackPerfMon/PlotsDefFileList_default.txt" )
19  IDTPMparser.add_argument( "--plotsCommonValuesFile", help='JSON file listing all the default values to be used in plots', default="InDetTrackPerfMon/PlotsDefCommonValues.json" )
20  IDTPMparser.add_argument( "--sortPlotsByChain", help="Arrange plots first in subdirectories named after the current chain", action="store_true", default=False )
21  return IDTPMparser.parse_args()
22 
23 
24 MyArgs = GetCustomAthArgs()
25 
26 #from AthenaConfiguration.Enums import LHCPeriod
27 from AthenaConfiguration.AllConfigFlags import initConfigFlags
28 flags = initConfigFlags()
29 
30 
31 flags.Input.Files = []
32 for path in MyArgs.inputFileNames.split( ',' ):
33  flags.Input.Files += glob( path )
34 
35 
36 flags.PhysVal.OutputFileName = MyArgs.outputFilePrefix + '.HIST.root'
37 flags.addFlag( 'Output.doWriteAOD_IDTPM', MyArgs.writeAOD_IDTPM )
38 flags.addFlag( 'Output.AOD_IDTPMFileName',
39  MyArgs.outputFilePrefix + '.AOD_IDTPM.pool.root' )
40 
41 
42 if MyArgs.debug:
43  from AthenaCommon.Constants import DEBUG
44  flags.Exec.OutputLevel = DEBUG
45 
46 
47 from InDetTrackPerfMon.InDetTrackPerfMonFlags import createIDTPMConfigFlags
48 flags.addFlagsCategory( "PhysVal.IDTPM",
49  createIDTPMConfigFlags,
50  prefix=True )
51 
52 flags.PhysVal.IDTPM.DirName = MyArgs.dirName
53 flags.PhysVal.IDTPM.plotsDefFormat = MyArgs.plotsDefFormat
54 flags.PhysVal.IDTPM.plotsDefFileList = MyArgs.plotsDefFileList
55 flags.PhysVal.IDTPM.plotsCommonValuesFile = MyArgs.plotsCommonValuesFile
56 flags.PhysVal.IDTPM.sortPlotsByChain = MyArgs.sortPlotsByChain
57 
58 
60 from InDetTrackPerfMon.InDetTrackPerfMonFlags import createIDTPMTrkAnaConfigFlags
61 
62 
63 
64 from InDetTrackPerfMon.ConfigUtils import getTrkAnaDicts
65 analysesDict = getTrkAnaDicts( flags, MyArgs.trkAnaCfgFile, MyArgs.unpackTrigChains )
66 
67 trkAnaNames = []
68 
69 if analysesDict:
70  for trkAnaName, trkAnaDict in analysesDict.items():
71  # Append TrkAnalysisName to list
72  trkAnaNames.append( trkAnaName )
73 
74  # separate flag category for each TrkAnalysis
75  flags.addFlagsCategory( "PhysVal.IDTPM."+trkAnaName,
76  createIDTPMTrkAnaConfigFlags,
77  prefix=True )
78 
79  # set flags from values in trkAnaDict
80  for fname, fvalue in trkAnaDict.items():
81  setattr( flags.PhysVal.IDTPM,
82  trkAnaName+"."+fname, fvalue )
83 
84 if trkAnaNames:
85  flags.PhysVal.IDTPM.trkAnaNames = trkAnaNames
86 
87 # Default TrackAnalysis configuration flags category
88 if not trkAnaNames:
89  flags.addFlagsCategory( "PhysVal.IDTPM.Default",
90  createIDTPMTrkAnaConfigFlags,
91  prefix=True )
92 
93 flags.lock()
94 flags.dump()
95 
96 from AthenaConfiguration.MainServicesConfig import MainServicesCfg
97 acc = MainServicesCfg(flags)
98 
99 from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg
100 acc.merge( PoolReadCfg(flags) )
101 
102 from InDetTrackPerfMon.InDetTrackPerfMonConfig import InDetTrackPerfMonCfg
103 acc.merge( InDetTrackPerfMonCfg(flags) )
104 
105 acc.printConfig( withDetails=True )
106 
107 # Execute and finish
108 sc = acc.run( maxEvents=MyArgs.maxEvents )
109 
110 # Success should be 0
111 import sys
112 sys.exit( not sc.isSuccess() )
runIDTPM.GetCustomAthArgs
def GetCustomAthArgs()
Definition: runIDTPM.py:6
ConfigUtils.getTrkAnaDicts
def getTrkAnaDicts(flags, input_file, unpackChains=False)
Definition: ConfigUtils.py:7
python.MainServicesConfig.MainServicesCfg
def MainServicesCfg(flags, LoopMgr='AthenaEventLoopMgr')
Definition: MainServicesConfig.py:256
Constants
some useful constants -------------------------------------------------—
python.AllConfigFlags.initConfigFlags
def initConfigFlags()
Definition: AllConfigFlags.py:19
python.PoolReadConfig.PoolReadCfg
def PoolReadCfg(flags)
Definition: PoolReadConfig.py:69
InDetTrackPerfMonConfig.InDetTrackPerfMonCfg
def InDetTrackPerfMonCfg(flags)
Definition: InDetTrackPerfMonConfig.py:167