2from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
3from AthenaConfiguration.ComponentFactory
import CompFactory
4from AthenaConfiguration.Enums
import BeamType, LHCPeriod
5from AthenaConfiguration.AccumulatorCache
import AccumulatorCache
7from AthenaCommon
import Logging
9from SimulationConfig.SimEnums
import BeamPipeSimMode, CalibrationRun, CavernBackground, LArParameterization
12from G4AtlasTools.G4PhysicsRegionConfig
import SX1PhysicsRegionToolCfg, BedrockPhysicsRegionToolCfg, CavernShaftsConcretePhysicsRegionToolCfg, PixelPhysicsRegionToolCfg, SCTPhysicsRegionToolCfg, TRTPhysicsRegionToolCfg, TRT_ArPhysicsRegionToolCfg,ITkPixelPhysicsRegionToolCfg,ITkStripPhysicsRegionToolCfg,HGTDPhysicsRegionToolCfg,BeampipeFwdCutPhysicsRegionToolCfg, FWDBeamLinePhysicsRegionToolCfg, CALOPhysicsRegionToolCfg, EMBPhysicsRegionToolCfg, EMECPhysicsRegionToolCfg, HECPhysicsRegionToolCfg, FCALPhysicsRegionToolCfg, FCAL2ParaPhysicsRegionToolCfg, EMECParaPhysicsRegionToolCfg, FCALParaPhysicsRegionToolCfg, PreSampLArPhysicsRegionToolCfg, DeadMaterialPhysicsRegionToolCfg
13from G4AtlasTools.G4PhysicsRegionConfig
import DriftWallPhysicsRegionToolCfg, DriftWall1PhysicsRegionToolCfg, DriftWall2PhysicsRegionToolCfg, MuonSystemFastPhysicsRegionToolCfg
16from G4AtlasTools.G4FieldConfig
import ATLASFieldManagerToolCfg, TightMuonsATLASFieldManagerToolCfg, BeamPipeFieldManagerToolCfg, InDetFieldManagerToolCfg, ITkFieldManagerToolCfg, MuonsOnlyInCaloFieldManagerToolCfg, MuonFieldManagerToolCfg, Q1FwdFieldManagerToolCfg, Q2FwdFieldManagerToolCfg, Q3FwdFieldManagerToolCfg, D1FwdFieldManagerToolCfg, D2FwdFieldManagerToolCfg, Q4FwdFieldManagerToolCfg, Q5FwdFieldManagerToolCfg, Q6FwdFieldManagerToolCfg, Q7FwdFieldManagerToolCfg, Q1HKickFwdFieldManagerToolCfg, Q1VKickFwdFieldManagerToolCfg, Q2HKickFwdFieldManagerToolCfg, Q2VKickFwdFieldManagerToolCfg, Q3HKickFwdFieldManagerToolCfg, Q3VKickFwdFieldManagerToolCfg, Q4VKickAFwdFieldManagerToolCfg, Q4HKickFwdFieldManagerToolCfg, Q4VKickBFwdFieldManagerToolCfg, Q5HKickFwdFieldManagerToolCfg, Q6VKickFwdFieldManagerToolCfg, FwdRegionFieldManagerToolCfg
18from G4AtlasTools.G4AtlasToolsConfig
import SensitiveDetectorMasterToolCfg, G4CaloTransportToolCfg, FastSimulationMasterToolCfg
20CylindricalEnvelope, PolyconicalEnvelope, MaterialDescriptionTool,VoxelDensityTool,G4AtlasDetectorConstructionTool,BoxEnvelope=CompFactory.getComps(
"CylindricalEnvelope",
"PolyconicalEnvelope",
"MaterialDescriptionTool",
"VoxelDensityTool",
"G4AtlasDetectorConstructionTool",
"BoxEnvelope")
29 result = ComponentAccumulator()
30 kwargs.setdefault(
"ActivateLVNotifier",
True)
31 kwargs.setdefault(
"ActivatePVNotifier",
False)
32 result.addService(CompFactory.G4GeometryNotifierSvc(name, **kwargs), primary =
True)
37 result = ComponentAccumulator()
38 from Geo2G4.Geo2G4Config
import Geo2G4SvcCfg
39 kwargs.setdefault(
"Geo2G4Svc", result.getPrimaryAndMerge(Geo2G4SvcCfg(flags)))
42 result.setPrivateTools(CompFactory.GeoDetectorTool(name, **kwargs))
48 from BeamPipeGeoModel.BeamPipeGMConfig
import BeamPipeGeometryCfg
49 result = BeamPipeGeometryCfg(flags)
50 kwargs.setdefault(
"DetectorName",
"BeamPipe")
51 result.setPrivateTools(result.popToolsAndMerge(
GeoDetectorToolCfg(flags, name, **kwargs)))
57 from PixelGeoModel.PixelGeoModelConfig
import PixelSimulationGeometryCfg
58 result = PixelSimulationGeometryCfg(flags)
59 kwargs.setdefault(
"DetectorName",
"Pixel")
60 result.setPrivateTools(result.popToolsAndMerge(
GeoDetectorToolCfg(flags, name, **kwargs)))
66 from SCT_GeoModel.SCT_GeoModelConfig
import SCT_SimulationGeometryCfg
67 result = SCT_SimulationGeometryCfg(flags)
68 kwargs.setdefault(
"DetectorName",
"SCT")
69 result.setPrivateTools(result.popToolsAndMerge(
GeoDetectorToolCfg(flags, name, **kwargs)))
75 from PLRGeoModelXml.PLR_GeoModelConfig
import PLR_GeometryCfg
76 result = PLR_GeometryCfg(flags)
77 kwargs.setdefault(
"DetectorName",
"PLR")
78 result.setPrivateTools(result.popToolsAndMerge(
GeoDetectorToolCfg(flags, name, **kwargs)))
84 from BCMPrimeGeoModelXml.BCMPrimeGeoModelConfig
import BCMPrimeGeometryCfg
85 result = BCMPrimeGeometryCfg(flags)
86 kwargs.setdefault(
"DetectorName",
"BCMPrime")
87 result.setPrivateTools(result.popToolsAndMerge(
GeoDetectorToolCfg(flags, name, **kwargs)))
93 from PixelGeoModelXml.ITkPixelGeoModelConfig
import ITkPixelSimulationGeometryCfg
94 result = ITkPixelSimulationGeometryCfg(flags)
95 kwargs.setdefault(
"DetectorName",
"ITkPixel")
96 result.setPrivateTools(result.popToolsAndMerge(
GeoDetectorToolCfg(flags, name, **kwargs)))
102 from StripGeoModelXml.ITkStripGeoModelConfig
import ITkStripSimulationGeometryCfg
103 result = ITkStripSimulationGeometryCfg(flags)
104 kwargs.setdefault(
"DetectorName",
"ITkStrip")
105 result.setPrivateTools(result.popToolsAndMerge(
GeoDetectorToolCfg(flags, name, **kwargs)))
111 if flags.HGTD.Geometry.useGeoModelXml:
112 from HGTD_GeoModelXml.HGTD_GeoModelConfig
import HGTD_SimulationGeometryCfg
114 from HGTD_GeoModel.HGTD_GeoModelConfig
import HGTD_SimulationGeometryCfg
116 result = HGTD_SimulationGeometryCfg(flags)
117 kwargs.setdefault(
"DetectorName",
"HGTD")
118 result.setPrivateTools(result.popToolsAndMerge(
GeoDetectorToolCfg(flags, name, **kwargs)))
124 from HGTD_GeoModelXml.HGTDServiceGeoModelConfig
import HGTDServiceGeoModelCfg
125 result = HGTDServiceGeoModelCfg(flags)
126 kwargs.setdefault(
"DetectorName",
"HGTDServices")
127 result.setPrivateTools(result.popToolsAndMerge(
GeoDetectorToolCfg(flags, name, **kwargs)))
133 from TRT_GeoModel.TRT_GeoModelConfig
import TRT_SimulationGeometryCfg
134 result = TRT_SimulationGeometryCfg(flags)
135 kwargs.setdefault(
"DetectorName",
"TRT")
136 result.setPrivateTools(result.popToolsAndMerge(
GeoDetectorToolCfg(flags, name, **kwargs)))
142 from InDetServMatGeoModel.InDetServMatGeoModelConfig
import InDetServiceMaterialCfg
143 result = InDetServiceMaterialCfg(flags)
144 kwargs.setdefault(
"DetectorName",
"InDetServMat")
145 result.setPrivateTools(result.popToolsAndMerge(
GeoDetectorToolCfg(flags, name, **kwargs)))
151 from LArGeoAlgsNV.LArGMConfig
import LArGMCfg
152 result = LArGMCfg(flags)
153 kwargs.setdefault(
"DetectorName",
"LArMgr")
154 result.setPrivateTools(result.popToolsAndMerge(
GeoDetectorToolCfg(flags, name, **kwargs)))
160 from TileGeoModel.TileGMConfig
import TileGMCfg
161 result = TileGMCfg(flags)
162 kwargs.setdefault(
"DetectorName",
"Tile")
163 result.setPrivateTools(result.popToolsAndMerge(
GeoDetectorToolCfg(flags, name, **kwargs)))
169 from AtlasGeoModel.ForDetGeoModelConfig
import ForDetGeometryCfg
170 result=ForDetGeometryCfg(flags)
171 kwargs.setdefault(
"DetectorName",
"LUCID")
172 result.setPrivateTools(result.popToolsAndMerge(
GeoDetectorToolCfg(flags, name, **kwargs)))
178 from AtlasGeoModel.ForDetGeoModelConfig
import ForDetGeometryCfg
179 result = ForDetGeometryCfg(flags)
180 kwargs.setdefault(
"DetectorName",
"ALFA")
181 result.setPrivateTools(result.popToolsAndMerge(
GeoDetectorToolCfg(flags, name, **kwargs)))
187 from AtlasGeoModel.ForDetGeoModelConfig
import ForDetGeometryCfg
188 result = ForDetGeometryCfg(flags)
189 kwargs.setdefault(
"DetectorName",
"ZDC")
190 result.setPrivateTools(result.popToolsAndMerge(
GeoDetectorToolCfg(flags, name, **kwargs)))
196 from AtlasGeoModel.ForDetGeoModelConfig
import ForDetGeometryCfg
197 result = ForDetGeometryCfg(flags)
198 kwargs.setdefault(
"DetectorName",
"AFP")
199 kwargs.setdefault(
"GeoDetectorName",
"AFP_GeoModel")
200 result.setPrivateTools(result.popToolsAndMerge(
GeoDetectorToolCfg(flags, name, **kwargs)))
206 from AtlasGeoModel.ForDetGeoModelConfig
import ForDetGeometryCfg
207 result = ForDetGeometryCfg(flags)
208 kwargs.setdefault(
"DetectorName",
"FwdRegion")
209 kwargs.setdefault(
"GeoDetectorName",
"ForwardRegionGeoModel")
210 result.setPrivateTools(result.popToolsAndMerge(
GeoDetectorToolCfg(flags, name, **kwargs)))
216 result = ComponentAccumulator()
217 if not flags.Muon.usePhaseIIGeoSetup:
218 from MuonConfig.MuonGeometryConfig
import MuonGeoModelCfg
219 result.merge(MuonGeoModelCfg(flags))
220 kwargs.setdefault(
"DetectorName",
"Muon")
222 kwargs.setdefault(
"DetectorName",
"MuonR4")
223 result.setPrivateTools(result.popToolsAndMerge(
GeoDetectorToolCfg(flags, name, **kwargs)))
228 result = ComponentAccumulator()
230 kwargs.setdefault(
"DetectorName",
"ITK")
231 kwargs.setdefault(
"InnerRadius", 28.8*mm)
232 kwargs.setdefault(
"OuterRadius", 1.148*m)
233 if flags.GeoModel.Run >= LHCPeriod.Run4:
235 kwargs.setdefault(
"dZ", 354.5*cm)
237 kwargs.setdefault(
"dZ", 347.5*cm)
240 if flags.Detector.GeometryITkPixel:
242 SubDetectorList += [toolITkPixel]
243 if flags.Detector.GeometryITkStrip:
245 SubDetectorList += [toolITkStrip]
246 if flags.Detector.GeometryPLR:
248 SubDetectorList += [toolPLR]
249 if flags.Detector.GeometryBCMPrime:
251 SubDetectorList += [toolBCMPrime]
253 if flags.Detector.GeometryHGTD:
255 SubDetectorList += [toolHGTD]
257 kwargs.setdefault(
"SubDetectors", SubDetectorList)
263 result = ComponentAccumulator()
264 kwargs.setdefault(
"DetectorName",
"IDET")
266 if flags.GeoModel.Run
in [LHCPeriod.Run2, LHCPeriod.Run3]:
267 innerRadius = 28.9*mm
268 kwargs.setdefault(
"InnerRadius", innerRadius)
269 kwargs.setdefault(
"OuterRadius", 1.148*m)
270 kwargs.setdefault(
"dZ", 347.5*cm)
273 if flags.Detector.GeometryPixel:
275 SubDetectorList += [toolPixel]
276 if flags.Detector.GeometrySCT:
278 SubDetectorList += [toolSCT]
279 if flags.Detector.GeometryTRT:
281 SubDetectorList += [toolTRT]
284 SubDetectorList += [toolIDetServices]
285 kwargs.setdefault(
"SubDetectors", SubDetectorList)
291 result = ComponentAccumulator()
293 kwargs.setdefault(
"DetectorName",
"CALO")
294 if flags.GeoModel.Run >= LHCPeriod.Run4:
296 kwargs.setdefault(
"NSurfaces", 22)
297 kwargs.setdefault(
"InnerRadii", [41.,41.,41.,41.,41.,41.,64.,64.,120.,120.,1148.,1148.,120.,120.,64.,64.,41.,41.,41.,41.,41.,41.])
298 kwargs.setdefault(
"OuterRadii", [415.,415.,3795.,3795.,4251.,4251.,4251.,4251.,4251.,4251.,4251.,4251.,4251.,4251.,4251.,4251.,4251.,4251.,3795.,3795.,415.,415.])
299 kwargs.setdefault(
"ZSurfaces", [-6781.,-6747.,-6747.,-6530.,-6530.,-4587.,-4587.,-4472.,-4472.,-3545.,-3545.,3545.,3545.,4472.,4472.,4587.,4587.,6530.,6530.,6747.,6747.,6781.])
301 kwargs.setdefault(
"NSurfaces", 18)
302 kwargs.setdefault(
"InnerRadii", [41.,41.,41.,41.,41.,41.,120.,120.,1148.,1148.,120.,120.,41.,41.,41.,41.,41.,41.])
303 kwargs.setdefault(
"OuterRadii", [415.,415.,3795.,3795.,4251.,4251.,4251.,4251.,4251.,4251.,4251.,4251.,4251.,4251.,3795.,3795.,415.,415.])
304 kwargs.setdefault(
"ZSurfaces", [-6781.,-6747.,-6747.,-6530.,-6530.,-4587.,-4587.,-3475.,-3475.,3475.,3475.,4587.,4587.,6530.,6530.,6747.,6747.,6781.])
306 if flags.Detector.GeometryLAr:
308 SubDetectorList += [ toolLArMgr ]
309 if flags.Detector.GeometryTile:
311 SubDetectorList += [ toolTile ]
312 kwargs.setdefault(
"SubDetectors", SubDetectorList)
318 result = ComponentAccumulator()
320 kwargs.setdefault(
"DetectorName",
"ForDetEnvelope")
323 if flags.Detector.GeometryFwdRegion:
325 SubDetectorList += [ toolFwdRegion ]
330 if flags.Detector.GeometryZDC:
332 SubDetectorList += [ toolZDC ]
333 if flags.Detector.GeometryALFA:
335 SubDetectorList += [ toolALFA ]
336 if flags.Detector.GeometryAFP:
338 SubDetectorList += [ toolAFP ]
339 kwargs.setdefault(
"SubDetectors", SubDetectorList)
341 result.setPrivateTools(result.popToolsAndMerge(
GeoDetectorToolCfg(flags, name, **kwargs)))
346 result = ComponentAccumulator()
348 kwargs.setdefault(
"DetectorName",
"MUONQ02")
349 kwargs.setdefault(
"NSurfaces", 34)
350 kwargs.setdefault(
"InnerRadii", [1050.,1050.,1050.,1050.,436.7,436.7,279.,279.,70.,70.,420.,420.,3800.,3800.,4255.,4255.,4255.,4255.,4255.,4255.,3800.,3800.,420.,420.,70.,70.,279.,279.,436.7,436.7,1050.,1050.,1050.,1050.])
351 kwargs.setdefault(
"OuterRadii", [1500.,1500.,2750.,2750.,12650.,12650.,13400.,13400.,14200.,14200.,14200.,14200.,14200.,14200.,14200.,14200.,13000.,13000.,14200.,14200.,14200.,14200.,14200.,14200.,14200.,14200.,13400.,13400.,12650.,12650.,2750.,2750.,1500.,1500.])
352 kwargs.setdefault(
"ZSurfaces", [-26046.,-23001.,-23001.,-22030.,-22030.,-18650.,-18650.,-12900.,-12900.,-6783.,-6783.,-6748.,-6748.,-6550.,-6550.,-4000.,-4000.,4000.,4000.,6550.,6550.,6748.,6748.,6783.,6783.,12900.,12900.,18650.,18650.,22030.,22030.,23001.,23001.,26046.])
354 if flags.Detector.GeometryMuon:
356 SubDetectorList += [ toolMuon ]
358 kwargs.setdefault(
"SubDetectors", SubDetectorList)
364 kwargs.setdefault(
"DetectorName",
"TTR_BARREL")
365 kwargs.setdefault(
"NSurfaces", 14)
366 kwargs.setdefault(
"InnerRadii", [70.,70.,12500.,12500.,12500.,12500.,13000.,13000.,12500.,12500.,12500.,12500.,70.,70.])
367 kwargs.setdefault(
"OuterRadii", [12501.,12501.,12501.,12501.,13001.,13001.,13001.,13001.,13001.,13001.,12501.,12501.,12501.,12501.])
368 kwargs.setdefault(
"ZSurfaces", [-22031.,-22030.,-22030.,-12901.,-12901.,-12900.,-12900., 12900.,12900.,12901.,12901.,22030.,22030.,22031.])
370 kwargs.setdefault(
"SubDetectors", SubDetectorList)
375 result = ComponentAccumulator()
378 if flags.Beam.Type
is BeamType.Cosmics
or flags.Sim.CavernBackground
not in [CavernBackground.Off, CavernBackground.Signal]:
379 if flags.Beam.Type
is BeamType.Cosmics
and flags.hasFlag(
"Sim.ReadTR"):
382 if flags.Detector.GeometryMuon:
384 toolMuon = accMuon.popPrivateTools()
385 SubDetectorList += [ toolMuon ]
386 if flags.Detector.GeometryID:
388 SubDetectorList += [ toolIDET ]
389 if flags.Detector.GeometryITk
or flags.Detector.GeometryHGTD:
391 SubDetectorList += [ toolITK ]
392 if flags.Detector.GeometryCalo:
394 SubDetectorList += [ toolCALO ]
395 if flags.Detector.GeometryMuon:
396 result.merge(accMuon)
397 if flags.Detector.GeometryBpipe:
399 SubDetectorList += [ toolBpipe ]
400 if flags.Detector.GeometryLucid:
402 SubDetectorList += [ toolLucid ]
403 if flags.Detector.GeometryFwdRegion
or flags.Detector.GeometryAFP
or flags.Detector.GeometryALFA
or flags.Detector.GeometryZDC:
405 SubDetectorList += [ toolFwdRegion ]
407 result.setPrivateTools(SubDetectorList)
412 result = ComponentAccumulator()
414 kwargs.setdefault(
"DetectorName",
"Atlas")
415 kwargs.setdefault(
"NSurfaces", 18)
417 innerRadii = [0.0] * 18
418 kwargs.setdefault(
"InnerRadii", innerRadii)
424 AtlasForwardOuterR = 2751.
425 AtlasOuterR1 = 14201.
426 AtlasOuterR2 = 14201.
429 if not (flags.Detector.GeometryMuon
or flags.Detector.GeometryCavern):
432 if not flags.Detector.GeometryCalo:
436 outerRadii = [0.0] * 18
437 for i
in (0, 1, 16, 17):
438 outerRadii[i] = 1501.
439 for i
in (2, 3, 14, 15):
440 outerRadii[i] = AtlasForwardOuterR
441 for i
in (4, 5, 12, 13):
442 outerRadii[i] = AtlasOuterR2
443 for i
in range(6, 12):
444 outerRadii[i] = AtlasOuterR1
447 if flags.Sim.WorldRRange:
448 routValue = flags.Sim.WorldRRange
449 if flags.Sim.WorldRRange >
max(AtlasOuterR1, AtlasOuterR2):
450 for i
in range(4, 14):
451 outerRadii[i] = routValue
453 raise RuntimeError(
'getATLASEnvelope: ERROR flags.Sim.WorldRRange must be > %f. Current value %f' % (
max(AtlasOuterR1, AtlasOuterR2), routValue) )
454 kwargs.setdefault(
"OuterRadii", outerRadii)
457 zSurfaces = [-26046., -23001., -23001., -22031., -22031., -12899., -12899., -6741., -6741., 6741., 6741., 12899., 12899., 22031., 22031., 23001., 23001., 26046.]
459 if flags.Detector.GeometryFwdRegion
or flags.Detector.GeometryAFP
or flags.Detector.GeometryALFA
or flags.Detector.GeometryZDC:
460 zSurfaces[0] = -400000.
461 zSurfaces[17] = 400000.
464 if flags.Sim.WorldZRange:
465 if flags.Sim.WorldZRange < 26046.:
466 raise RuntimeError(
'getATLASEnvelope: ERROR flags.Sim.WorldZRange must be > 26046. Current value: %f' % flags.Sim.WorldZRange)
467 zSurfaces[17] = flags.Sim.WorldZRange + 100.
468 zSurfaces[16] = flags.Sim.WorldZRange + 50.
469 zSurfaces[15] = flags.Sim.WorldZRange + 50.
470 zSurfaces[14] = flags.Sim.WorldZRange
471 zSurfaces[13] = flags.Sim.WorldZRange
472 zSurfaces[0] = -flags.Sim.WorldZRange - 100.
473 zSurfaces[1] = -flags.Sim.WorldZRange - 50.
474 zSurfaces[2] = -flags.Sim.WorldZRange - 50.
475 zSurfaces[3] = -flags.Sim.WorldZRange
476 zSurfaces[4] = -flags.Sim.WorldZRange
478 kwargs.setdefault(
"ZSurfaces", zSurfaces)
480 kwargs.setdefault(
"SubDetectors", SubDetectorList)
487 result = ComponentAccumulator()
488 kwargs.setdefault(
"TestBeam", flags.Beam.Type
is BeamType.TestBeam)
495 voxelDensitySettings = {}
496 if flags.Detector.GeometryITkPixel:
497 voxelDensitySettings[
"ITkPixelDetector"] = 0.05
498 if flags.Detector.GeometryITkStrip:
499 voxelDensitySettings[
"ITkStrip::Barrel"] = 0.05
500 voxelDensitySettings[
"ITkStrip::ITkStrip_Forward"] = 0.05
503 voxelDensitySettings[
"ITkStrip::SCT_Forward"] = 0.05
504 kwargs.setdefault(
"VolumeVoxellDensityLevel",voxelDensitySettings)
505 result = ComponentAccumulator()
511 result = ComponentAccumulator()
512 regionCreatorList = []
514 if flags.Detector.GeometryCavern
or flags.Sim.CavernBackground
not in [CavernBackground.Off, CavernBackground.Signal]:
515 regionCreatorList += [
516 result.popToolsAndMerge(SX1PhysicsRegionToolCfg(flags)),
517 result.popToolsAndMerge(BedrockPhysicsRegionToolCfg(flags)),
518 result.popToolsAndMerge(CavernShaftsConcretePhysicsRegionToolCfg(flags))]
520 if flags.Detector.GeometryID:
521 if flags.Detector.GeometryPixel:
522 regionCreatorList += [result.popToolsAndMerge(PixelPhysicsRegionToolCfg(flags))]
523 if flags.Detector.GeometrySCT:
524 regionCreatorList += [result.popToolsAndMerge(SCTPhysicsRegionToolCfg(flags))]
525 if flags.Detector.GeometryTRT:
526 regionCreatorList += [result.popToolsAndMerge(TRTPhysicsRegionToolCfg(flags))]
527 if flags.GeoModel.Run
in [LHCPeriod.Run2, LHCPeriod.Run3]:
529 regionCreatorList += [result.popToolsAndMerge(TRT_ArPhysicsRegionToolCfg(flags))]
531 if flags.Detector.GeometryBpipe:
532 if flags.Sim.BeamPipeSimMode
is not BeamPipeSimMode.Normal:
533 regionCreatorList += [result.popToolsAndMerge(BeampipeFwdCutPhysicsRegionToolCfg(flags))]
534 if not flags.Detector.GeometryFwdRegion
and (flags.Detector.GeometryAFP
or flags.Detector.GeometryALFA
or flags.Detector.GeometryZDC):
535 regionCreatorList += [result.popToolsAndMerge(FWDBeamLinePhysicsRegionToolCfg(flags))]
536 if flags.Detector.GeometryITk:
537 if flags.Detector.GeometryITkPixel:
538 regionCreatorList += [result.popToolsAndMerge(ITkPixelPhysicsRegionToolCfg(flags))]
539 if flags.Detector.GeometryITkStrip:
540 regionCreatorList += [result.popToolsAndMerge(ITkStripPhysicsRegionToolCfg(flags))]
541 if flags.Detector.GeometryHGTD:
542 regionCreatorList += [result.popToolsAndMerge(HGTDPhysicsRegionToolCfg(flags))]
543 if flags.Detector.GeometryITk
or flags.Detector.GeometryHGTD:
545 if flags.Detector.GeometryBpipe:
546 if flags.Sim.BeamPipeSimMode
is not BeamPipeSimMode.Normal:
547 regionCreatorList += [result.popToolsAndMerge(BeampipeFwdCutPhysicsRegionToolCfg(flags))]
548 if not flags.Detector.GeometryFwdRegion
and (flags.Detector.GeometryAFP
or flags.Detector.GeometryALFA
or flags.Detector.GeometryZDC):
549 regionCreatorList += [result.popToolsAndMerge(FWDBeamLinePhysicsRegionToolCfg(flags))]
550 if flags.Detector.GeometryCalo:
551 if flags.Detector.GeometryLAr:
553 if flags.Sim.LArParameterization
is not LArParameterization.NoFrozenShowers \
554 and flags.Sim.CalibrationRun
in [CalibrationRun.LAr, CalibrationRun.LArTile, CalibrationRun.LArTileZDC, CalibrationRun.DeadLAr]:
555 Logging.log.info(
'You requested both calibration hits and frozen showers / parameterization in the LAr.')
556 Logging.log.info(
' Such a configuration is not allowed, and would give junk calibration hits where the showers are modified.')
557 Logging.log.info(
' Please try again with a different value of either flags.Sim.LArParameterization (' + str(flags.Sim.LArParameterization.value) +
') or flags.Sim.CalibrationRun ('+str(flags.Sim.CalibrationRun.value)+
')')
558 raise RuntimeError(
'Configuration not allowed')
559 regionCreatorList += [
560 result.popToolsAndMerge(EMBPhysicsRegionToolCfg(flags)),
561 result.popToolsAndMerge(EMECPhysicsRegionToolCfg(flags)),
562 result.popToolsAndMerge(HECPhysicsRegionToolCfg(flags)),
563 result.popToolsAndMerge(FCALPhysicsRegionToolCfg(flags))]
564 fullCommandList =
'\t'.join(flags.Sim.G4Commands)
565 if flags.Sim.LArParameterization
is LArParameterization.FrozenShowers
or 'EMECPara' in fullCommandList:
573 regionCreatorList += [
574 result.popToolsAndMerge(EMECParaPhysicsRegionToolCfg(flags))]
575 if flags.Sim.LArParameterization
is not LArParameterization.NoFrozenShowers:
576 regionCreatorList += [result.popToolsAndMerge(FCALParaPhysicsRegionToolCfg(flags)),
577 result.popToolsAndMerge(FCAL2ParaPhysicsRegionToolCfg(flags))]
578 if flags.Sim.LArParameterization
in [LArParameterization.DeadMaterialFrozenShowers, LArParameterization.FrozenShowersFCalOnly, LArParameterization.FastCaloSim]:
580 regionCreatorList += [
581 result.popToolsAndMerge(PreSampLArPhysicsRegionToolCfg(flags)),
582 result.popToolsAndMerge(DeadMaterialPhysicsRegionToolCfg(flags))]
583 if flags.Sim.LArParameterization
is LArParameterization.FastCaloSim:
584 regionCreatorList += [result.popToolsAndMerge(CALOPhysicsRegionToolCfg(flags))]
588 if flags.Detector.GeometryMuon:
590 regionCreatorList += [
591 result.popToolsAndMerge(DriftWallPhysicsRegionToolCfg(flags)),
592 result.popToolsAndMerge(DriftWall1PhysicsRegionToolCfg(flags)),
593 result.popToolsAndMerge(DriftWall2PhysicsRegionToolCfg(flags))]
594 if flags.Sim.CavernBackground
not in [CavernBackground.Off, CavernBackground.Read]
and not flags.Sim.RecordFlux:
595 regionCreatorList += [result.popToolsAndMerge(MuonSystemFastPhysicsRegionToolCfg(flags))]
596 result.setPrivateTools(regionCreatorList)
601 regionCreatorList = []
602 result = ComponentAccumulator()
622 result.setPrivateTools(regionCreatorList)
628 result = ComponentAccumulator()
631 if flags.Sim.TightMuonStepping:
632 tool = result.popToolsAndMerge(TightMuonsATLASFieldManagerToolCfg(flags))
633 fieldMgrList += [tool]
635 tool = result.popToolsAndMerge(ATLASFieldManagerToolCfg(flags))
636 fieldMgrList += [tool]
637 if flags.Detector.GeometryBpipe:
638 tool = result.popToolsAndMerge(BeamPipeFieldManagerToolCfg(flags))
639 fieldMgrList += [tool]
640 if flags.Detector.GeometryID:
641 tool = result.popToolsAndMerge(InDetFieldManagerToolCfg(flags))
642 fieldMgrList += [tool]
643 if flags.Detector.GeometryITk
or flags.Detector.GeometryHGTD:
644 tool = result.popToolsAndMerge(ITkFieldManagerToolCfg(flags))
645 fieldMgrList += [tool]
646 if flags.Detector.GeometryCalo
and flags.Sim.MuonFieldOnlyInCalo:
647 tool = result.popToolsAndMerge(MuonsOnlyInCaloFieldManagerToolCfg(flags))
648 fieldMgrList += [tool]
649 if flags.Detector.GeometryMuon:
650 tool = result.popToolsAndMerge(MuonFieldManagerToolCfg(flags))
651 fieldMgrList += [tool]
654 if flags.Detector.GeometryFwdRegion:
656 result.popToolsAndMerge(Q1FwdFieldManagerToolCfg(flags)),
657 result.popToolsAndMerge(Q2FwdFieldManagerToolCfg(flags)),
658 result.popToolsAndMerge(Q3FwdFieldManagerToolCfg(flags)),
659 result.popToolsAndMerge(D1FwdFieldManagerToolCfg(flags)),
660 result.popToolsAndMerge(D2FwdFieldManagerToolCfg(flags)),
661 result.popToolsAndMerge(Q4FwdFieldManagerToolCfg(flags)),
662 result.popToolsAndMerge(Q5FwdFieldManagerToolCfg(flags)),
663 result.popToolsAndMerge(Q6FwdFieldManagerToolCfg(flags)),
664 result.popToolsAndMerge(Q7FwdFieldManagerToolCfg(flags)),
665 result.popToolsAndMerge(Q1HKickFwdFieldManagerToolCfg(flags)),
666 result.popToolsAndMerge(Q1VKickFwdFieldManagerToolCfg(flags)),
667 result.popToolsAndMerge(Q2HKickFwdFieldManagerToolCfg(flags)),
668 result.popToolsAndMerge(Q2VKickFwdFieldManagerToolCfg(flags)),
669 result.popToolsAndMerge(Q3HKickFwdFieldManagerToolCfg(flags)),
670 result.popToolsAndMerge(Q3VKickFwdFieldManagerToolCfg(flags)),
671 result.popToolsAndMerge(Q4VKickAFwdFieldManagerToolCfg(flags)),
672 result.popToolsAndMerge(Q4HKickFwdFieldManagerToolCfg(flags)),
673 result.popToolsAndMerge(Q4VKickBFwdFieldManagerToolCfg(flags)),
674 result.popToolsAndMerge(Q5HKickFwdFieldManagerToolCfg(flags)),
675 result.popToolsAndMerge(Q6VKickFwdFieldManagerToolCfg(flags)),
676 result.popToolsAndMerge(Q1HKickFwdFieldManagerToolCfg(flags)),
677 result.popToolsAndMerge(FwdRegionFieldManagerToolCfg(flags))]
679 result.setPrivateTools(fieldMgrList)
685 result = ComponentAccumulator()
686 result.setPrivateTools(fieldMgrList)
691 geoConfigToolList = []
694 result =ComponentAccumulator()
697 result.setPrivateTools(geoConfigToolList)
703 result = ComponentAccumulator()
708 kwargs.setdefault(
"FastSimMasterTool", result.addPublicTool(result.popToolsAndMerge(FastSimulationMasterToolCfg(flags))))
710 if "SenDetMasterTool" not in kwargs:
711 kwargs.setdefault(
"SenDetMasterTool",
712 result.addPublicTool(result.popToolsAndMerge(SensitiveDetectorMasterToolCfg(flags))))
714 if flags.Beam.Type
is BeamType.TestBeam:
716 from G4AtlasTools.G4TestBeamGeometryConfig
import TileTB_WorldEnvelopeCfg
717 kwargs.setdefault(
"World", result.popToolsAndMerge(TileTB_WorldEnvelopeCfg(flags)))
718 kwargs.setdefault(
"RegionCreators", [])
719 kwargs.setdefault(
"FieldManagers", [])
721 kwargs.setdefault(
"World",
'LArTB_World')
723 kwargs.setdefault(
"FieldManagers", result.popToolsAndMerge(
TB_FieldMgrListCfg(flags)))
725 if flags.Detector.GeometryCavern:
726 kwargs.setdefault(
"World", result.popToolsAndMerge(
CavernWorldCfg(flags)))
728 kwargs.setdefault(
"World", result.popToolsAndMerge(
ATLASEnvelopeCfg(flags)))
730 if flags.BField.solenoidOn
or flags.BField.barrelToroidOn
or flags.BField.endcapToroidOn:
733 if flags.Sim.LArParameterization
is LArParameterization.FastCaloSim:
734 kwargs.setdefault(
"G4CaloTransportTool", result.addPublicTool(result.popToolsAndMerge(G4CaloTransportToolCfg(flags))))
741 from AtlasGeoModel.CavernGMConfig
import CavernGeometryCfg
742 result = CavernGeometryCfg(flags)
743 kwargs.setdefault(
"DetectorName",
"CavernInfra")
744 result.setPrivateTools(result.popToolsAndMerge(
GeoDetectorToolCfg(flags, name, **kwargs)))
749 result = ComponentAccumulator()
750 kwargs.setdefault(
"DetectorName",
"World")
753 if flags.Sim.CavernBackground
is CavernBackground.Off:
757 bedrockDX = 1000.*3000
758 bedrockDZ = 1000.*3000
760 from CosmicGenerator.CosmicGeneratorConfig
import CavernPropertyCalculator
761 theCavernProperties = CavernPropertyCalculator()
762 if theCavernProperties.BedrockDX(flags) > bedrockDX:
763 bedrockDX = theCavernProperties.BedrockDX(flags)
764 if theCavernProperties.BedrockDZ(flags) > bedrockDZ:
765 bedrockDZ = theCavernProperties.BedrockDZ(flags)
767 kwargs.setdefault(
"dX", bedrockDX)
768 kwargs.setdefault(
"dY", 57300 + 41000 + 1000)
769 kwargs.setdefault(
"dZ", bedrockDZ)
771 kwargs.setdefault(
"NumberOfHoles", 1)
772 kwargs.setdefault(
"HoleNames", [
'BelowCavern'])
773 kwargs.setdefault(
"Hole_dX", [bedrockDX])
774 kwargs.setdefault(
"Hole_dY", [41000])
775 kwargs.setdefault(
"Hole_dZ", [bedrockDZ])
777 kwargs.setdefault(
"HolePosX", [0])
778 kwargs.setdefault(
"HolePosY", [-58300])
779 kwargs.setdefault(
"HolePosZ", [0])
785 kwargs.setdefault(
"SubDetectors", subDetectorList)
786 result.setPrivateTools(
BoxEnvelope(name, **kwargs))