ATLAS Offline Software
TileAANtupleConfig.py
Go to the documentation of this file.
1 #
2 # Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 #
4 
5 
6 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
7 from AthenaConfiguration.ComponentFactory import CompFactory
8 from AthenaConfiguration.Enums import Format
9 from TileConfiguration.TileConfigFlags import TileRunType
10 
11 '''
12 @file TileAANtupleConfig.py
13 @brief Python configuration of TileAANtuple algorithm for the Run III
14 '''
15 def TileAANtupleCfg(flags, outputFile='', saveTMDB=True, **kwargs):
16  ''' Function to configure TileAANtuple algorithm.'''
17 
18 
19  cisRun = flags.Tile.RunType is TileRunType.CIS
20  laserRun = flags.Tile.RunType is TileRunType.LAS
21  pedestalRun = flags.Tile.RunType is TileRunType.PED
22  physicsRun = flags.Tile.RunType is TileRunType.PHY
23 
24  readDigits = flags.Tile.readDigits
25 
26  kwargs.setdefault('TileDigitsContainer', 'TileDigitsCnt' if readDigits else "")
27  kwargs.setdefault('TileDigitsContainerFlt', 'TileDigitsFlt' if not readDigits else "")
28  kwargs.setdefault('TileRawChannelContainer', flags.Tile.RawChannelContainer)
29  kwargs.setdefault('TileRawChannelContainerFit', 'TileRawChannelFit' if flags.Tile.doFit else "")
30  kwargs.setdefault('TileRawChannelContainerFitCool', 'TileRawChannelFitCool' if flags.Tile.doFitCOOL else "")
31  kwargs.setdefault('TileRawChannelContainerOpt', "")
32  kwargs.setdefault('TileRawChannelContainerQIE', 'TileRawChannelQIE' if flags.Tile.doQIE else "")
33  kwargs.setdefault('TileRawChannelContainerOF1', 'TileRawChannelOF1' if flags.Tile.doOF1 else "")
34  kwargs.setdefault('TileRawChannelContainerMF', 'TileRawChannelMF' if flags.Tile.doMF else "")
35  kwargs.setdefault('TileRawChannelContainerWiener', "")
36  kwargs.setdefault('TileRawChannelContainerDsp', "")
37  kwargs.setdefault('TileLaserObject', 'TileLaserObj' if laserRun else "")
38  kwargs.setdefault('TileBeamElemContainer', 'TileBeamElemCnt' if not physicsRun else "")
39 
40  kwargs.setdefault('TileMuRcvRawChannelContainer', 'MuRcvRawChCnt' if saveTMDB else "")
41  kwargs.setdefault('TileMuRcvDigitsContainer', 'MuRcvDigitsCnt' if saveTMDB else "")
42  kwargs.setdefault('TileMuRcvContainer', "TileMuRcvCnt" if saveTMDB else "")
43 
44  kwargs.setdefault('CheckDCS', flags.Tile.useDCS)
45  kwargs.setdefault('BSInput', flags.Input.Format is Format.BS and not physicsRun)
46  kwargs.setdefault('CalibMode', pedestalRun or cisRun)
47  kwargs.setdefault('CalibrateEnergy', flags.Input.isMC or not (cisRun or physicsRun))
48 
49  acc = ComponentAccumulator()
50 
51  from TileGeoModel.TileGMConfig import TileGMCfg
52  acc.merge(TileGMCfg(flags))
53 
54  from LArGeoAlgsNV.LArGMConfig import LArGMCfg
55  acc.merge(LArGMCfg(flags))
56 
57  from TileConditions.TileCablingSvcConfig import TileCablingSvcCfg
58  acc.merge( TileCablingSvcCfg(flags) )
59 
60  if 'TileBadChanTool' not in kwargs:
61  from TileConditions.TileBadChannelsConfig import TileBadChannelsCondAlgCfg
62  acc.merge( TileBadChannelsCondAlgCfg(flags) )
63 
64  if 'TileCondToolEmscale' not in kwargs:
65  from TileConditions.TileEMScaleConfig import TileCondToolEmscaleCfg
66  emScaleTool = acc.popToolsAndMerge( TileCondToolEmscaleCfg(flags) )
67  kwargs['TileCondToolEmscale'] = emScaleTool
68 
69  if kwargs['CheckDCS']:
70  from TileConditions.TileDCSConfig import TileDCSCondAlgCfg
71  acc.merge( TileDCSCondAlgCfg(flags) )
72 
73  from TileRecUtils.TileDQstatusConfig import TileDQstatusAlgCfg
74  acc.merge( TileDQstatusAlgCfg(flags) )
75 
76  if not outputFile:
77  run = str(flags.Input.RunNumbers[0])
78  outputFile = 'tile_{}.aan.root'.format(run)
79  histsvc = CompFactory.THistSvc()
80  histsvc.Output += ["%s DATAFILE='%s' OPT='RECREATE'" % ('AANT', outputFile)]
81  acc.addService(histsvc)
82 
83  TileAANtuple = CompFactory.TileAANtuple
84  acc.addEventAlgo(TileAANtuple('TileNtuple', **kwargs), primary = True)
85 
86  return acc
87 
88 
89 if __name__=='__main__':
90 
91  # Set the Athena configuration flags
92  from AthenaConfiguration.AllConfigFlags import initConfigFlags
93  flags = initConfigFlags()
94  parser = flags.getArgumentParser()
95  parser.add_argument('--postExec', help='Code to execute after setup')
96  parser.add_argument('--no-tmdb', dest='tmdb', action='store_false', help='Do not save TMDB information into ntuple')
97  args, _ = parser.parse_known_args()
98 
99  # Setup logs
100  from AthenaCommon.Logging import log
101  from AthenaCommon.Constants import INFO
102  log.setLevel(INFO)
103 
104  from AthenaConfiguration.TestDefaults import defaultConditionsTags, defaultGeometryTags, defaultTestFiles
105  flags.Input.Files = defaultTestFiles.RAW_RUN2
106  flags.GeoModel.AtlasVersion = defaultGeometryTags.RUN2
107  flags.IOVDb.GlobalTag = defaultConditionsTags.RUN2_DATA
108  flags.Exec.MaxEvents = 3
109  flags.fillFromArgs(parser=parser)
110 
111  log.info('FINAL CONFIG FLAGS SETTINGS FOLLOW')
112  flags.dump()
113 
114  flags.lock()
115 
116  # Initialize configuration object, add accumulator, merge, and run.
117  from AthenaConfiguration.MainServicesConfig import MainServicesCfg
118  cfg = MainServicesCfg(flags)
119 
120  rawChannelContainer = 'TileRawChannelCnt'
121 
122  if flags.Input.Format is Format.BS:
123  from TileByteStream.TileByteStreamConfig import TileRawDataReadingCfg
124  cfg.merge( TileRawDataReadingCfg(flags,
125  readMuRcv=args.tmdb,
126  readMuRcvDigits=args.tmdb,
127  readMuRcvRawCh=args.tmdb) )
128 
129  else:
130  from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg
131  cfg.merge(PoolReadCfg(flags))
132 
133  inputCollections = flags.Input.Collections
134  if rawChannelContainer not in inputCollections:
135  rawChannelContainer = 'TileRawChannelFlt' if 'TileRawChannelFlt' in inputCollections else ""
136 
137  cfg.merge( TileAANtupleCfg(flags, TileRawChannelContainer=rawChannelContainer, saveTMDB = args.tmdb) )
138 
139  # Any last things to do?
140  if args.postExec:
141  log.info('Executing postExec: %s', args.postExec)
142  exec(args.postExec)
143 
144  cfg.printConfig(withDetails = True, summariseProps = True)
145 
146  cfg.store( open('TileAANtuple.pkl','wb') )
147 
148  sc = cfg.run()
149 
150  import sys
151  # Success should be 0
152  sys.exit(0 if sc.isSuccess() else 1)
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
vtune_athena.format
format
Definition: vtune_athena.py:14
TileAANtupleConfig.TileAANtupleCfg
def TileAANtupleCfg(flags, outputFile='', saveTMDB=True, **kwargs)
Definition: TileAANtupleConfig.py:15
TileDQstatusConfig.TileDQstatusAlgCfg
def TileDQstatusAlgCfg(flags, **kwargs)
Definition: TileDQstatusConfig.py:31
python.TileBadChannelsConfig.TileBadChannelsCondAlgCfg
def TileBadChannelsCondAlgCfg(flags, **kwargs)
Definition: TileBadChannelsConfig.py:10
LArG4FSStartPointFilter.exec
exec
Definition: LArG4FSStartPointFilter.py:103
python.MainServicesConfig.MainServicesCfg
def MainServicesCfg(flags, LoopMgr='AthenaEventLoopMgr')
Definition: MainServicesConfig.py:252
Constants
some useful constants -------------------------------------------------—
LArGMConfig.LArGMCfg
def LArGMCfg(flags)
Definition: LArGMConfig.py:8
python.TileDCSConfig.TileDCSCondAlgCfg
def TileDCSCondAlgCfg(flags, **kwargs)
Definition: TileDCSConfig.py:8
python.TileEMScaleConfig.TileCondToolEmscaleCfg
def TileCondToolEmscaleCfg(flags, **kwargs)
Definition: TileEMScaleConfig.py:125
Trk::open
@ open
Definition: BinningType.h:40
TileAANtuple
class to produce TileCal commissioning ntuples
Definition: TileAANtuple.h:96
python.AllConfigFlags.initConfigFlags
def initConfigFlags()
Definition: AllConfigFlags.py:19
TileByteStreamConfig.TileRawDataReadingCfg
def TileRawDataReadingCfg(flags, readDigits=True, readRawChannel=True, readMuRcv=None, readMuRcvDigits=False, readMuRcvRawCh=False, readBeamElem=None, readLaserObj=None, readDigitsFlx=False, readL2=False, stateless=False, **kwargs)
Definition: TileByteStreamConfig.py:87
str
Definition: BTagTrackIpAccessor.cxx:11
python.PoolReadConfig.PoolReadCfg
def PoolReadCfg(flags)
Definition: PoolReadConfig.py:69
python.TileCablingSvcConfig.TileCablingSvcCfg
def TileCablingSvcCfg(flags)
Definition: TileCablingSvcConfig.py:11
TileGMConfig.TileGMCfg
def TileGMCfg(flags)
Definition: TileGMConfig.py:7