Skip to content
Snippets Groups Projects
FCC_Hcal.py 1.29 KiB
Newer Older
Markus Frank's avatar
Markus Frank committed
import os, time, DDG4
from DDG4 import OutputLevel as Output
from SystemOfUnits import *
#
#
"""

Markus Frank's avatar
Markus Frank committed
   dd4hep example setup using the python configuration
Markus Frank's avatar
Markus Frank committed
   \author  M.Frank
   \version 1.0
Markus Frank's avatar
Markus Frank committed

"""
def run():
Markus Frank's avatar
Markus Frank committed
  kernel = DDG4.Kernel()
Markus Frank's avatar
Markus Frank committed
  install_dir = os.environ['DD4hepINSTALL']
  example_dir = install_dir+'/examples/DDG4/examples';
  kernel.setOutputLevel('Geant4Converter',Output.DEBUG)
  kernel.setOutputLevel('RootOutput',Output.INFO)
  kernel.setOutputLevel('ShellHandler',Output.DEBUG)
  kernel.setOutputLevel('Gun',Output.INFO)
  kernel.loadGeometry("file:"+install_dir+"/examples/ClientTests/compact/FCC_HcalBarrel.xml")

  geant4 = DDG4.Geant4(kernel)
  geant4.printDetectors()
  geant4.setupCshUI()
  # Configure field
  field = geant4.setupTrackingField(prt=True)
Markus Frank's avatar
Markus Frank committed
  # Configure I/O
  evt_root = geant4.setupROOTOutput('RootOutput','FCC_'+time.strftime('%Y-%m-%d_%H-%M'),mc_truth=False)
Markus Frank's avatar
Markus Frank committed
  # Setup particle gun
  geant4.setupGun("Gun",particle='pi-',energy=100*GeV,multiplicity=1)
Markus Frank's avatar
Markus Frank committed
  # Now the calorimeters
  seq,act = geant4.setupTracker('HcalBarrel')
  seq,act = geant4.setupDetector('ContainmentShell','Geant4EscapeCounter')
Markus Frank's avatar
Markus Frank committed
  # Now build the physics list:
  phys = kernel.physicsList()
  phys.extends = 'QGSP_BERT'
  phys.enableUI()
  phys.dump()
Markus Frank's avatar
Markus Frank committed
  # and run
  geant4.execute()
Markus Frank's avatar
Markus Frank committed

if __name__ == "__main__":
  run()