Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-02-22 09:38:17

0001 """
0002 
0003    Subtest using LHeD showing the usage of the G4Particle gun using
0004    the Geant4GeneratorWrapper object.
0005 
0006    @author  M.Frank
0007    @version 1.0
0008 
0009 """
0010 from __future__ import absolute_import, unicode_literals
0011 import logging
0012 
0013 logging.basicConfig(format='%(levelname)s: %(message)s', level=logging.INFO)
0014 logger = logging.getLogger(__name__)
0015 
0016 
0017 def run():
0018   import LHeD
0019   import DDG4
0020   from DDG4 import OutputLevel as Output
0021 
0022   lhed = LHeD.LHeD()
0023   geant4 = lhed.geant4
0024   kernel = lhed.kernel
0025   lhed.loadGeometry()
0026   geant4.printDetectors()
0027   kernel.UI = "UI"
0028   geant4.setupCshUI()
0029   lhed.setupField(quiet=False)
0030   DDG4.importConstants(kernel.detectorDescription(), debug=False)
0031 
0032   prt = DDG4.EventAction(kernel, 'Geant4ParticlePrint/ParticlePrint')
0033   prt.OutputLevel = Output.INFO
0034   prt.OutputType = 3  # Print both: table and tree
0035   kernel.eventAction().adopt(prt)
0036 
0037   gen = DDG4.GeneratorAction(kernel, "Geant4GeneratorActionInit/GenerationInit")
0038   kernel.generatorAction().adopt(gen)
0039   logger.info("#  First particle generator: gun")
0040   gun = DDG4.GeneratorAction(kernel, "Geant4GeneratorWrapper/Gun")
0041   gun.Uses = 'G4ParticleGun'
0042   gun.Mask = 1
0043   kernel.generatorAction().adopt(gun)
0044 
0045   # Merge all existing interaction records
0046   merger = DDG4.GeneratorAction(kernel, "Geant4InteractionMerger/InteractionMerger")
0047   merger.enableUI()
0048   kernel.generatorAction().adopt(merger)
0049 
0050   # And handle the simulation particles.
0051   part = DDG4.GeneratorAction(kernel, "Geant4ParticleHandler/ParticleHandler")
0052   kernel.generatorAction().adopt(part)
0053   part.OutputLevel = Output.INFO
0054   part.enableUI()
0055   user = DDG4.Action(kernel, "Geant4TCUserParticleHandler/UserParticleHandler")
0056   user.TrackingVolume_Zmax = DDG4.EcalEndcap_zmin
0057   user.TrackingVolume_Rmax = DDG4.EcalBarrel_rmin
0058   user.enableUI()
0059   part.adopt(user)
0060 
0061   lhed.setupDetectors()
0062   lhed.setupPhysics('QGSP_BERT')
0063   lhed.test_config()
0064   gun.generator()  # Instantiate gun to be able to set properties from G4 prompt
0065   kernel.run()
0066   kernel.terminate()
0067 
0068 
0069 if __name__ == "__main__":
0070   run()