36 if not flags.Input.Files:
38 from AthenaConfiguration.MainServicesConfig
import MainEvgenServicesCfg
39 cfg = MainEvgenServicesCfg(flags)
41 from xAODEventInfoCnv.xAODEventInfoCnvConfig
import EventInfoCnvAlgCfg
42 cfg.merge(EventInfoCnvAlgCfg(flags, name=
"xAODMaker::EventInfoCnvAlg", disableBeamSpot =
True))
47 cfg.getService(
"EventSelector").FirstLB = flags.Input.LumiBlockNumbers[0]
48 cfg.getService(
"EventSelector").OverrideRunNumber =
True
49 from AthenaKernel.EventIdOverrideConfig
import EvtIdModifierSvcCfg
50 cfg.merge(EvtIdModifierSvcCfg(flags))
51 if flags.Beam.Type
is BeamType.Cosmics:
53 from CosmicGenerator.CosmicGeneratorConfig
import CosmicGeneratorCfg
54 cfg.merge(CosmicGeneratorCfg(flags))
57 fragment = flags.Sim.GenerationConfiguration
58 if fragment
and fragment !=
'NONE':
59 executeFromFragment(fragment, flags, cfg)
60 log.info(
"On-the-fly generation using ParticleGun!")
62 log.error(
"No input file or on-the-fly generation configuration provided!")
65 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
66 cfg = MainServicesCfg(flags)
67 from AthenaPoolCnvSvc.PoolReadConfig
import PoolReadCfg
68 cfg.merge(PoolReadCfg(flags))
69 if flags.Sim.ReadTR
or flags.Sim.CavernBackground
is CavernBackground.Read:
71 from TrackRecordGenerator.TrackRecordGeneratorConfig
import Input_TrackRecordGeneratorCfg
72 cfg.merge(Input_TrackRecordGeneratorCfg(flags))
73 if flags.Sim.ISF.ReSimulation:
75 if "xAOD::EventInfo#EventInfo" not in flags.Input.TypedCollections:
76 from xAODEventInfoCnv.xAODEventInfoCnvConfig
import EventInfoCnvAlgCfg
77 cfg.merge(EventInfoCnvAlgCfg(flags))
79 from xAODEventInfoCnv.xAODEventInfoCnvConfig
import EventInfoUpdateFromContextAlgCfg
80 cfg.merge(EventInfoUpdateFromContextAlgCfg(flags))
81 from McEventCollectionFilter.McEventCollectionFilterConfig
import TruthResetAlgCfg
82 cfg.merge(TruthResetAlgCfg(flags))
83 cfg.addSequence(CompFactory.AthSequencer(
'SimSequence'), parentName=
'AthAlgSeq')
84 cfg.addSequence(CompFactory.AthSequencer(
'CopyHitSequence'), parentName=
'AthAlgSeq')
88 evSel = cfg.getService(
"EventSelector")
89 evSel.CollectionType =
"RootCollection"
91 if flags.Sim.ISF.ReSimulation:
93 from ISF_Algorithms.ISF_AlgorithmsConfig
import SimEventFilterCfg, InvertedSimEventFilterCfg, RenameHitCollectionsCfg
94 cfg.merge(SimEventFilterCfg(flags, sequenceName=
'SimSequence'))
95 cfg.merge(InvertedSimEventFilterCfg(flags, sequenceName=
'CopyHitSequence'))
96 cfg.merge(RenameHitCollectionsCfg(flags, sequenceName=
'CopyHitSequence'))
100 from BeamEffects.BeamEffectsAlgConfig
import BeamEffectsAlgCfg
101 cfg.merge(BeamEffectsAlgCfg(flags))
102 if flags.Input.Files:
104 if "xAOD::EventInfo#EventInfo" not in flags.Input.TypedCollections:
105 from xAODEventInfoCnv.xAODEventInfoCnvConfig
import EventInfoCnvAlgCfg
106 cfg.merge(EventInfoCnvAlgCfg(flags))
108 from xAODEventInfoCnv.xAODEventInfoCnvConfig
import EventInfoUpdateFromContextAlgCfg
109 cfg.merge(EventInfoUpdateFromContextAlgCfg(flags))
114 if flags.Beam.Type
is BeamType.TestBeam:
115 from TBDetDescrAlg.TBDetDescrAlgConfig
import TBDetDescrLoaderCfg
116 cfg.merge(TBDetDescrLoaderCfg(flags))
120 from ISF_Config.ISF_MainConfig
import ISF_KernelCfg
121 cfg.merge(ISF_KernelCfg(flags))
122 AcceptAlgNames = [
'ISF_Kernel_' + flags.Sim.ISF.Simulator.value]
123 if flags.Sim.ISF.ReSimulation:
124 AcceptAlgNames += [
'RenameHitCollections']
126 if not flags.Sim.UseG4Workers:
127 AcceptAlgNames = [
'G4AtlasAlg']
129 from G4AtlasAlg.G4AtlasAlgConfig
import G4AtlasAlgCfg
130 cfg.merge(G4AtlasAlgCfg(flags))
132 AcceptAlgNames = [
'G4RunAlg']
134 from G4AtlasAlg.G4RunAlgConfig
import G4RunAlgCfg
135 cfg.merge(G4RunAlgCfg(flags))
137 if flags.Sim.LArParameterization
is LArParameterization.FastCaloSim:
138 cfg.getEventAlgo(
"ISF_CollectionMerger").InputLArEMBHits.data.sort()
139 cfg.getEventAlgo(
"ISF_CollectionMerger").InputLArEMECHits.data.sort()
140 cfg.getEventAlgo(
"ISF_CollectionMerger").InputLArFCALHits.data.sort()
141 cfg.getEventAlgo(
"ISF_CollectionMerger").InputLArHECHits.data.sort()
142 cfg.getEventAlgo(
"ISF_CollectionMerger").InputTileHits.data.sort()
143 cfg.getEventAlgo(
"ISF_CollectionMerger").InputMBTSHits.data.sort()
145 from SimulationConfig.SimEnums
import CalibrationRun
146 if flags.Sim.CalibrationRun
in [CalibrationRun.LAr, CalibrationRun.LArTile, CalibrationRun.LArTileZDC]:
147 from LArG4SD.LArG4SDToolConfig
import DeadMaterialCalibrationHitMergerCfg
148 cfg.merge(DeadMaterialCalibrationHitMergerCfg(flags))
150 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg, outputStreamName
151 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
153 if flags.Output.HITSFileName:
154 from SimuJobTransforms.SimOutputConfig
import getStreamHITS_ItemList
155 cfg.merge( OutputStreamCfg(flags,
"HITS", ItemList=getStreamHITS_ItemList(flags), disableEventTag=
False, AcceptAlgs=AcceptAlgNames) )
156 cfg.merge(SetupMetaDataForStreamCfg(flags,
"HITS", AcceptAlgs=AcceptAlgNames, createMetadata=[MetadataCategory.IOVMetaData]))
157 if flags.Sim.ISF.ReSimulation:
158 cfg.getEventAlgo(outputStreamName(
"HITS")).TakeItemsFromInput=
False
160 if flags.Output.EVNT_TRFileName:
161 from SimuJobTransforms.SimOutputConfig
import getStreamEVNT_TR_ItemList
162 cfg.merge( OutputStreamCfg(flags,
"EVNT_TR", ItemList=getStreamEVNT_TR_ItemList(flags), disableEventTag=
True, AcceptAlgs=AcceptAlgNames) )
163 cfg.merge(SetupMetaDataForStreamCfg(flags,
"EVNT_TR", AcceptAlgs=AcceptAlgNames, createMetadata=[MetadataCategory.IOVMetaData]))