15 from AthenaCommon.Logging
import logging
16 log = logging.getLogger(
'BStoRDO')
17 log.info(
'****************** STARTING BStoRDO *****************')
19 log.info(
'**** Transformation run arguments')
20 log.info(str(runArgs))
22 log.info(
'**** Setting-up configuration flags')
23 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
24 flags = initConfigFlags()
26 commonRunArgsToFlags(runArgs, flags)
28 flags.Common.ProductionStep = ProductionStep.MinbiasPreprocessing
30 flags.Reco.EnableHI =
True
31 flags.Reco.HIMode = HIMode.HI
32 flags.Tracking.doCaloSeededAmbi =
False
33 flags.Tracking.doCaloSeededBrem =
False
36 flags.Overlay.DataOverlay =
True
39 if hasattr(runArgs,
'inputBSFile'):
40 flags.Input.Files = runArgs.inputBSFile
42 raise ValueError(
'No input BS file defined')
44 if hasattr(runArgs,
'outputRDO_BKGFile'):
45 flags.Output.RDOFileName = runArgs.outputRDO_BKGFile
47 raise RuntimeError(
'No output RDO file defined')
50 if hasattr(runArgs,
'detectors'):
51 detectors = runArgs.detectors
56 from AthenaConfiguration.DetectorConfigFlags
import setupDetectorFlags
57 setupDetectorFlags(flags, detectors, use_metadata=
True, toggle_geometry=
True)
60 from PerfMonComps.PerfMonConfigHelpers
import setPerfmonFlagsFromRunArgs
61 setPerfmonFlagsFromRunArgs(flags, runArgs)
64 processPreInclude(runArgs, flags)
67 processPreExec(runArgs, flags)
78 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
79 cfg = MainServicesCfg(flags)
81 from EventBookkeeperTools.EventBookkeeperToolsConfig
import CutFlowSvcCfg
82 cfg.merge(CutFlowSvcCfg(flags))
84 from ByteStreamCnvSvc.ByteStreamConfig
import ByteStreamReadCfg
85 cfg.merge(ByteStreamReadCfg(flags))
87 from LumiBlockComps.LumiBlockMuWriterConfig
import LumiBlockMuWriterCfg
88 cfg.merge(LumiBlockMuWriterCfg(flags))
90 if flags.Detector.EnableBCM:
91 from InDetOverlay.BCMOverlayConfig
import BCMRawDataProviderAlgCfg
92 cfg.merge(BCMRawDataProviderAlgCfg(flags))
93 itemList.append(f
'BCM_RDO_Container#{flags.Overlay.BkgPrefix}BCM_RDOs')
95 if flags.Detector.EnablePixel:
96 from PixelRawDataByteStreamCnv.PixelRawDataByteStreamCnvConfig
import PixelRawDataProviderAlgCfg
97 cfg.merge(PixelRawDataProviderAlgCfg(flags))
98 itemList.append(f
'PixelRDO_Container#{flags.Overlay.BkgPrefix}PixelRDOs')
99 itemList.append(
'IDCInDetBSErrContainer#PixelByteStreamErrs')
101 if flags.Detector.EnableSCT:
102 from SCT_RawDataByteStreamCnv.SCT_RawDataByteStreamCnvConfig
import SCTRawDataProviderCfg, SCTEventFlagWriterCfg
103 cfg.merge(SCTRawDataProviderCfg(flags))
104 cfg.merge(SCTEventFlagWriterCfg(flags))
105 itemList.append(f
'SCT_RDO_Container#{flags.Overlay.BkgPrefix}SCT_RDOs')
106 itemList.append(
'IDCInDetBSErrContainer#SCT_ByteStreamErrs')
108 if flags.Detector.EnableTRT:
109 from TRT_RawDataByteStreamCnv.TRT_RawDataByteStreamCnvConfig
import TRTRawDataProviderCfg
110 cfg.merge(TRTRawDataProviderCfg(flags))
111 itemList.append(f
'TRT_RDO_Container#{flags.Overlay.BkgPrefix}TRT_RDOs')
112 itemList.append(
'TRT_BSErrContainer#TRT_ByteStreamErrs')
114 if flags.Detector.EnableLAr:
115 from LArByteStream.LArRawDataReadingConfig
import LArRawDataReadingCfg
116 cfg.merge(LArRawDataReadingCfg(flags))
117 itemList.append(f
'LArDigitContainer#{flags.Overlay.BkgPrefix}LArDigitContainer_data')
118 itemList.append(
'LArFebHeaderContainer#LArFebHeader')
120 if flags.Detector.EnableTile:
121 from TileByteStream.TileByteStreamConfig
import TileRawDataReadingCfg
122 cfg.merge(TileRawDataReadingCfg(flags, readMuRcv=
False))
123 itemList.append(f
'TileRawChannelContainer#{flags.Overlay.BkgPrefix}TileRawChannelCnt')
124 itemList.append(f
'TileDigitsContainer#{flags.Overlay.BkgPrefix}TileDigitsCnt')
126 if flags.Detector.EnableCSC:
127 from MuonConfig.MuonBytestreamDecodeConfig
import CscBytestreamDecodeCfg
128 cfg.merge(CscBytestreamDecodeCfg(flags))
129 itemList.append(f
'CscRawDataContainer#{flags.Overlay.BkgPrefix}CSCRDO')
131 if flags.Detector.EnableMDT:
132 from MuonConfig.MuonBytestreamDecodeConfig
import MdtBytestreamDecodeCfg
133 cfg.merge(MdtBytestreamDecodeCfg(flags))
134 itemList.append(f
'MdtCsmContainer#{flags.Overlay.BkgPrefix}MDTCSM')
136 if flags.Detector.EnableRPC:
137 from MuonConfig.MuonBytestreamDecodeConfig
import RpcBytestreamDecodeCfg
138 cfg.merge(RpcBytestreamDecodeCfg(flags))
139 itemList.append(f
'RpcPadContainer#{flags.Overlay.BkgPrefix}RPCPAD')
141 if flags.Detector.EnableTGC:
142 from MuonConfig.MuonBytestreamDecodeConfig
import TgcBytestreamDecodeCfg
143 cfg.merge(TgcBytestreamDecodeCfg(flags))
144 itemList.append(f
'TgcRdoContainer#{flags.Overlay.BkgPrefix}TGCRDO')
146 if flags.Detector.EnablesTGC:
147 from MuonConfig.MuonBytestreamDecodeConfig
import sTgcBytestreamDecodeCfg
148 cfg.merge(sTgcBytestreamDecodeCfg(flags))
149 itemList.append(f
'Muon::STGC_RawDataContainer#{flags.Overlay.BkgPrefix}sTGCRDO')
151 if flags.Detector.EnableMM:
152 from MuonConfig.MuonBytestreamDecodeConfig
import MmBytestreamDecodeCfg
153 cfg.merge(MmBytestreamDecodeCfg(flags))
154 itemList.append(f
'Muon::MM_RawDataContainer#{flags.Overlay.BkgPrefix}MMRDO')
156 if flags.Reco.EnableTracking:
157 from InDetConfig.TrackRecoConfig
import InDetTrackRecoCfg
158 cfg.merge(InDetTrackRecoCfg(flags))
159 itemList.append(f
'xAOD::VertexContainer#{flags.Overlay.BkgPrefix}PrimaryVertices')
160 itemList.append(f
'xAOD::VertexAuxContainer#{flags.Overlay.BkgPrefix}PrimaryVerticesAux.x.y.z')
162 from OverlayUtilities.OverlayUtilitiesConfig
import OverlayVertexSkimmingAlgCfg
163 cfg.merge(OverlayVertexSkimmingAlgCfg(flags))
164 acceptAlgs.append(
'OverlayVertexSkimmingAlg')
166 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
167 cfg.merge(OutputStreamCfg(flags,
'RDO', itemList, AcceptAlgs=acceptAlgs))
169 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
170 cfg.merge(SetupMetaDataForStreamCfg(flags,
'RDO', AcceptAlgs=acceptAlgs,
171 createMetadata=[MetadataCategory.IOVMetaData,
172 MetadataCategory.CutFlowMetaData]))
175 processPostInclude(runArgs, flags, cfg)
178 processPostExec(runArgs, flags, cfg)
181 if flags.Input.DataYear > 0:
182 from EventInfoMgt.TagInfoMgrConfig
import TagInfoMgrCfg
183 cfg.merge(TagInfoMgrCfg(flags, tagValuePairs={
184 "project_name": flags.Input.ProjectName,
185 "data_year": str(flags.Input.DataYear)
189 from PyUtils.AMITagHelperConfig
import AMITagCfg
190 cfg.merge(AMITagCfg(flags, runArgs))
194 sys.exit(
not sc.isSuccess())