2from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
3from AthenaConfiguration.ComponentFactory
import CompFactory
4from AthenaConfiguration.Enums
import LHCPeriod
5from SimulationConfig.SimEnums
import BeamPipeSimMode
6from AthenaCommon.Logging
import logging
8RegionCreator=CompFactory.RegionCreator
11 result = ComponentAccumulator()
12 kwargs.setdefault(
"DumpRegion",
not flags.Exec.QuietMode)
19 theLog = logging.getLogger(
"BeampipeFwdCutPhysicsRegionToolCfg")
20 kwargs.setdefault(
"RegionName",
'BeampipeFwdCut')
22 if flags.GeoModel.Run
is LHCPeriod.Run1:
23 volumeList = [
'BeamPipe::SectionF47',
'BeamPipe::SectionF48',
'BeamPipe::SectionF61']
25 volumeList = [
'BeamPipe::SectionF198',
'BeamPipe::SectionF199',
'BeamPipe::SectionF200']
26 if flags.GeoModel.Run > LHCPeriod.Run4:
27 theLog.warning(
'check that RUN2 beampipe volume names are correct for this geometry tag')
28 kwargs.setdefault(
"VolumeList", volumeList)
30 if flags.Sim.BeamPipeSimMode
is BeamPipeSimMode.FastSim:
31 kwargs.setdefault(
"ElectronCut", 10.)
32 kwargs.setdefault(
"PositronCut", 10.)
33 kwargs.setdefault(
"GammaCut", 10.)
34 theLog.info(
'Adding fast sim model to the beampipe!')
36 assert flags.Sim.BeamPipeCut
37 if flags.Sim.BeamPipeCut < 1:
38 msg =
"Setting the forward beam pipe range cuts to %e mm " % flags.Sim.BeamPipeCut
39 msg +=
"-- cut is < 1 mm, I hope you know what you're doing!"
41 if flags.Sim.BeamPipeSimMode
is BeamPipeSimMode.EGammaRangeCuts:
42 kwargs.setdefault(
"ElectronCut", flags.Sim.BeamPipeCut)
43 kwargs.setdefault(
"PositronCut", flags.Sim.BeamPipeCut)
44 kwargs.setdefault(
"GammaCut", flags.Sim.BeamPipeCut)
45 elif flags.Sim.BeamPipeSimMode
is BeamPipeSimMode.EGammaPRangeCuts:
46 kwargs.setdefault(
"ElectronCut", flags.Sim.BeamPipeCut)
47 kwargs.setdefault(
"PositronCut", flags.Sim.BeamPipeCut)
48 kwargs.setdefault(
"GammaCut", flags.Sim.BeamPipeCut)
49 kwargs.setdefault(
"ProtonCut", flags.Sim.BeamPipeCut)
54 kwargs.setdefault(
"RegionName",
'FWDBeamLine')
55 if flags.GeoModel.Run
is LHCPeriod.Run1:
56 volumeList = [
'BeamPipe::SectionF46']
58 volumeList = [
'BeamPipe::SectionF197']
59 if flags.GeoModel.Run > LHCPeriod.Run4:
60 theLog = logging.getLogger(
"FWDBeamLinePhysicsRegionToolCfg")
61 theLog.warning(
'Check that RUN2 beampipe volume names are correct for this geometry tag')
62 kwargs.setdefault(
"VolumeList", volumeList)
68 kwargs.setdefault(
"RegionName",
'FwdRegion')
69 volumeList = [
'FwdRegion::ForwardRegionGeoModel']
70 kwargs.setdefault(
"VolumeList", volumeList)
71 kwargs.setdefault(
"ElectronCut", 200.)
72 kwargs.setdefault(
"PositronCut", 200.)
73 kwargs.setdefault(
"GammaCut", 200.)
79 kwargs.setdefault(
"RegionName",
'Pixel')
80 volumeList = [
'Pixel::siLog',
'Pixel::siBLayLog']
81 if flags.GeoModel.Run
in [LHCPeriod.Run2, LHCPeriod.Run3]:
83 volumeList += [
'Pixel::dbmDiamondLog']
84 kwargs.setdefault(
"VolumeList", volumeList)
89 kwargs.setdefault(
"ElectronCut", 0.05)
90 kwargs.setdefault(
"PositronCut", 0.05)
91 kwargs.setdefault(
"GammaCut", 0.05)
96 kwargs.setdefault(
"RegionName",
'SCT')
97 volumeList = [
'SCT::BRLSensor',
'SCT::ECSensor0',
'SCT::ECSensor1',
98 'SCT::ECSensor2',
'SCT::ECSensor3']
99 kwargs.setdefault(
"VolumeList", volumeList)
100 kwargs.setdefault(
"ElectronCut", 0.05)
101 kwargs.setdefault(
"PositronCut", 0.05)
102 kwargs.setdefault(
"GammaCut", 0.05)
107 kwargs.setdefault(
"RegionName",
'ITkPixel')
108 volumeList = [
'ITkPixel::InnerBarrelSingleMod_Sensor',
109 'ITkPixel::InnerRingSingleMod_Sensor',
110 'ITkPixel::InnerQuadMod_Sensor',
111 'ITkPixel::OuterQuadMod_Sensor',
112 'ITkPixel::InclinedQuadMod_Sensor']
113 kwargs.setdefault(
"VolumeList", volumeList)
114 kwargs.setdefault(
"ElectronCut", 0.05)
115 kwargs.setdefault(
"PositronCut", 0.05)
116 kwargs.setdefault(
"GammaCut", 0.05)
121 kwargs.setdefault(
"RegionName",
'ITkStrip')
122 volumeList = [
'ITkStrip::BRLSensorSS',
'ITkStrip::BRLSensorMS',
123 'ITkStrip::ECSensor0',
'ITkStrip::ECSensor1',
'ITkStrip::ECSensor2',
124 'ITkStrip::ECSensor3',
'ITkStrip::ECSensor4',
'ITkStrip::ECSensor5',
125 'ITkStrip::ECSensorBack0',
'ITkStrip::ECSensorBack1',
'ITkStrip::ECSensorBack2',
126 'ITkStrip::ECSensorBack3',
'ITkStrip::ECSensorBack4',
'ITkStrip::ECSensorBack5']
127 kwargs.setdefault(
"VolumeList", volumeList)
128 kwargs.setdefault(
"ElectronCut", 0.05)
129 kwargs.setdefault(
"PositronCut", 0.05)
130 kwargs.setdefault(
"GammaCut", 0.05)
135 kwargs.setdefault(
"RegionName",
'HGTD')
136 if flags.HGTD.Geometry.useGeoModelXml:
137 volumeList = [
'HGTD::HGTDSiSensorPosL0',
"HGTD::HGTDSiSensorPosL1",
138 'HGTD::HGTDSiSensorPosL2',
'HGTD::HGTDSiSensorPosL3',
139 'HGTD::HGTDSiSensorNegL0',
'HGTD::HGTDSiSensorNegL1',
140 'HGTD::HGTDSiSensorNegL2',
'HGTD::HGTDSiSensorNegL3',
141 'HGTD::HGTDSiSensor']
143 volumeList = [
'HGTD::HGTDSiSensor0',
'HGTD::HGTDSiSensor1',
144 'HGTD::HGTDSiSensor2',
'HGTD::HGTDSiSensor3']
145 kwargs.setdefault(
"VolumeList", volumeList)
146 kwargs.setdefault(
"ElectronCut", 0.05)
147 kwargs.setdefault(
"PositronCut", 0.05)
148 kwargs.setdefault(
"GammaCut", 0.05)
153 rangeCut = flags.Sim.TRTRangeCut
154 kwargs.setdefault(
"RegionName",
'TRT')
155 volumeList = [
'TRT::Gas']
156 if flags.GeoModel.Run
in [LHCPeriod.Run2]
or flags.GeoModel.SQLiteDB:
157 volumeList += [
"TRT::GasMA"]
158 kwargs.setdefault(
"VolumeList", volumeList)
159 kwargs.setdefault(
"ElectronCut", rangeCut)
160 kwargs.setdefault(
"PositronCut", rangeCut)
162 kwargs.setdefault(
"GammaCut", 0.05)
167 kwargs.setdefault(
"RegionName",
'TRT_Ar')
168 volumeList = [
'TRT::Gas_Ar',
'TRT::GasMA_Ar']
169 kwargs.setdefault(
"VolumeList", volumeList)
170 kwargs.setdefault(
"ElectronCut", 30.0)
171 kwargs.setdefault(
"PositronCut", 30.0)
172 kwargs.setdefault(
"GammaCut", 0.05)
177 kwargs.setdefault(
"RegionName",
'TRT_Kr')
178 volumeList = [
'TRT::Gas_Kr',
'TRT::GasMA_Kr']
179 kwargs.setdefault(
"VolumeList", volumeList)
180 kwargs.setdefault(
"ElectronCut", 15.0)
181 kwargs.setdefault(
"PositronCut", 15.0)
182 kwargs.setdefault(
"GammaCut", 0.05)
187 kwargs.setdefault(
"RegionName",
'InDet')
188 volumeList = [
'Pixel::Pixel',
'SCT::SCT',
'TRT::TRT']
189 kwargs.setdefault(
"VolumeList", volumeList)
194 kwargs.setdefault(
"RegionName",
'CALO')
195 volumeList = [
'CALO::CALO',
'LArMgr::LAr::Endcap::Cryostat::Cylinder::Mixed',
'LArMgr::LAr::Barrel::Cryostat::MotherVolume',
'LArMgr::ModeratorTube',
'LArMgr::LAr::Endcap::Cryostat::MotherVolume']
196 kwargs.setdefault(
"VolumeList", volumeList)
201 kwargs.setdefault(
"RegionName",
'EMB')
202 volumeList = [
'LArMgr::LAr::EMB::STAC']
203 kwargs.setdefault(
"VolumeList", volumeList)
205 if '_EMV' not in flags.Sim.PhysicsList
and '_EMX' not in flags.Sim.PhysicsList:
207 kwargs.setdefault(
"ElectronCut", rangeEMB)
208 kwargs.setdefault(
"PositronCut", rangeEMB)
209 kwargs.setdefault(
"GammaCut", rangeEMB)
214 kwargs.setdefault(
"RegionName",
'EMEC')
215 volumeList = [
'LArMgr::LAr::EMEC::Mother']
216 kwargs.setdefault(
"VolumeList", volumeList)
218 if '_EMV' not in flags.Sim.PhysicsList
and '_EMX' not in flags.Sim.PhysicsList:
220 kwargs.setdefault(
"ElectronCut", rangeEMEC)
221 kwargs.setdefault(
"PositronCut", rangeEMEC)
222 kwargs.setdefault(
"GammaCut", rangeEMEC)
227 kwargs.setdefault(
"RegionName",
'HEC')
228 volumeList = [
'LArMgr::LAr::HEC::LiquidArgon']
229 kwargs.setdefault(
"VolumeList", volumeList)
231 if '_EMV' not in flags.Sim.PhysicsList
and '_EMX' not in flags.Sim.PhysicsList:
233 kwargs.setdefault(
"ElectronCut", rangeHEC)
234 kwargs.setdefault(
"PositronCut", rangeHEC)
235 kwargs.setdefault(
"GammaCut", rangeHEC)
240 kwargs.setdefault(
"RegionName",
'FCAL')
241 volumeList = [
'LArMgr::LAr::FCAL::LiquidArgonC']
242 kwargs.setdefault(
"VolumeList", volumeList)
243 kwargs.setdefault(
"ElectronCut", 0.03)
244 kwargs.setdefault(
"PositronCut", 0.03)
245 kwargs.setdefault(
"GammaCut", 0.03)
250 kwargs.setdefault(
"RegionName",
'EMECPara')
251 volumeList = [
'LArMgr::LAr::EMEC::Pos::InnerWheel',
'LArMgr::LAr::EMEC::Pos::OuterWheel',
252 'LArMgr::LAr::EMEC::Neg::InnerWheel',
'LArMgr::LAr::EMEC::Neg::OuterWheel']
253 kwargs.setdefault(
"VolumeList", volumeList)
255 if '_EMV' not in flags.Sim.PhysicsList
and '_EMX' not in flags.Sim.PhysicsList:
257 kwargs.setdefault(
"ElectronCut", rangeEMEC)
258 kwargs.setdefault(
"PositronCut", rangeEMEC)
259 kwargs.setdefault(
"GammaCut", rangeEMEC)
264 kwargs.setdefault(
"RegionName",
'FCALPara')
265 volumeList = [
'LArMgr::LAr::FCAL::Module1::Absorber']
266 kwargs.setdefault(
"VolumeList", volumeList)
267 kwargs.setdefault(
"ElectronCut", 0.03)
268 kwargs.setdefault(
"PositronCut", 0.03)
269 kwargs.setdefault(
"GammaCut", 0.03)
274 kwargs.setdefault(
"RegionName",
'FCAL2Para')
275 volumeList = [
'LArMgr::LAr::FCAL::Module2::Absorber',
'LArMgr::LAr::FCAL::Module3::Absorber']
276 kwargs.setdefault(
"VolumeList", volumeList)
277 kwargs.setdefault(
"ElectronCut", 0.03)
278 kwargs.setdefault(
"PositronCut", 0.03)
279 kwargs.setdefault(
"GammaCut", 0.03)
284 kwargs.setdefault(
"RegionName",
'PreSampLAr')
285 volumeList = [
'LArMgr::LAr::Endcap::Presampler::LiquidArgon']
286 kwargs.setdefault(
"VolumeList", volumeList)
291 kwargs.setdefault(
"RegionName",
'DeadMaterial')
294 if flags.GeoModel.Run
is LHCPeriod.Run1:
296 endRange = 47
if flags.Sim.BeamPipeSimMode
is not BeamPipeSimMode.Normal
else 49
298 if not flags.Detector.GeometryFwdRegion
and (flags.Detector.GeometryAFP
or flags.Detector.GeometryALFA
or flags.Detector.GeometryZDC):
300 sectionList = list(range(16,endRange))
301 sectionList += [ 51, 52, 53, 54 ]
304 endRange = 198
if flags.Sim.BeamPipeSimMode
is not BeamPipeSimMode.Normal
else 200
306 if not flags.Detector.GeometryFwdRegion
and (flags.Detector.GeometryAFP
or flags.Detector.GeometryALFA
or flags.Detector.GeometryZDC):
308 sectionList = list(range(191,endRange))
309 if flags.GeoModel.Run > LHCPeriod.Run4:
310 print(
'DeadMaterialPhysicsRegionToolCfg: WARNING check that RUN2 beampipe volume names are correct for this geometry tag')
311 for section
in sectionList:
312 volumeList += [
'BeamPipe::SectionF'+str(section)]
313 volumeList += [
'LArMgr::LAr::Endcap::Cryostat::Cylinder',
314 'LArMgr::LAr::Endcap::Cryostat::Cylinder::Mixed',
315 'LArMgr::LAr::Endcap::Cryostat::Cone::Mixed',
316 'LArMgr::LAr::Endcap::Cryostat::Cone',
317 'DiskShieldingPlugs',
'ToroidShieldingInnerPlugs',
318 'ForwardShieldingMainCylinder']
319 kwargs.setdefault(
"VolumeList", volumeList)
320 kwargs.setdefault(
"ElectronCut", 1.0)
321 kwargs.setdefault(
"PositronCut", 1.0)
322 kwargs.setdefault(
"GammaCut", 1.0)
328 kwargs.setdefault(
"RegionName",
'DriftWall')
329 volumeList = [
'Muon::MDTDriftWall' if not flags.Muon.usePhaseIIGeoSetup
else 'MuonR4::MDTDriftWall' ]
330 kwargs.setdefault(
"VolumeList", volumeList)
331 kwargs.setdefault(
"ElectronCut", 0.05)
332 kwargs.setdefault(
"PositronCut", 0.05)
337 kwargs.setdefault(
"RegionName",
'DriftWall1')
338 volumeList = [
'Muon::Endplug' if not flags.Muon.usePhaseIIGeoSetup
else 'MuonR4::Endplug']
339 kwargs.setdefault(
"VolumeList", volumeList)
340 kwargs.setdefault(
"ElectronCut", 1.0)
341 kwargs.setdefault(
"PositronCut", 1.0)
346 kwargs.setdefault(
"RegionName",
'DriftWall2')
347 volumeList = [
'Muon::SensitiveGas' if not flags.Muon.usePhaseIIGeoSetup
else 'MuonR4::MDTDriftGas']
348 kwargs.setdefault(
"VolumeList", volumeList)
349 kwargs.setdefault(
"ElectronCut", 1.0)
350 kwargs.setdefault(
"PositronCut", 1.0)
355 kwargs.setdefault(
"RegionName",
'MuonSystemFastRegion')
357 from SimulationConfig.SimEnums
import CavernBackground
358 if flags.Sim.CavernBackground
in [CavernBackground.SignalWorld, CavernBackground.WriteWorld]:
359 if flags.GeoModel.Run < LHCPeriod.Run4:
360 volumeList += [
'BeamPipe::BeamPipe',
'IDET::IDET']
362 volumeList += [
'BeamPipe::BeamPipe',
'ITK::ITK']
363 volumeList = [
'Muon::MuonSys']
364 kwargs.setdefault(
"VolumeList", volumeList)
365 kwargs.setdefault(
"ElectronCut", 1.0)
366 kwargs.setdefault(
"PositronCut", 1.0)
371 kwargs.setdefault(
"RegionName",
'MuonSys')
372 volumeList = [
'Muon::MuonSys']
373 kwargs.setdefault(
"VolumeList", volumeList)
374 kwargs.setdefault(
"ElectronCut", 0.1)
375 kwargs.setdefault(
"PositronCut", 0.1)
376 kwargs.setdefault(
"GammaCut", 0.1)
382 kwargs.setdefault(
"RegionName",
'SX1')
383 volumeList = [
'CavernInfra::SX1Air']
384 kwargs.setdefault(
"VolumeList", volumeList)
385 kwargs.setdefault(
"ElectronCut", 2000.)
386 kwargs.setdefault(
"PositronCut", 2000.)
387 kwargs.setdefault(
"GammaCut", 2000.)
392 kwargs.setdefault(
"RegionName",
'BEDROCK')
393 volumeList = [
'CavernInfra::BEDROCK']
394 kwargs.setdefault(
"VolumeList", volumeList)
395 kwargs.setdefault(
"ElectronCut", 1000000.)
396 kwargs.setdefault(
"PositronCut", 1000000.)
397 kwargs.setdefault(
"GammaCut", 1000000.)
402 kwargs.setdefault(
"RegionName",
'CAV_SHAFTS_CONC')
403 volumeList = [
'CavernInfra::CAV_SHAFTS_CONC']
404 kwargs.setdefault(
"VolumeList", volumeList)
405 kwargs.setdefault(
"ElectronCut", 150.)
406 kwargs.setdefault(
"PositronCut", 150.)
407 kwargs.setdefault(
"GammaCut", 150.)
424 kwargs.setdefault(
"RegionName",
'SCTSiliconRegion')
425 volumeList = [
'SCT::ECSensor0']
426 kwargs.setdefault(
"VolumeList", volumeList)
427 kwargs.setdefault(
"ElectronCut", 0.01)
void print(char *figname, TCanvas *c1)
Concrete Tool to create G4 Physics Regions.
DriftWall2PhysicsRegionToolCfg(flags, name='DriftWall2PhysicsRegionTool', **kwargs)
BeampipeFwdCutPhysicsRegionToolCfg(flags, name='BeampipeFwdCutPhysicsRegionTool', **kwargs)
ITkPixelPhysicsRegionToolCfg(flags, name='ITkPixelPhysicsRegionTool', **kwargs)
FCALParaPhysicsRegionToolCfg(flags, name='FCALParaPhysicsRegionTool', **kwargs)
HGTDPhysicsRegionToolCfg(flags, name='HGTDPhysicsRegionTool', **kwargs)
PreSampLArPhysicsRegionToolCfg(flags, name='PreSampLArPhysicsRegionTool', **kwargs)
MuonPhysicsRegionToolCfg(flags, name="MuonPhysicsRegionTool", **kwargs)
DriftWall1PhysicsRegionToolCfg(flags, name='DriftWall1PhysicsRegionTool', **kwargs)
SX1PhysicsRegionToolCfg(flags, name='SX1PhysicsRegionTool', **kwargs)
TRT_ArPhysicsRegionToolCfg(flags, name='TRT_ArPhysicsRegionTool', **kwargs)
EMECPhysicsRegionToolCfg(flags, name='EMECPhysicsRegionTool', **kwargs)
PixelPhysicsRegionToolCfg(flags, name='PixelPhysicsRegionTool', **kwargs)
SCTSiliconPhysicsRegionToolCfg(flags, name='SCTSiliconPhysicsRegionTool', **kwargs)
Deliberately leaving this commented out for now as it may be needed in the future def CavernShaftsAir...
EMECParaPhysicsRegionToolCfg(flags, name='EMECParaPhysicsRegionTool', **kwargs)
SCTPhysicsRegionToolCfg(flags, name='SCTPhysicsRegionTool', **kwargs)
ITkStripPhysicsRegionToolCfg(flags, name='ITkStripPhysicsRegionTool', **kwargs)
CavernShaftsConcretePhysicsRegionToolCfg(flags, name='CavernShaftsConcretePhysicsRegionTool', **kwargs)
FCAL2ParaPhysicsRegionToolCfg(flags, name='FCAL2ParaPhysicsRegionTool', **kwargs)
DeadMaterialPhysicsRegionToolCfg(flags, name='DeadMaterialPhysicsRegionTool', **kwargs)
FwdRegionPhysicsRegionToolCfg(flags, name='FwdRegionPhysicsRegionTool', **kwargs)
MuonSystemFastPhysicsRegionToolCfg(flags, name='MuonSystemFastPhysicsRegionTool', **kwargs)
TRT_KrPhysicsRegionToolCfg(flags, name='TRT_KrPhysicsRegionTool', **kwargs)
HECPhysicsRegionToolCfg(flags, name='HECPhysicsRegionTool', **kwargs)
FCALPhysicsRegionToolCfg(flags, name='FCALPhysicsRegionTool', **kwargs)
InDetPhysicsRegionToolCfg(flags, name='InDetPhysicsRegionTool', **kwargs)
FWDBeamLinePhysicsRegionToolCfg(flags, name='FWDBeamLinePhysicsRegionTool', **kwargs)
CALOPhysicsRegionToolCfg(flags, name='CALOPhysicsRegionTool', **kwargs)
EMBPhysicsRegionToolCfg(flags, name='EMBPhysicsRegionTool', **kwargs)
DriftWallPhysicsRegionToolCfg(flags, name='DriftWallPhysicsRegionTool', **kwargs)
TRTPhysicsRegionToolCfg(flags, name='TRTPhysicsRegionTool', **kwargs)
BedrockPhysicsRegionToolCfg(flags, name='BedrockPhysicsRegionTool', **kwargs)
RegionCreatorCfg(flags, name='RegionCreator', **kwargs)