12 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
13 from AthenaConfiguration.ComponentFactory
import CompFactory
18 from argparse
import ArgumentParser
19 parser = ArgumentParser()
20 parser.add_argument(
"--inputEVNTFile",
21 default=
"/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/MuonRecRTT/EVGEN_ParticleGun_FourMuon_Pt10to500.root",
23 help=
"The input EVNT file to use")
24 parser.add_argument(
"--outputHITSFile",
25 default=
"myHITS.pool.root",
27 help=
"The output HITS filename")
28 parser.add_argument(
"--geometryTag",
29 default=
"ATLAS-R3S-2021-03-02-00",
31 help=
"The geometry tag to use")
32 parser.add_argument(
"--globalTag",
33 default=
"OFLCOND-MC21-SDR-RUN3-09",
35 help=
"The global tag to use")
36 parser.add_argument(
"--myPDG",
39 help=
"PDG for particle gun sim. 998 = Charged Geantino 999 = neutral Geantino, 13 = Muon")
40 parser.add_argument(
"--maxEvents",
43 help=
"Maximum number of events to run on.")
44 parser.add_argument(
"--skipEvents", help=
"Number of events to skip", type = int , default =0)
51 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
53 acc.getService(
"MessageSvc").debugLimit = 1000000
55 from AthenaPoolCnvSvc.PoolReadConfig
import PoolReadCfg
58 from BeamSpotConditions.BeamSpotConditionsConfig
import BeamSpotCondAlgCfg
61 from BeamEffects.BeamEffectsAlgConfig
import BeamEffectsAlgCfg
64 from BeamPipeGeoModel.BeamPipeGMConfig
import BeamPipeGeometryCfg
67 from TrackingGeometryCondAlg.AtlasTrackingGeometryCondAlgConfig
import TrackingGeometryCondAlgCfg
70 from TrkConfig.AtlasTrackingGeometrySvcConfig
import TrackingGeometrySvcCfg
80 LayerMaterialInspector = CompFactory.Trk.LayerMaterialInspector(
"LayerMaterialInspector",
82 acc.addPublicTool(LayerMaterialInspector)
85 TrackingVolumeDisplayer = CompFactory.Trk.TrackingVolumeDisplayer(
"TrackingVolumeDisplayer",
86 TrackingVolumeOutputFile=
'TrackingVolumes.C',
87 LayerOutputFile=
'Layers.C',
88 SurfaceOutputFile=
'Surfaces.C')
89 acc.addPublicTool(TrackingVolumeDisplayer)
93 TestPropagator = CompFactory.Trk.RungeKuttaPropagator(
"TestPropagator")
94 acc.addPublicTool(TestPropagator)
95 TestPropagators += [TestPropagator]
97 from TrkConfig.TrkExSTEP_PropagatorConfig
import AtlasSTEP_PropagatorCfg
98 TestSTEP_Propagator = acc.popToolsAndMerge(
AtlasSTEP_PropagatorCfg(flags, name=
"TestSTEP_Propagator", DetailedEloss=
True))
99 TestPropagators += [TestSTEP_Propagator]
101 TestSTEP_Propagator.Straggling =
False
103 if args.myPDG == 998 :
104 TestSTEP_Propagator.MultipleScattering =
False
105 TestSTEP_Propagator.EnergyLoss =
False
110 TestMaterialEffectsUpdator = CompFactory.Trk.MaterialEffectsUpdator(
"TestMaterialEffectsUpdator")
111 acc.addPublicTool(TestMaterialEffectsUpdator)
112 if args.myPDG == 998 :
113 TestMaterialEffectsUpdator.EnergyLoss =
False
114 TestMaterialEffectsUpdator.MultipleScattering =
False
116 TestUpdators += [TestMaterialEffectsUpdator]
118 TestMaterialEffectsUpdatorLandau = CompFactory.Trk.MaterialEffectsUpdator(
"TestMaterialEffectsUpdatorLandau",
120 acc.addPublicTool(TestMaterialEffectsUpdatorLandau)
122 if args.myPDG == 998 :
123 TestMaterialEffectsUpdatorLandau.EnergyLoss =
False
124 TestMaterialEffectsUpdatorLandau.MultipleScattering =
False
129 TestNavigator = CompFactory.Trk.Navigator(
"TestNavigator",
130 TrackingGeometrySvc=
"Trk::TrackingGeometrySvc/AtlasTrackingGeometrySvc")
131 acc.addPublicTool(TestNavigator)
135 TestSubPropagators = []
140 TestSubPropagators += [ TestPropagator.name ]
141 TestSubUpdators += [ TestMaterialEffectsUpdator.name ]
144 TestSubPropagators += [ TestPropagator.name ]
145 TestSubUpdators += [ TestMaterialEffectsUpdator.name ]
148 TestSubPropagators += [ TestPropagator.name ]
149 TestSubUpdators += [ TestMaterialEffectsUpdator.name ]
152 TestSubPropagators += [ TestSTEP_Propagator.name ]
154 TestSubUpdators += [ TestMaterialEffectsUpdator.name ]
157 TestSubPropagators += [ TestSTEP_Propagator.name ]
158 TestSubUpdators += [ TestMaterialEffectsUpdator.name ]
161 TestSubPropagators += [ TestPropagator.name ]
162 TestSubUpdators += [ TestMaterialEffectsUpdator.name ]
165 AtlasEnergyLossUpdator = CompFactory.Trk.EnergyLossUpdator(
"AtlasEnergyLossUpdator",
167 acc.addPublicTool(AtlasEnergyLossUpdator)
176 TestExtrapolator = CompFactory.Trk.Extrapolator(
"TestExtrapolator",
177 Navigator = TestNavigator,
178 MaterialEffectsUpdators = TestUpdators,
179 STEP_Propagator = TestSTEP_Propagator.name,
180 Propagators = TestPropagators,
181 SubPropagators = TestSubPropagators,
182 SubMEUpdators = TestSubUpdators,
183 EnergyLossUpdater = AtlasEnergyLossUpdator
185 acc.addPublicTool(TestExtrapolator, primary=
True)
197 result.addPublicTool(extrapolator)
200 followingHelper = CompFactory.Trk.GeantFollowerMSHelper(
"GeantFollowerMSHelper",
201 Extrapolator= extrapolator,
202 ExtrapolateDirectly=
False,
203 ExtrapolateIncrementally=
False,
207 result.addPublicTool(followingHelper, primary =
True)
210 from G4AtlasServices.G4AtlasUserActionConfig
import getDefaultActions
211 kwargs.setdefault(
"UserActionTools", result.popToolsAndMerge(
getDefaultActions(flags)))
212 result.addService(CompFactory.G4UA.UserActionSvc(name, **kwargs))
216 if __name__ ==
"__main__":
217 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
222 flags.Input.Files = [args.inputEVNTFile]
223 flags.Output.HITSFileName = args.outputHITSFile
224 flags.GeoModel.AtlasVersion = args.geometryTag
225 flags.IOVDb.GlobalTag = args.globalTag
226 flags.Input.isMC =
True
227 flags.GeoModel.Align.Dynamic =
False
228 flags.Concurrency.NumThreads =1
229 flags.Concurrency.NumConcurrentEvents = 1
230 flags.Exec.SkipEvents = args.skipEvents
231 from AthenaConfiguration.Enums
import ProductionStep
232 flags.Common.ProductionStep = ProductionStep.FastChain
233 flags.LAr.doAlign =
True
234 flags.Sim.TightMuonStepping =
True
237 from AthenaConfiguration.DetectorConfigFlags
import setupDetectorsFromList
238 detectors = [
"Muon",
"ID",
"Bpipe",
"Calo"]
242 flags.dump(evaluate =
True)
250 from TrkG4UserActions.TrkG4UserActionsConfig
import GeantFollowerMSToolCfg
254 from G4AtlasAlg.G4AtlasAlgConfig
import G4AtlasAlgCfg
256 ExtraInputs={(
'Trk::TrackingGeometry' ,
'ConditionStore+AtlasTrackingGeometry'),
257 (
'AtlasFieldCacheCondObj' ,
'ConditionStore+fieldCondObj' )}))
260 acc.printConfig(withDetails=
True)
261 if not acc.run(maxEvents=args.maxEvents).isSuccess():