327 def PreUserTrackingAction(self,atrack):
328 global trackHistory
329
330 part = atrack.GetDynamicParticle()
331 pid = part.GetPDGcode()
332
333 moid = atrack.GetParentID()
334 trackHistory[atrack.GetTrackID()]=[pid,moid]
335 tmoid = str(moid)
336 if moid in trackHistory:
337 mo = pdg.GetParticle(trackHistory[moid][0])
338 if mo : tmoid = mo.GetName()
339 tid = str(pid)
340 if pdg.GetParticle(pid): tid = pdg.GetParticle(pid).GetName()
341 mom = atrack.GetMomentum()
342 p = ROOT.TMath.Sqrt(mom.x*mom.x+mom.y*mom.y+mom.z*mom.z)
343 if debug and abs(pid)==13: print('track',atrack.GetTrackID(),tid,tmoid,moid,atrack.GetKineticEnergy()/MeV,p/MeV)
344 if pid==12:
345 if moid in trackHistory:
346 gmoid = trackHistory[moid][1]
347 if gmoid in trackHistory:
348 tgmoid = str(gmoid)
349 mo = pdg.GetParticle(trackHistory[gmoid][0])
350 if mo : tgmoid = mo.GetName()
351 print(' <--',gmoid,tgmoid)
352 gmoid = trackHistory[gmoid][1]
353 if gmoid in trackHistory:
354 tgmoid = str(gmoid)
355 mo = pdg.GetParticle(trackHistory[gmoid][0])
356 if mo : tgmoid = mo.GetName()
357 print(' <--',gmoid,tgmoid)
358
359 qed = pid in qedlist
360 if atrack.GetKineticEnergy()/GeV < ecut and (qed or allPart):
361 G4TrackingManager().SetStoreTrajectory(False)
362 atrack.SetTrackStatus(atrack.GetTrackStatus().fStopAndKill)
363