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, InDetParameterization, LArParameterization
12from G4AtlasTools.G4PhysicsRegionConfig
import SX1PhysicsRegionToolCfg, BedrockPhysicsRegionToolCfg, CavernShaftsConcretePhysicsRegionToolCfg, PixelPhysicsRegionToolCfg, SCTPhysicsRegionToolCfg, TRTPhysicsRegionToolCfg, TRT_ArPhysicsRegionToolCfg,ITkPixelPhysicsRegionToolCfg,ITkStripPhysicsRegionToolCfg,HGTDPhysicsRegionToolCfg,BeampipeFwdCutPhysicsRegionToolCfg, FWDBeamLinePhysicsRegionToolCfg, InDetPhysicsRegionToolCfg, 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")
22from AthenaCommon.SystemOfUnits
import mm, cm, m
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)))
227 kwargs.setdefault(
"DetectorName",
"Toroid")
228 result = ComponentAccumulator()
229 if not flags.Detector.SpecialGeometryToroid:
231 from MuonGeoModelR4.MuonGeoModelConfig
import ToroidGeoModelToolCfg
232 result.merge(ToroidGeoModelToolCfg(flags))
233 result.setPrivateTools(result.popToolsAndMerge(
GeoDetectorToolCfg(flags, name, **kwargs)))
238 result = ComponentAccumulator()
240 kwargs.setdefault(
"DetectorName",
"ITK")
241 kwargs.setdefault(
"InnerRadius", 28.8*mm)
242 kwargs.setdefault(
"OuterRadius", 1.148*m)
243 if flags.GeoModel.Run >= LHCPeriod.Run4:
245 kwargs.setdefault(
"dZ", 354.5*cm)
247 kwargs.setdefault(
"dZ", 347.5*cm)
250 if flags.Detector.GeometryITkPixel:
252 SubDetectorList += [toolITkPixel]
253 if flags.Detector.GeometryITkStrip:
255 SubDetectorList += [toolITkStrip]
256 if flags.Detector.GeometryPLR:
258 SubDetectorList += [toolPLR]
259 if flags.Detector.GeometryBCMPrime:
261 SubDetectorList += [toolBCMPrime]
263 if flags.Detector.GeometryHGTD:
265 SubDetectorList += [toolHGTD]
267 kwargs.setdefault(
"SubDetectors", SubDetectorList)
273 result = ComponentAccumulator()
274 kwargs.setdefault(
"DetectorName",
"IDET")
276 if flags.GeoModel.Run
in [LHCPeriod.Run2, LHCPeriod.Run3]:
277 innerRadius = 28.9*mm
278 kwargs.setdefault(
"InnerRadius", innerRadius)
279 kwargs.setdefault(
"OuterRadius", 1.148*m)
280 kwargs.setdefault(
"dZ", 347.5*cm)
283 if flags.Detector.GeometryPixel:
285 SubDetectorList += [toolPixel]
286 if flags.Detector.GeometrySCT:
288 SubDetectorList += [toolSCT]
289 if flags.Detector.GeometryTRT:
291 SubDetectorList += [toolTRT]
294 SubDetectorList += [toolIDetServices]
295 kwargs.setdefault(
"SubDetectors", SubDetectorList)
301 result = ComponentAccumulator()
303 kwargs.setdefault(
"DetectorName",
"CALO")
304 if flags.GeoModel.Run >= LHCPeriod.Run4:
306 kwargs.setdefault(
"NSurfaces", 22)
307 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.])
308 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.])
309 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.])
311 kwargs.setdefault(
"NSurfaces", 18)
312 kwargs.setdefault(
"InnerRadii", [41.,41.,41.,41.,41.,41.,120.,120.,1148.,1148.,120.,120.,41.,41.,41.,41.,41.,41.])
313 kwargs.setdefault(
"OuterRadii", [415.,415.,3795.,3795.,4251.,4251.,4251.,4251.,4251.,4251.,4251.,4251.,4251.,4251.,3795.,3795.,415.,415.])
314 kwargs.setdefault(
"ZSurfaces", [-6781.,-6747.,-6747.,-6530.,-6530.,-4587.,-4587.,-3475.,-3475.,3475.,3475.,4587.,4587.,6530.,6530.,6747.,6747.,6781.])
316 if flags.Detector.GeometryLAr:
318 SubDetectorList += [ toolLArMgr ]
319 if flags.Detector.GeometryTile:
321 SubDetectorList += [ toolTile ]
322 kwargs.setdefault(
"SubDetectors", SubDetectorList)
328 result = ComponentAccumulator()
330 kwargs.setdefault(
"DetectorName",
"ForDetEnvelope")
333 if flags.Detector.GeometryFwdRegion:
335 SubDetectorList += [ toolFwdRegion ]
340 if flags.Detector.GeometryZDC:
342 SubDetectorList += [ toolZDC ]
343 if flags.Detector.GeometryALFA:
345 SubDetectorList += [ toolALFA ]
346 if flags.Detector.GeometryAFP:
348 SubDetectorList += [ toolAFP ]
349 kwargs.setdefault(
"SubDetectors", SubDetectorList)
351 result.setPrivateTools(result.popToolsAndMerge(
GeoDetectorToolCfg(flags, name, **kwargs)))
356 result = ComponentAccumulator()
357 if not flags.Detector.GeometryMuon:
359 kwargs.setdefault(
"DetectorName",
"MUONQ02")
360 kwargs.setdefault(
"NSurfaces", 34)
361 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.])
362 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.])
363 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.])
370 kwargs.setdefault(
"DetectorName",
"TTR_BARREL")
371 kwargs.setdefault(
"NSurfaces", 14)
372 kwargs.setdefault(
"InnerRadii", [70.,70.,12500.,12500.,12500.,12500.,13000.,13000.,12500.,12500.,12500.,12500.,70.,70.])
373 kwargs.setdefault(
"OuterRadii", [12501.,12501.,12501.,12501.,13001.,13001.,13001.,13001.,13001.,13001.,12501.,12501.,12501.,12501.])
374 kwargs.setdefault(
"ZSurfaces", [-22031.,-22030.,-22030.,-12901.,-12901.,-12900.,-12900., 12900.,12900.,12901.,12901.,22030.,22030.,22031.])
376 kwargs.setdefault(
"SubDetectors", SubDetectorList)
381 result = ComponentAccumulator()
384 if flags.Beam.Type
is BeamType.Cosmics
or flags.Sim.CavernBackground
not in [CavernBackground.Off, CavernBackground.Signal]:
385 if flags.Beam.Type
is BeamType.Cosmics
and flags.hasFlag(
"Sim.ReadTR"):
388 if flags.Detector.GeometryMuon:
390 if flags.Detector.SpecialGeometryToroid:
392 if flags.Detector.GeometryID:
394 SubDetectorList += [ toolIDET ]
395 if flags.Detector.GeometryITk
or flags.Detector.GeometryHGTD:
397 SubDetectorList += [ toolITK ]
398 if flags.Detector.GeometryCalo:
400 SubDetectorList += [ toolCALO ]
401 if flags.Detector.GeometryBpipe:
403 SubDetectorList += [ toolBpipe ]
404 if flags.Detector.GeometryLucid:
406 SubDetectorList += [ toolLucid ]
407 if flags.Detector.GeometryFwdRegion
or flags.Detector.GeometryAFP
or flags.Detector.GeometryALFA
or flags.Detector.GeometryZDC:
409 SubDetectorList += [ toolFwdRegion ]
411 result.setPrivateTools(SubDetectorList)
416 result = ComponentAccumulator()
418 kwargs.setdefault(
"DetectorName",
"Atlas")
419 kwargs.setdefault(
"NSurfaces", 18)
421 innerRadii = [0.0] * 18
422 kwargs.setdefault(
"InnerRadii", innerRadii)
428 AtlasForwardOuterR = 2751.
429 AtlasOuterR1 = 14201.
430 AtlasOuterR2 = 14201.
433 if not (flags.Detector.GeometryMuon
or flags.Detector.GeometryCavern):
436 if not flags.Detector.GeometryCalo:
440 outerRadii = [0.0] * 18
441 for i
in (0, 1, 16, 17):
442 outerRadii[i] = 1501.
443 for i
in (2, 3, 14, 15):
444 outerRadii[i] = AtlasForwardOuterR
445 for i
in (4, 5, 12, 13):
446 outerRadii[i] = AtlasOuterR2
447 for i
in range(6, 12):
448 outerRadii[i] = AtlasOuterR1
451 if flags.Sim.WorldRRange:
452 routValue = flags.Sim.WorldRRange
453 if flags.Sim.WorldRRange >
max(AtlasOuterR1, AtlasOuterR2):
454 for i
in range(4, 14):
455 outerRadii[i] = routValue
457 raise RuntimeError(
'getATLASEnvelope: ERROR flags.Sim.WorldRRange must be > %f. Current value %f' % (
max(AtlasOuterR1, AtlasOuterR2), routValue) )
458 kwargs.setdefault(
"OuterRadii", outerRadii)
461 zSurfaces = [-26046., -23001., -23001., -22031., -22031., -12899., -12899., -6741., -6741., 6741., 6741., 12899., 12899., 22031., 22031., 23001., 23001., 26046.]
463 if flags.Detector.GeometryFwdRegion
or flags.Detector.GeometryAFP
or flags.Detector.GeometryALFA
or flags.Detector.GeometryZDC:
464 zSurfaces[0] = -400000.
465 zSurfaces[17] = 400000.
468 if flags.Sim.WorldZRange:
469 if flags.Sim.WorldZRange < 26046.:
470 raise RuntimeError(
'getATLASEnvelope: ERROR flags.Sim.WorldZRange must be > 26046. Current value: %f' % flags.Sim.WorldZRange)
471 zSurfaces[17] = flags.Sim.WorldZRange + 100.
472 zSurfaces[16] = flags.Sim.WorldZRange + 50.
473 zSurfaces[15] = flags.Sim.WorldZRange + 50.
474 zSurfaces[14] = flags.Sim.WorldZRange
475 zSurfaces[13] = flags.Sim.WorldZRange
476 zSurfaces[0] = -flags.Sim.WorldZRange - 100.
477 zSurfaces[1] = -flags.Sim.WorldZRange - 50.
478 zSurfaces[2] = -flags.Sim.WorldZRange - 50.
479 zSurfaces[3] = -flags.Sim.WorldZRange
480 zSurfaces[4] = -flags.Sim.WorldZRange
482 kwargs.setdefault(
"ZSurfaces", zSurfaces)
484 kwargs.setdefault(
"SubDetectors", SubDetectorList)
491 result = ComponentAccumulator()
492 kwargs.setdefault(
"TestBeam", flags.Beam.Type
is BeamType.TestBeam)
499 voxelDensitySettings = {}
500 if flags.Detector.GeometryITkPixel:
501 voxelDensitySettings[
"ITkPixelDetector"] = 0.05
502 if flags.Detector.GeometryITkStrip:
503 voxelDensitySettings[
"ITkStrip::Barrel"] = 0.05
504 voxelDensitySettings[
"ITkStrip::ITkStrip_Forward"] = 0.05
507 voxelDensitySettings[
"ITkStrip::SCT_Forward"] = 0.05
508 kwargs.setdefault(
"VolumeVoxellDensityLevel",voxelDensitySettings)
509 result = ComponentAccumulator()
515 result = ComponentAccumulator()
516 regionCreatorList = []
518 if flags.Detector.GeometryCavern
or flags.Sim.CavernBackground
not in [CavernBackground.Off, CavernBackground.Signal]:
519 regionCreatorList += [
520 result.popToolsAndMerge(SX1PhysicsRegionToolCfg(flags)),
521 result.popToolsAndMerge(BedrockPhysicsRegionToolCfg(flags)),
522 result.popToolsAndMerge(CavernShaftsConcretePhysicsRegionToolCfg(flags))]
524 if flags.Detector.GeometryID:
525 if flags.Detector.GeometryPixel:
526 regionCreatorList += [result.popToolsAndMerge(PixelPhysicsRegionToolCfg(flags))]
527 if flags.Detector.GeometrySCT:
528 regionCreatorList += [result.popToolsAndMerge(SCTPhysicsRegionToolCfg(flags))]
529 if flags.Detector.GeometryTRT:
530 regionCreatorList += [result.popToolsAndMerge(TRTPhysicsRegionToolCfg(flags))]
531 if flags.GeoModel.Run
in [LHCPeriod.Run2, LHCPeriod.Run3]:
533 regionCreatorList += [result.popToolsAndMerge(TRT_ArPhysicsRegionToolCfg(flags))]
535 if flags.Sim.InDetParameterization
is InDetParameterization.FatrasG4:
536 regionCreatorList += [result.popToolsAndMerge(InDetPhysicsRegionToolCfg(flags))]
537 if flags.Detector.GeometryBpipe:
538 if flags.Sim.BeamPipeSimMode
is not BeamPipeSimMode.Normal:
539 regionCreatorList += [result.popToolsAndMerge(BeampipeFwdCutPhysicsRegionToolCfg(flags))]
540 if not flags.Detector.GeometryFwdRegion
and (flags.Detector.GeometryAFP
or flags.Detector.GeometryALFA
or flags.Detector.GeometryZDC):
541 regionCreatorList += [result.popToolsAndMerge(FWDBeamLinePhysicsRegionToolCfg(flags))]
542 if flags.Detector.GeometryITk:
543 if flags.Detector.GeometryITkPixel:
544 regionCreatorList += [result.popToolsAndMerge(ITkPixelPhysicsRegionToolCfg(flags))]
545 if flags.Detector.GeometryITkStrip:
546 regionCreatorList += [result.popToolsAndMerge(ITkStripPhysicsRegionToolCfg(flags))]
547 if flags.Detector.GeometryHGTD:
548 regionCreatorList += [result.popToolsAndMerge(HGTDPhysicsRegionToolCfg(flags))]
549 if flags.Detector.GeometryITk
or flags.Detector.GeometryHGTD:
551 if flags.Detector.GeometryBpipe:
552 if flags.Sim.BeamPipeSimMode
is not BeamPipeSimMode.Normal:
553 regionCreatorList += [result.popToolsAndMerge(BeampipeFwdCutPhysicsRegionToolCfg(flags))]
554 if not flags.Detector.GeometryFwdRegion
and (flags.Detector.GeometryAFP
or flags.Detector.GeometryALFA
or flags.Detector.GeometryZDC):
555 regionCreatorList += [result.popToolsAndMerge(FWDBeamLinePhysicsRegionToolCfg(flags))]
556 if flags.Detector.GeometryCalo:
557 if flags.Detector.GeometryLAr:
559 if flags.Sim.LArParameterization
is not LArParameterization.NoFrozenShowers \
560 and flags.Sim.CalibrationRun
in [CalibrationRun.LAr, CalibrationRun.LArTile, CalibrationRun.LArTileZDC, CalibrationRun.DeadLAr]:
561 Logging.log.info(
'You requested both calibration hits and frozen showers / parameterization in the LAr.')
562 Logging.log.info(
' Such a configuration is not allowed, and would give junk calibration hits where the showers are modified.')
563 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)+
')')
564 raise RuntimeError(
'Configuration not allowed')
565 regionCreatorList += [
566 result.popToolsAndMerge(EMBPhysicsRegionToolCfg(flags)),
567 result.popToolsAndMerge(EMECPhysicsRegionToolCfg(flags)),
568 result.popToolsAndMerge(HECPhysicsRegionToolCfg(flags)),
569 result.popToolsAndMerge(FCALPhysicsRegionToolCfg(flags))]
570 fullCommandList =
'\t'.join(flags.Sim.G4Commands)
571 if flags.Sim.LArParameterization
is LArParameterization.FrozenShowers
or 'EMECPara' in fullCommandList:
579 regionCreatorList += [
580 result.popToolsAndMerge(EMECParaPhysicsRegionToolCfg(flags))]
581 if flags.Sim.LArParameterization
is not LArParameterization.NoFrozenShowers:
582 regionCreatorList += [result.popToolsAndMerge(FCALParaPhysicsRegionToolCfg(flags)),
583 result.popToolsAndMerge(FCAL2ParaPhysicsRegionToolCfg(flags))]
584 if flags.Sim.LArParameterization
in [LArParameterization.DeadMaterialFrozenShowers, LArParameterization.FrozenShowersFCalOnly, LArParameterization.FastCaloSim]:
586 regionCreatorList += [
587 result.popToolsAndMerge(PreSampLArPhysicsRegionToolCfg(flags)),
588 result.popToolsAndMerge(DeadMaterialPhysicsRegionToolCfg(flags))]
589 if flags.Sim.LArParameterization
is LArParameterization.FastCaloSim:
590 regionCreatorList += [result.popToolsAndMerge(CALOPhysicsRegionToolCfg(flags))]
594 if flags.Detector.GeometryMuon:
596 regionCreatorList += [
597 result.popToolsAndMerge(DriftWallPhysicsRegionToolCfg(flags)),
598 result.popToolsAndMerge(DriftWall1PhysicsRegionToolCfg(flags)),
599 result.popToolsAndMerge(DriftWall2PhysicsRegionToolCfg(flags))]
600 if flags.Sim.CavernBackground
not in [CavernBackground.Off, CavernBackground.Read]
and not flags.Sim.RecordFlux:
601 regionCreatorList += [result.popToolsAndMerge(MuonSystemFastPhysicsRegionToolCfg(flags))]
602 result.setPrivateTools(regionCreatorList)
607 regionCreatorList = []
608 result = ComponentAccumulator()
628 result.setPrivateTools(regionCreatorList)
634 result = ComponentAccumulator()
637 if flags.Sim.TightMuonStepping:
638 tool = result.popToolsAndMerge(TightMuonsATLASFieldManagerToolCfg(flags))
639 fieldMgrList += [tool]
641 tool = result.popToolsAndMerge(ATLASFieldManagerToolCfg(flags))
642 fieldMgrList += [tool]
643 if flags.Detector.GeometryBpipe:
644 tool = result.popToolsAndMerge(BeamPipeFieldManagerToolCfg(flags))
645 fieldMgrList += [tool]
646 if flags.Detector.GeometryID:
647 tool = result.popToolsAndMerge(InDetFieldManagerToolCfg(flags))
648 fieldMgrList += [tool]
649 if flags.Detector.GeometryITk
or flags.Detector.GeometryHGTD:
650 tool = result.popToolsAndMerge(ITkFieldManagerToolCfg(flags))
651 fieldMgrList += [tool]
652 if flags.Detector.GeometryCalo
and flags.Sim.MuonFieldOnlyInCalo:
653 tool = result.popToolsAndMerge(MuonsOnlyInCaloFieldManagerToolCfg(flags))
654 fieldMgrList += [tool]
655 if flags.Detector.GeometryMuon:
656 tool = result.popToolsAndMerge(MuonFieldManagerToolCfg(flags))
657 fieldMgrList += [tool]
660 if flags.Detector.GeometryFwdRegion:
662 result.popToolsAndMerge(Q1FwdFieldManagerToolCfg(flags)),
663 result.popToolsAndMerge(Q2FwdFieldManagerToolCfg(flags)),
664 result.popToolsAndMerge(Q3FwdFieldManagerToolCfg(flags)),
665 result.popToolsAndMerge(D1FwdFieldManagerToolCfg(flags)),
666 result.popToolsAndMerge(D2FwdFieldManagerToolCfg(flags)),
667 result.popToolsAndMerge(Q4FwdFieldManagerToolCfg(flags)),
668 result.popToolsAndMerge(Q5FwdFieldManagerToolCfg(flags)),
669 result.popToolsAndMerge(Q6FwdFieldManagerToolCfg(flags)),
670 result.popToolsAndMerge(Q7FwdFieldManagerToolCfg(flags)),
671 result.popToolsAndMerge(Q1HKickFwdFieldManagerToolCfg(flags)),
672 result.popToolsAndMerge(Q1VKickFwdFieldManagerToolCfg(flags)),
673 result.popToolsAndMerge(Q2HKickFwdFieldManagerToolCfg(flags)),
674 result.popToolsAndMerge(Q2VKickFwdFieldManagerToolCfg(flags)),
675 result.popToolsAndMerge(Q3HKickFwdFieldManagerToolCfg(flags)),
676 result.popToolsAndMerge(Q3VKickFwdFieldManagerToolCfg(flags)),
677 result.popToolsAndMerge(Q4VKickAFwdFieldManagerToolCfg(flags)),
678 result.popToolsAndMerge(Q4HKickFwdFieldManagerToolCfg(flags)),
679 result.popToolsAndMerge(Q4VKickBFwdFieldManagerToolCfg(flags)),
680 result.popToolsAndMerge(Q5HKickFwdFieldManagerToolCfg(flags)),
681 result.popToolsAndMerge(Q6VKickFwdFieldManagerToolCfg(flags)),
682 result.popToolsAndMerge(Q1HKickFwdFieldManagerToolCfg(flags)),
683 result.popToolsAndMerge(FwdRegionFieldManagerToolCfg(flags))]
685 result.setPrivateTools(fieldMgrList)
691 result = ComponentAccumulator()
692 result.setPrivateTools(fieldMgrList)
697 geoConfigToolList = []
700 result =ComponentAccumulator()
703 result.setPrivateTools(geoConfigToolList)
709 result = ComponentAccumulator()
714 kwargs.setdefault(
"FastSimMasterTool", result.addPublicTool(result.popToolsAndMerge(FastSimulationMasterToolCfg(flags))))
716 if "SenDetMasterTool" not in kwargs:
717 kwargs.setdefault(
"SenDetMasterTool",
718 result.addPublicTool(result.popToolsAndMerge(SensitiveDetectorMasterToolCfg(flags))))
720 if flags.Beam.Type
is BeamType.TestBeam:
722 from G4AtlasTools.G4TestBeamGeometryConfig
import TileTB_WorldEnvelopeCfg
723 kwargs.setdefault(
"World", result.popToolsAndMerge(TileTB_WorldEnvelopeCfg(flags)))
724 kwargs.setdefault(
"RegionCreators", [])
725 kwargs.setdefault(
"FieldManagers", [])
727 kwargs.setdefault(
"World",
'LArTB_World')
729 kwargs.setdefault(
"FieldManagers", result.popToolsAndMerge(
TB_FieldMgrListCfg(flags)))
731 if flags.Detector.GeometryCavern:
732 kwargs.setdefault(
"World", result.popToolsAndMerge(
CavernWorldCfg(flags)))
734 kwargs.setdefault(
"World", result.popToolsAndMerge(
ATLASEnvelopeCfg(flags)))
736 if flags.BField.solenoidOn
or flags.BField.barrelToroidOn
or flags.BField.endcapToroidOn:
739 if flags.Sim.LArParameterization
is LArParameterization.FastCaloSim:
740 kwargs.setdefault(
"G4CaloTransportTool", result.addPublicTool(result.popToolsAndMerge(G4CaloTransportToolCfg(flags))))
747 from AtlasGeoModel.CavernGMConfig
import CavernGeometryCfg
748 result = CavernGeometryCfg(flags)
749 kwargs.setdefault(
"DetectorName",
"CavernInfra")
750 result.setPrivateTools(result.popToolsAndMerge(
GeoDetectorToolCfg(flags, name, **kwargs)))
755 result = ComponentAccumulator()
756 kwargs.setdefault(
"DetectorName",
"World")
759 if flags.Sim.CavernBackground
is CavernBackground.Off:
763 bedrockDX = 1000.*3000
764 bedrockDZ = 1000.*3000
766 from CosmicGenerator.CosmicGeneratorConfig
import CavernPropertyCalculator
767 theCavernProperties = CavernPropertyCalculator()
768 if theCavernProperties.BedrockDX(flags) > bedrockDX:
769 bedrockDX = theCavernProperties.BedrockDX(flags)
770 if theCavernProperties.BedrockDZ(flags) > bedrockDZ:
771 bedrockDZ = theCavernProperties.BedrockDZ(flags)
773 kwargs.setdefault(
"dX", bedrockDX)
774 kwargs.setdefault(
"dY", 57300 + 41000 + 1000)
775 kwargs.setdefault(
"dZ", bedrockDZ)
777 kwargs.setdefault(
"NumberOfHoles", 1)
778 kwargs.setdefault(
"HoleNames", [
'BelowCavern'])
779 kwargs.setdefault(
"Hole_dX", [bedrockDX])
780 kwargs.setdefault(
"Hole_dY", [41000])
781 kwargs.setdefault(
"Hole_dZ", [bedrockDZ])
783 kwargs.setdefault(
"HolePosX", [0])
784 kwargs.setdefault(
"HolePosY", [-58300])
785 kwargs.setdefault(
"HolePosZ", [0])
791 kwargs.setdefault(
"SubDetectors", subDetectorList)
792 result.setPrivateTools(
BoxEnvelope(name, **kwargs))