6 from AthenaConfiguration.ComponentAccumulator 
import ComponentAccumulator
 
    7 from AthenaConfiguration.ComponentFactory 
import CompFactory
 
    8 from AthenaConfiguration.Enums 
import Format
 
    9 from TileConfiguration.TileConfigFlags 
import TileRunType
 
   12 @file TileAANtupleConfig.py 
   13 @brief Python configuration of TileAANtuple algorithm for the Run III 
   16     ''' Function to configure TileAANtuple algorithm.''' 
   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
 
   24     readDigits = flags.Tile.readDigits
 
   26     kwargs.setdefault(
'UseDspUnits', 
False)
 
   27     useDspUnits = kwargs[
'UseDspUnits']
 
   34     elif not (pedestalRun 
or physicsRun):
 
   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 "")
 
   51     kwargs.setdefault(
'TileMuRcvRawChannelContainer', 
'MuRcvRawChCnt' if saveTMDB 
else "")
 
   52     kwargs.setdefault(
'TileMuRcvDigitsContainer', 
'MuRcvDigitsCnt' if saveTMDB 
else "")
 
   53     kwargs.setdefault(
'TileMuRcvContainer', 
"TileMuRcvCnt" if saveTMDB 
else "")
 
   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)
 
   63     from TileGeoModel.TileGMConfig 
import TileGMCfg
 
   66     from LArGeoAlgsNV.LArGMConfig 
import LArGMCfg
 
   69     from TileConditions.TileCablingSvcConfig 
import TileCablingSvcCfg
 
   72     if 'TileBadChanTool' not in kwargs:
 
   73         from TileConditions.TileBadChannelsConfig 
import TileBadChannelsCondAlgCfg
 
   76     if 'TileCondToolEmscale' not in kwargs:
 
   77         from TileConditions.TileEMScaleConfig 
import TileCondToolEmscaleCfg
 
   79         kwargs[
'TileCondToolEmscale'] = emScaleTool
 
   81     if kwargs[
'CheckDCS']:
 
   82         from TileConditions.TileDCSConfig 
import TileDCSCondAlgCfg
 
   85     from TileRecUtils.TileDQstatusConfig 
import TileDQstatusAlgCfg
 
   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)
 
   95     TileAANtuple = CompFactory.TileAANtuple
 
   96     acc.addEventAlgo(
TileAANtuple(
'TileNtuple', **kwargs), primary = 
True)
 
  101 if __name__==
'__main__':
 
  104     from AthenaConfiguration.AllConfigFlags 
import 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()
 
  112     from AthenaCommon.Logging 
import log
 
  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)
 
  123     log.info(
'FINAL CONFIG FLAGS SETTINGS FOLLOW')
 
  129     from AthenaConfiguration.MainServicesConfig 
import MainServicesCfg
 
  132     rawChannelContainer = 
'TileRawChannelCnt' 
  134     if flags.Input.Format 
is Format.BS:
 
  135         from TileByteStream.TileByteStreamConfig 
import TileRawDataReadingCfg
 
  138                                          readMuRcvDigits=args.tmdb,
 
  139                                          readMuRcvRawCh=args.tmdb) )
 
  142         from AthenaPoolCnvSvc.PoolReadConfig 
import PoolReadCfg
 
  145         inputCollections = flags.Input.Collections
 
  146         if rawChannelContainer 
not in inputCollections:
 
  147             rawChannelContainer = 
'TileRawChannelFlt' if 'TileRawChannelFlt' in inputCollections 
else "" 
  149     cfg.merge( 
TileAANtupleCfg(flags, TileRawChannelContainer=rawChannelContainer, saveTMDB = args.tmdb) )
 
  153         log.info(
'Executing postExec: %s', args.postExec)
 
  156     cfg.printConfig(withDetails = 
True, summariseProps = 
True)
 
  158     cfg.store( 
open(
'TileAANtuple.pkl',
'wb') )
 
  164     sys.exit(0 
if sc.isSuccess() 
else 1)