File indexing completed on 2026-10-05 08:17:24
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 """
0013
0014 Subtest using CLICSid showing the usage of the G4Particle gun using
0015 the Geant4GeneratorWrapper object.
0016
0017 @author M.Frank
0018 @version 1.0
0019
0020 """
0021
0022 import logging
0023
0024 logging.basicConfig(format='%(levelname)s: %(message)s', level=logging.INFO)
0025 logger = logging.getLogger(__name__)
0026
0027
0028 def run():
0029 import DDG4
0030 import CLICSid
0031 from DDG4 import OutputLevel as Output
0032
0033 args = DDG4.CommandLine()
0034 sid = CLICSid.CLICSid()
0035 sid.loadGeometry()
0036 sid.geant4.printDetectors()
0037 kernel = sid.kernel
0038 kernel.UI = "UI"
0039 if args.macro:
0040 ui = sid.geant4.setupCshUI(macro=args.macro)
0041 else:
0042 ui = sid.geant4.setupCshUI()
0043
0044 sid.setupField(quiet=False)
0045 DDG4.importConstants(kernel.detectorDescription(), debug=False)
0046
0047 prt = DDG4.EventAction(kernel, 'Geant4ParticlePrint/ParticlePrint')
0048 prt.OutputLevel = Output.INFO
0049 prt.OutputType = 3
0050 kernel.eventAction().adopt(prt)
0051
0052 gen = DDG4.GeneratorAction(kernel, "Geant4GeneratorActionInit/GenerationInit")
0053 kernel.generatorAction().adopt(gen)
0054 logger.info("# First particle generator: gun")
0055 gun = DDG4.GeneratorAction(kernel, "Geant4GeneratorWrapper/Gun")
0056 gun.Uses = 'G4ParticleGun'
0057 gun.Mask = 1
0058 kernel.generatorAction().adopt(gun)
0059
0060
0061 merger = DDG4.GeneratorAction(kernel, "Geant4InteractionMerger/InteractionMerger")
0062 merger.enableUI()
0063 kernel.generatorAction().adopt(merger)
0064
0065
0066 part = DDG4.GeneratorAction(kernel, "Geant4ParticleHandler/ParticleHandler")
0067 kernel.generatorAction().adopt(part)
0068 part.OutputLevel = Output.INFO
0069 part.enableUI()
0070 user = DDG4.Action(kernel, "Geant4TCUserParticleHandler/UserParticleHandler")
0071 user.TrackingVolume_Zmax = DDG4.EcalEndcap_zmin
0072 user.TrackingVolume_Rmax = DDG4.EcalBarrel_rmin
0073 user.enableUI()
0074 part.adopt(user)
0075
0076 sid.setupDetectors(debug_volid=args.debug_volid)
0077 sid.setupPhysics('QGSP_BERT')
0078 sid.test_config()
0079 gun.generator()
0080
0081 if args.events:
0082 ui.Commands = ['/run/beamOn ' + str(args.events), '/ddg4/UI/terminate']
0083
0084 kernel.run()
0085 kernel.terminate()
0086
0087
0088 if __name__ == "__main__":
0089 run()