10 """Return component accumulator with configured Tile muon receiver algorithm
13 flags -- Athena configuration flags
16 kwargs.setdefault(
'name',
'TilePulseForTileMuonReceiver')
17 kwargs.setdefault(
'TileHitContainer',
'TileHitCnt')
18 kwargs.setdefault(
'MuonReceiverRawChannelContainer',
'MuRcvRawChCnt')
19 kwargs.setdefault(
'MaskBadChannels',
False)
20 kwargs.setdefault(
'UseCoolPulseShapes',
True)
21 kwargs.setdefault(
'UseCoolPedestal',
False)
22 kwargs.setdefault(
'UseCoolNoise',
False)
23 kwargs.setdefault(
'TilePulseShape',
'TileMuRcvPulseShape')
25 acc = TileHitVecToCntCfg(flags)
27 from TileConditions.TileInfoLoaderConfig
import TileInfoLoaderCfg
28 acc.merge( TileInfoLoaderCfg(flags) )
29 infoLoader = acc.getService(
'TileInfoLoader')
30 pedestal = infoLoader._descriptors[
'MuRcvPed'].default
32 from TileConditions.TileCablingSvcConfig
import TileCablingSvcCfg
33 acc.merge(TileCablingSvcCfg(flags))
35 from TileConditions.TileSamplingFractionConfig
import TileSamplingFractionCondAlgCfg
36 acc.merge( TileSamplingFractionCondAlgCfg(flags) )
38 if 'RndmSvc' not in kwargs:
39 from RngComps.RngCompsConfig
import AthRNGSvcCfg
40 kwargs[
'RndmSvc'] = acc.getPrimaryAndMerge(AthRNGSvcCfg(flags))
42 if kwargs[
'UseCoolNoise']
or kwargs[
'UseCoolPedestal']:
43 from TileConditions.TileSampleNoiseConfig
import TileSampleNoiseCondAlgCfg
44 acc.merge( TileSampleNoiseCondAlgCfg(flags) )
46 from TileConditions.TileEMScaleConfig
import TileEMScaleCondAlgCfg
47 acc.merge( TileEMScaleCondAlgCfg(flags) )
49 if kwargs[
'MaskBadChannels']:
50 from TileConditions.TileBadChannelsConfig
import TileBadChannelsCondAlgCfg
51 acc.merge( TileBadChannelsCondAlgCfg(flags) )
53 if kwargs[
'UseCoolPulseShapes']:
54 from TileConditions.TilePulseShapeConfig
import TilePulseShapeCondAlgCfg
55 acc.merge( TilePulseShapeCondAlgCfg(flags, Source=
'FILE', TilePulseShape=kwargs[
'TilePulseShape'], PulseType=
'MURCV') )
57 if 'TileRawChannelBuilderMF' not in kwargs:
58 from TileConditions.TilePulseShapeConfig
import TileCondToolMuRcvPulseShapeCfg
59 pulseShapeTool = acc.popToolsAndMerge( TileCondToolMuRcvPulseShapeCfg(flags) )
61 from TileConditions.TileOFCConfig
import TileCondToolOfcCfg
62 ofcTool = acc.popToolsAndMerge( TileCondToolOfcCfg(flags,
63 OptFilterDeltaCorrelation =
True,
64 TileCondToolPulseShape = pulseShapeTool) )
67 from TileRecUtils.TileRawChannelBuilderMFConfig
import TileRawChannelBuilderMFCfg
68 rawChanBuilder = acc.popToolsAndMerge( TileRawChannelBuilderMFCfg(flags, MF = 1,
70 DefaultPedestal = pedestal,
71 TileCondToolOfcOnFly = ofcTool,
72 TileCondToolOfc = ofcTool,
73 TileRawChannelContainer =
"") )
74 kwargs[
'TileRawChannelBuilderMF'] = rawChanBuilder
77 kwargs.setdefault(
'IntegerDigits', flags.Common.ProductionStep != ProductionStep.PileUpPresampling)
79 if flags.Common.ProductionStep == ProductionStep.PileUpPresampling:
80 kwargs.setdefault(
'MuonReceiverDigitsContainer', flags.Overlay.BkgPrefix +
'MuRcvDigitsCnt')
82 kwargs.setdefault(
'MuonReceiverDigitsContainer',
'MuRcvDigitsCnt')
84 if flags.Common.isOverlay
and flags.Concurrency.NumThreads > 0:
85 kwargs.setdefault(
'Cardinality', flags.Concurrency.NumThreads)
87 TilePulseForTileMuonReceiver=CompFactory.TilePulseForTileMuonReceiver
94 """Return component accumulator with configured Tile muon receiver algorithm and Output stream
97 flags -- Athena configuration flags
101 tilePulseForMuRcv = acc.getPrimary()
103 if hasattr(tilePulseForMuRcv,
'MuonReceiverDigitsContainer'):
104 muRcvDigitsCnt = tilePulseForMuRcv.MuonReceiverDigitsContainer
106 muRcvDigitsCnt = tilePulseForMuRcv.getDefaultProperty(
'MuonReceiverDigitsContainer')
107 muRcvDigitsCnt = str(muRcvDigitsCnt).
split(
'+').pop()
108 outputItemList = [
'TileDigitsContainer#' + muRcvDigitsCnt]
110 if flags.Common.ProductionStep != ProductionStep.PileUpPresampling:
111 if hasattr(tilePulseForMuRcv,
'MuonReceiverRawChannelContainer'):
112 muRcvRawChCnt = tilePulseForMuRcv.MuonReceiverRawChannelContainer
114 muRcvRawChCnt = tilePulseForMuRcv.getDefaultProperty(
'MuonReceiverRawChannelContainer')
115 muRcvRawChCnt = str(muRcvRawChCnt).
split(
'+').pop()
116 outputItemList += [
'TileRawChannelContainer#' + muRcvRawChCnt]
118 if flags.Output.doWriteRDO:
119 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
120 acc.merge( OutputStreamCfg(flags, streamName =
'RDO', ItemList = outputItemList) )