Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
TileAANtupleConfig.py
Go to the documentation of this file.
1 #
2 # Copyright (C) 2002-2025 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('UseDspUnits', False)
27  useDspUnits = kwargs['UseDspUnits']
28 
29  offlineUnits = 3 # MeV (default)
30  if useDspUnits:
31  offlineUnits = -1
32  elif cisRun:
33  offlineUnits = 0 # ADC
34  elif not (pedestalRun or physicsRun):
35  offlineUnits = 1 # pCb
36 
37  kwargs.setdefault('TileDigitsContainer', 'TileDigitsCnt' if readDigits else "")
38  kwargs.setdefault('TileDigitsContainerFlt', 'TileDigitsFlt' if not readDigits else "")
39  kwargs.setdefault('TileRawChannelContainer', flags.Tile.RawChannelContainer)
40  kwargs.setdefault('TileRawChannelContainerFit', 'TileRawChannelFit' if flags.Tile.doFit else "")
41  kwargs.setdefault('TileRawChannelContainerFitCool', 'TileRawChannelFitCool' if flags.Tile.doFitCOOL else "")
42  kwargs.setdefault('TileRawChannelContainerOpt', "")
43  kwargs.setdefault('TileRawChannelContainerQIE', 'TileRawChannelQIE' if flags.Tile.doQIE else "")
44  kwargs.setdefault('TileRawChannelContainerOF1', 'TileRawChannelOF1' if flags.Tile.doOF1 else "")
45  kwargs.setdefault('TileRawChannelContainerMF', 'TileRawChannelMF' if flags.Tile.doMF else "")
46  kwargs.setdefault('TileRawChannelContainerWiener', "")
47  kwargs.setdefault('TileRawChannelContainerDsp', "")
48  kwargs.setdefault('TileLaserObject', 'TileLaserObj' if laserRun else "")
49  kwargs.setdefault('TileBeamElemContainer', 'TileBeamElemCnt' if not physicsRun else "")
50 
51  kwargs.setdefault('TileMuRcvRawChannelContainer', 'MuRcvRawChCnt' if saveTMDB else "")
52  kwargs.setdefault('TileMuRcvDigitsContainer', 'MuRcvDigitsCnt' if saveTMDB else "")
53  kwargs.setdefault('TileMuRcvContainer', "TileMuRcvCnt" if saveTMDB else "")
54 
55  kwargs.setdefault('CheckDCS', flags.Tile.useDCS)
56  kwargs.setdefault('BSInput', flags.Input.Format is Format.BS and not physicsRun)
57  kwargs.setdefault('CalibMode', pedestalRun or cisRun)
58  kwargs.setdefault('CalibrateEnergy', flags.Input.isMC or useDspUnits or not cisRun)
59  kwargs.setdefault('OfflineUnits', offlineUnits)
60 
61  acc = ComponentAccumulator()
62 
63  from TileGeoModel.TileGMConfig import TileGMCfg
64  acc.merge(TileGMCfg(flags))
65 
66  from LArGeoAlgsNV.LArGMConfig import LArGMCfg
67  acc.merge(LArGMCfg(flags))
68 
69  from TileConditions.TileCablingSvcConfig import TileCablingSvcCfg
70  acc.merge( TileCablingSvcCfg(flags) )
71 
72  if 'TileBadChanTool' not in kwargs:
73  from TileConditions.TileBadChannelsConfig import TileBadChannelsCondAlgCfg
74  acc.merge( TileBadChannelsCondAlgCfg(flags) )
75 
76  if 'TileCondToolEmscale' not in kwargs:
77  from TileConditions.TileEMScaleConfig import TileCondToolEmscaleCfg
78  emScaleTool = acc.popToolsAndMerge( TileCondToolEmscaleCfg(flags) )
79  kwargs['TileCondToolEmscale'] = emScaleTool
80 
81  if kwargs['CheckDCS']:
82  from TileConditions.TileDCSConfig import TileDCSCondAlgCfg
83  acc.merge( TileDCSCondAlgCfg(flags) )
84 
85  from TileRecUtils.TileDQstatusConfig import TileDQstatusAlgCfg
86  acc.merge( TileDQstatusAlgCfg(flags) )
87 
88  if not outputFile:
89  run = str(flags.Input.RunNumbers[0])
90  outputFile = 'tile_{}.aan.root'.format(run)
91  histsvc = CompFactory.THistSvc()
92  histsvc.Output += ["%s DATAFILE='%s' OPT='RECREATE'" % ('AANT', outputFile)]
93  acc.addService(histsvc)
94 
95  TileAANtuple = CompFactory.TileAANtuple
96  acc.addEventAlgo(TileAANtuple('TileNtuple', **kwargs), primary = True)
97 
98  return acc
99 
100 
101 if __name__=='__main__':
102 
103  # Set the Athena configuration flags
104  from AthenaConfiguration.AllConfigFlags import initConfigFlags
105  flags = initConfigFlags()
106  parser = flags.getArgumentParser()
107  parser.add_argument('--postExec', help='Code to execute after setup')
108  parser.add_argument('--no-tmdb', dest='tmdb', action='store_false', help='Do not save TMDB information into ntuple')
109  args, _ = parser.parse_known_args()
110 
111  # Setup logs
112  from AthenaCommon.Logging import log
113  from AthenaCommon.Constants import INFO
114  log.setLevel(INFO)
115 
116  from AthenaConfiguration.TestDefaults import defaultConditionsTags, defaultGeometryTags, defaultTestFiles
117  flags.Input.Files = defaultTestFiles.RAW_RUN2
118  flags.GeoModel.AtlasVersion = defaultGeometryTags.RUN2
119  flags.IOVDb.GlobalTag = defaultConditionsTags.RUN2_DATA
120  flags.Exec.MaxEvents = 3
121  flags.fillFromArgs(parser=parser)
122 
123  log.info('FINAL CONFIG FLAGS SETTINGS FOLLOW')
124  flags.dump()
125 
126  flags.lock()
127 
128  # Initialize configuration object, add accumulator, merge, and run.
129  from AthenaConfiguration.MainServicesConfig import MainServicesCfg
130  cfg = MainServicesCfg(flags)
131 
132  rawChannelContainer = 'TileRawChannelCnt'
133 
134  if flags.Input.Format is Format.BS:
135  from TileByteStream.TileByteStreamConfig import TileRawDataReadingCfg
136  cfg.merge( TileRawDataReadingCfg(flags,
137  readMuRcv=args.tmdb,
138  readMuRcvDigits=args.tmdb,
139  readMuRcvRawCh=args.tmdb) )
140 
141  else:
142  from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg
143  cfg.merge(PoolReadCfg(flags))
144 
145  inputCollections = flags.Input.Collections
146  if rawChannelContainer not in inputCollections:
147  rawChannelContainer = 'TileRawChannelFlt' if 'TileRawChannelFlt' in inputCollections else ""
148 
149  cfg.merge( TileAANtupleCfg(flags, TileRawChannelContainer=rawChannelContainer, saveTMDB = args.tmdb) )
150 
151  # Any last things to do?
152  if args.postExec:
153  log.info('Executing postExec: %s', args.postExec)
154  exec(args.postExec)
155 
156  cfg.printConfig(withDetails = True, summariseProps = True)
157 
158  cfg.store( open('TileAANtuple.pkl','wb') )
159 
160  sc = cfg.run()
161 
162  import sys
163  # Success should be 0
164  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:260
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:95
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