From 0d5951a9537a4082199a40bf9e024f444f978603 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck <wouter.deconinck@umanitoba.ca> Date: Wed, 6 Oct 2021 23:21:34 +0000 Subject: [PATCH] null pointer safety on PDG lookup --- benchmarks/imaging_ecal/scripts/draw_cluster.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/benchmarks/imaging_ecal/scripts/draw_cluster.py b/benchmarks/imaging_ecal/scripts/draw_cluster.py index 6ad5c05a..02cc7683 100644 --- a/benchmarks/imaging_ecal/scripts/draw_cluster.py +++ b/benchmarks/imaging_ecal/scripts/draw_cluster.py @@ -156,8 +156,12 @@ if __name__ == '__main__': dfdecaymcp = dftemp.copy() for iptl in [0, len(dfdecaymcp) - 1]: infoptl = pdgbase.GetParticle(int(dfdecaymcp['pid'].iloc[iptl])) - print("{} Decaying particle = {}, pdgcode = {}, charge = {}, mass = {}"\ - .format(iptl, infoptl.GetName(), infoptl.PdgCode(), infoptl.Charge(), infoptl.Mass())) + if infoptl: + print("{} Decaying particle = {}, pdgcode = {}, charge = {}, mass = {}"\ + .format(iptl, infoptl.GetName(), infoptl.PdgCode(), infoptl.Charge(), infoptl.Mass())) + else: + print("{} Decaying particle unknown pdgcode {}"\ + .format(iptl, int(dfdecaymcp['pid'].iloc[iptl]))) # Calculate geometric variables of decaying particles dfdecaymcp['r'] = np.sqrt(dfdecaymcp['vex'].values**2 + dfdecaymcp['vey'].values**2 + dfdecaymcp['vez'].values**2) dfdecaymcp['phi'] = np.arctan2(dfdecaymcp['vey'].values, dfdecaymcp['vex'].values)*1000. @@ -168,8 +172,12 @@ if __name__ == '__main__': dfmcp = get_mcp_simple(args.file, args.iev, 'mcparticles').iloc[0] #pdgbase = ROOT.TDatabasePDG() inpart = pdgbase.GetParticle(int(dfmcp['pid'])) - print("Incoming particle = {}, pdgcode = {}, charge = {}, mass = {}"\ - .format(inpart.GetName(), inpart.PdgCode(), inpart.Charge(), inpart.Mass())) + if inpart: + print("Incoming particle = {}, pdgcode = {}, charge = {}, mass = {}"\ + .format(inpart.GetName(), inpart.PdgCode(), inpart.Charge(), inpart.Mass())) + else: + print("Incoming particle unknown pdgcode {}"\ + .format(int(dfmcp['pid']))) # neutral particle, no need to consider magnetic field if np.isclose(inpart.Charge(), 0., rtol=1e-5): vec = dfmcp[['px', 'py', 'pz']].values -- GitLab