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
34 flags.Overlay.DataOverlay =
True
37 if hasattr(runArgs,
'inputBSFile'):
38 flags.Input.Files = runArgs.inputBSFile
40 raise ValueError(
'No input BS file defined')
42 if hasattr(runArgs,
'outputRDO_BKGFile'):
43 flags.Output.RDOFileName = runArgs.outputRDO_BKGFile
45 raise RuntimeError(
'No output RDO file defined')
48 if hasattr(runArgs,
'detectors'):
49 detectors = runArgs.detectors
54 from AthenaConfiguration.DetectorConfigFlags
import setupDetectorFlags
55 setupDetectorFlags(flags, detectors, use_metadata=
True, toggle_geometry=
True)
58 from PerfMonComps.PerfMonConfigHelpers
import setPerfmonFlagsFromRunArgs
59 setPerfmonFlagsFromRunArgs(flags, runArgs)
62 processPreInclude(runArgs, flags)
65 processPreExec(runArgs, flags)
76 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
77 cfg = MainServicesCfg(flags)
79 from EventBookkeeperTools.EventBookkeeperToolsConfig
import CutFlowSvcCfg
80 cfg.merge(CutFlowSvcCfg(flags))
82 from ByteStreamCnvSvc.ByteStreamConfig
import ByteStreamReadCfg
83 cfg.merge(ByteStreamReadCfg(flags))
85 from LumiBlockComps.LumiBlockMuWriterConfig
import LumiBlockMuWriterCfg
86 cfg.merge(LumiBlockMuWriterCfg(flags))
88 if flags.Detector.EnableBCM:
89 from InDetOverlay.BCMOverlayConfig
import BCMRawDataProviderAlgCfg
90 cfg.merge(BCMRawDataProviderAlgCfg(flags))
91 itemList.append(f
'BCM_RDO_Container#{flags.Overlay.BkgPrefix}BCM_RDOs')
93 if flags.Detector.EnablePixel:
94 from PixelRawDataByteStreamCnv.PixelRawDataByteStreamCnvConfig
import PixelRawDataProviderAlgCfg
95 cfg.merge(PixelRawDataProviderAlgCfg(flags))
96 itemList.append(f
'PixelRDO_Container#{flags.Overlay.BkgPrefix}PixelRDOs')
97 itemList.append(
'IDCInDetBSErrContainer#PixelByteStreamErrs')
99 if flags.Detector.EnableSCT:
100 from SCT_RawDataByteStreamCnv.SCT_RawDataByteStreamCnvConfig
import SCTRawDataProviderCfg, SCTEventFlagWriterCfg
101 cfg.merge(SCTRawDataProviderCfg(flags))
102 cfg.merge(SCTEventFlagWriterCfg(flags))
103 itemList.append(f
'SCT_RDO_Container#{flags.Overlay.BkgPrefix}SCT_RDOs')
104 itemList.append(
'IDCInDetBSErrContainer#SCT_ByteStreamErrs')
106 if flags.Detector.EnableTRT:
107 from TRT_RawDataByteStreamCnv.TRT_RawDataByteStreamCnvConfig
import TRTRawDataProviderCfg
108 cfg.merge(TRTRawDataProviderCfg(flags))
109 itemList.append(f
'TRT_RDO_Container#{flags.Overlay.BkgPrefix}TRT_RDOs')
110 itemList.append(
'TRT_BSErrContainer#TRT_ByteStreamErrs')
112 if flags.Detector.EnableLAr:
113 from LArByteStream.LArRawDataReadingConfig
import LArRawDataReadingCfg
114 cfg.merge(LArRawDataReadingCfg(flags))
115 itemList.append(f
'LArDigitContainer#{flags.Overlay.BkgPrefix}LArDigitContainer_data')
116 itemList.append(
'LArFebHeaderContainer#LArFebHeader')
118 if flags.Detector.EnableTile:
119 from TileByteStream.TileByteStreamConfig
import TileRawDataReadingCfg
120 cfg.merge(TileRawDataReadingCfg(flags, readMuRcv=
False))
121 itemList.append(f
'TileRawChannelContainer#{flags.Overlay.BkgPrefix}TileRawChannelCnt')
122 itemList.append(f
'TileDigitsContainer#{flags.Overlay.BkgPrefix}TileDigitsCnt')
124 if flags.Detector.EnableCSC:
125 from MuonConfig.MuonBytestreamDecodeConfig
import CscBytestreamDecodeCfg
126 cfg.merge(CscBytestreamDecodeCfg(flags))
127 itemList.append(f
'CscRawDataContainer#{flags.Overlay.BkgPrefix}CSCRDO')
129 if flags.Detector.EnableMDT:
130 from MuonConfig.MuonBytestreamDecodeConfig
import MdtBytestreamDecodeCfg
131 cfg.merge(MdtBytestreamDecodeCfg(flags))
132 itemList.append(f
'MdtCsmContainer#{flags.Overlay.BkgPrefix}MDTCSM')
134 if flags.Detector.EnableRPC:
135 from MuonConfig.MuonBytestreamDecodeConfig
import RpcBytestreamDecodeCfg
136 cfg.merge(RpcBytestreamDecodeCfg(flags))
137 itemList.append(f
'RpcPadContainer#{flags.Overlay.BkgPrefix}RPCPAD')
139 if flags.Detector.EnableTGC:
140 from MuonConfig.MuonBytestreamDecodeConfig
import TgcBytestreamDecodeCfg
141 cfg.merge(TgcBytestreamDecodeCfg(flags))
142 itemList.append(f
'TgcRdoContainer#{flags.Overlay.BkgPrefix}TGCRDO')
144 if flags.Detector.EnablesTGC:
145 from MuonConfig.MuonBytestreamDecodeConfig
import sTgcBytestreamDecodeCfg
146 cfg.merge(sTgcBytestreamDecodeCfg(flags))
147 itemList.append(f
'Muon::STGC_RawDataContainer#{flags.Overlay.BkgPrefix}sTGCRDO')
149 if flags.Detector.EnableMM:
150 from MuonConfig.MuonBytestreamDecodeConfig
import MmBytestreamDecodeCfg
151 cfg.merge(MmBytestreamDecodeCfg(flags))
152 itemList.append(f
'Muon::MM_RawDataContainer#{flags.Overlay.BkgPrefix}MMRDO')
154 if flags.Detector.EnableCalo:
155 from CaloRec.CaloRecoConfig
import CaloRecoCfg
156 cfg.merge(CaloRecoCfg(flags))
158 if flags.Reco.EnableTracking:
159 from InDetConfig.TrackRecoConfig
import InDetTrackRecoCfg
160 cfg.merge(InDetTrackRecoCfg(flags))
161 itemList.append(f
'xAOD::VertexContainer#{flags.Overlay.BkgPrefix}PrimaryVertices')
162 itemList.append(f
'xAOD::VertexAuxContainer#{flags.Overlay.BkgPrefix}PrimaryVerticesAux.x.y.z')
164 from OverlayUtilities.OverlayUtilitiesConfig
import OverlayVertexSkimmingAlgCfg
165 cfg.merge(OverlayVertexSkimmingAlgCfg(flags))
166 acceptAlgs.append(
'OverlayVertexSkimmingAlg')
168 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
169 cfg.merge(OutputStreamCfg(flags,
'RDO', itemList, AcceptAlgs=acceptAlgs))
171 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
172 cfg.merge(SetupMetaDataForStreamCfg(flags,
'RDO', AcceptAlgs=acceptAlgs,
173 createMetadata=[MetadataCategory.IOVMetaData,
174 MetadataCategory.CutFlowMetaData]))
177 processPostInclude(runArgs, flags, cfg)
180 processPostExec(runArgs, flags, cfg)
183 if flags.Input.DataYear > 0:
184 from EventInfoMgt.TagInfoMgrConfig
import TagInfoMgrCfg
185 cfg.merge(TagInfoMgrCfg(flags, tagValuePairs={
186 "project_name": flags.Input.ProjectName,
187 "data_year":
str(flags.Input.DataYear)
191 from PyUtils.AMITagHelperConfig
import AMITagCfg
192 cfg.merge(AMITagCfg(flags, runArgs))
196 sys.exit(
not sc.isSuccess())