Newer
Older
dd4hep simulation example setup using the python configuration
@author M.Frank
@version 1.0
"""
Markus Frank
committed
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()
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
Markus Frank
committed
gen.OutputLevel = Output.DEBUG
prim_vtx = DDG4.std_vector('dd4hep::sim::Geant4Vertex*')()
parts = gen.new_particles()
Markus Frank
committed
ret = 1
while ret:
try:
ret = gen.readParticles(0,prim_vtx,parts)
except Exception,X:
Markus Frank
committed
logging.info( '\nException: readParticles: %s',str(X))
Markus Frank
committed
for v in prim_vtx:
Markus Frank
committed
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))
Markus Frank
committed
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)
Markus Frank
committed
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:
Markus Frank
committed
logging.info( 'No input file given. Try again....')