Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:14:44

0001 # ==========================================================================
0002 #  AIDA Detector description implementation
0003 # --------------------------------------------------------------------------
0004 # Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN)
0005 # All rights reserved.
0006 #
0007 # For the licensing terms see $DD4hepINSTALL/LICENSE.
0008 # For the list of contributors see $DD4hepINSTALL/doc/CREDITS.
0009 #
0010 # ==========================================================================
0011 #
0012 from __future__ import absolute_import, unicode_literals
0013 import os
0014 import time
0015 import DDG4
0016 from DDG4 import OutputLevel as Output
0017 from g4units import GeV
0018 
0019 """
0020 
0021    dd4hep simulation example setup using the python configuration
0022 
0023    @author  M.Frank
0024    @version 1.0
0025 
0026 """
0027 
0028 
0029 def run():
0030   args = DDG4.CommandLine()
0031   kernel = DDG4.Kernel()
0032   install_dir = os.environ['DD4hepExamplesINSTALL']
0033   kernel.loadGeometry(str("file:" + install_dir + "/examples/DDCAD/compact/DD4hep_Issue_1134.xml"))
0034 
0035   DDG4.importConstants(kernel.detectorDescription(), debug=False)
0036   geant4 = DDG4.Geant4(kernel, tracker='Geant4TrackerCombineAction')
0037   geant4.printDetectors()
0038   # Configure UI
0039   if args.macro:
0040     ui = geant4.setupCshUI(macro=args.macro)
0041   else:
0042     ui = geant4.setupCshUI()
0043   if args.batch:
0044     ui.Commands = ['/run/beamOn ' + str(args.events), '/ddg4/UI/terminate']
0045 
0046   # Configure field
0047   geant4.setupTrackingField(prt=True)
0048   # Configure Event actions
0049   prt = DDG4.EventAction(kernel, 'Geant4ParticlePrint/ParticlePrint')
0050   prt.OutputLevel = Output.DEBUG
0051   prt.OutputType = 3  # Print both: table and tree
0052   kernel.eventAction().adopt(prt)
0053 
0054   # Configure G4 geometry setup
0055   seq, act = geant4.addDetectorConstruction("Geant4DetectorGeometryConstruction/ConstructGeo")
0056   act.DebugVolumes = True
0057   act.DebugShapes = True
0058   seq, act = geant4.addDetectorConstruction("Geant4DetectorSensitivesConstruction/ConstructSD")
0059 
0060   # Configure I/O
0061   geant4.setupROOTOutput('RootOutput', 'DD4hep_Issue_1134_' + time.strftime('%Y-%m-%d_%H-%M'))
0062   # Setup particle gun
0063   gun = geant4.setupGun("Gun", particle='e+', energy=20 * GeV, multiplicity=1)
0064   gun.OutputLevel = Output.INFO
0065   # Now build the physics list:
0066   phys = geant4.setupPhysics('QGSP_BERT')
0067   ph = DDG4.PhysicsList(kernel, str('Geant4PhysicsList/Myphysics'))
0068   ph.addParticleConstructor(str('G4Geantino'))
0069   ph.enableUI()
0070   phys.adopt(ph)
0071   geant4.execute()
0072 
0073 
0074 if __name__ == "__main__":
0075   run()