def run(input_file): import DDG4 from DDG4 import OutputLevel as Output kernel = DDG4.Kernel() 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.OutputLevel = Output.DEBUG gen.HaveAbort = False prim_vtx = DDG4.std_vector('dd4hep::sim::Geant4Vertex*')() parts = gen.new_particles() ret = 1 while ret: try: ret = gen.readParticles(0, prim_vtx, parts) except Exception, X: print '\nException: readParticles:', str(X) ret = None if ret: for v in prim_vtx: print '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),) for p in parts: print '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: print '*** End of recordset or read failure.....' print 132 * '*'
def run(input_file): import DDG4 from DDG4 import OutputLevel as Output kernel = DDG4.Kernel() description = kernel.detectorDescription() gen = DDG4.GeneratorAction(kernel,"Geant4InputAction/Input") kernel.generatorAction().adopt(gen) gen.Input = "Geant4EventReaderHepMC|"+input_file gen.OutputLevel = Output.DEBUG gen.HaveAbort = False prim_vtx = DDG4.std_vector('dd4hep::sim::Geant4Vertex*')() parts = gen.new_particles() ret = 1 evtid=0 while ret: try: ret = gen.readParticles(evtid,prim_vtx,parts) evtid = evtid + 1 except Exception,X: logging.info( '\nException: readParticles: %s',str(X)) ret = None if ret: for v in prim_vtx: 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)) for p in parts: 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*'*')
def run(input_file): import DDG4 from DDG4 import OutputLevel as Output kernel = DDG4.Kernel() kernel.detectorDescription() gen = DDG4.GeneratorAction(kernel, "Geant4InputAction/Input") kernel.generatorAction().adopt(gen) gen.Input = "Geant4EventReaderHepMC|" + input_file gen.OutputLevel = Output.DEBUG gen.HaveAbort = False prim_vtx = DDG4.std_vector(str('dd4hep::sim::Geant4Vertex*'))() parts = gen.new_particles() ret = 1 evtid = 0 while ret: try: parts.clear() prim_vtx.clear() ret = gen.readParticles(evtid, prim_vtx, parts) evtid = evtid + 1 except Exception as X: logger.error('\nException: readParticles: %s', str(X)) if evtid > 0: os._exit(0) if ret: for v in prim_vtx: logger.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)) for p in parts: logger.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: logger.info('*** End of recordset or read failure.....') logger.info(132 * '*') return 0