Skip to content
Snippets Groups Projects
readHEPMC.py 1.83 KiB
Newer Older
Markus Frank's avatar
Markus Frank committed
dd4hep simulation example setup using the python configuration

@author  M.Frank
@version 1.0

"""
import logging
logging.basicConfig(format='%(levelname)s: %(message)s', level=logging.DEBUG)

def run(input_file):
  import DDG4
  from DDG4 import OutputLevel as Output
  kernel = DDG4.Kernel()
Markus Frank's avatar
Markus Frank committed
  description = kernel.detectorDescription()
  gen = DDG4.GeneratorAction(kernel,"Geant4InputAction/Input")
  kernel.generatorAction().adopt(gen)
  gen.Input = "Geant4EventReaderHepMC|/home/frankm/SW/data/hepmc_geant4.dat"
  gen.Input = "Geant4EventReaderHepMC|/home/frankm/SW/data/"
  gen.Input = "Geant4EventReaderHepMC|"+input_file
  gen.HaveAbort = False
Markus Frank's avatar
Markus Frank committed
  prim_vtx = DDG4.std_vector('dd4hep::sim::Geant4Vertex*')()
  parts = gen.new_particles()
    try:
      ret = gen.readParticles(0,prim_vtx,parts)
    except Exception,X:
      logging.info( '\nException: readParticles: %s',str(X))
      ret = None
        logging.info( 'Mask:%04X (X:%8.2g,Y:%8.2g,Z:%8.2g) time:%8.2g Outgoing:%4d particles',
                      v.mask,v.x,v.y,v.z,v.time,len(v.out))
        logging.info( 'Mask:%04X ID:%5d PDG-id:%8d Charge:%1d Mass:%8.3g Momentum:(%8.2g,%8.2g,%8.2g) '\
                      'Vertex:(%8.2g,%8.2g,%8.2g) NDau:%2d Status:%08X',
                      p.mask,p.id,p.pdgID,int(p.charge3()),p.mass,p.psx,p.psy,p.psz,\
                      p.vsx,p.vsy,p.vsz,len(p.daughters),p.status)
      parts.clear()
    else:
      logging.info( '*** End of recordset or read failure.....')
    logging.info( 132*'*')
if __name__ == "__main__":
  import sys
  input_file = None
  if len(sys.argv) > 1:
    input_file = sys.argv[1]
    sys.exit(run(input_file))
  else:
    logging.info( 'No input file given. Try again....')
    sys.exit(2)  # ENOENT