From aae18a62889b61784e06b0c8c7642e7c5a1761b2 Mon Sep 17 00:00:00 2001 From: sungbinoh Date: Mon, 20 Oct 2025 10:33:12 -0500 Subject: [PATCH 1/9] Adding SRTrkLikePID for likelihod based PID --- sbnanaobj/StandardRecord/SRTrkLikePID.cxx | 34 +++++++++++++++++++++++ sbnanaobj/StandardRecord/SRTrkLikePID.h | 29 +++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 sbnanaobj/StandardRecord/SRTrkLikePID.cxx create mode 100644 sbnanaobj/StandardRecord/SRTrkLikePID.h diff --git a/sbnanaobj/StandardRecord/SRTrkLikePID.cxx b/sbnanaobj/StandardRecord/SRTrkLikePID.cxx new file mode 100644 index 00000000..c0c5d37f --- /dev/null +++ b/sbnanaobj/StandardRecord/SRTrkLikePID.cxx @@ -0,0 +1,34 @@ +//////////////////////////////////////////////////////////////////////// +// \file SRTrkLikePID.cxx +// \brief An SRTrkLikePID is a high level track ParticlePID object for +// for larana Chi2ParticleID results. +//////////////////////////////////////////////////////////////////////// + +#include "sbnanaobj/StandardRecord/SRTrkLikePID.h" + +#include + +namespace caf +{ + + SRTrkLikePID::SRTrkLikePID(): + pdg(-999), + pid_ndof(-99), + lambda_muon(std::numeric_limits::signaling_NaN()), + lambda_pion(std::numeric_limits::signaling_NaN()), + lambda_proton(std::numeric_limits::signaling_NaN()), + { } + + SRTrkLikePID::~SRTrkLikePID(){ } + + void SRTrkLikePID::setDefault() + { + pdg = -5; + pid_ndof = -5; + lambda_muon = -5.0; + lambda_pion = -5.0; + lambda_proton = -5.0; + } + +} // end namespace caf +//////////////////////////////////////////////////////////////////////// diff --git a/sbnanaobj/StandardRecord/SRTrkLikePID.h b/sbnanaobj/StandardRecord/SRTrkLikePID.h new file mode 100644 index 00000000..a482cf17 --- /dev/null +++ b/sbnanaobj/StandardRecord/SRTrkLikePID.h @@ -0,0 +1,29 @@ +//////////////////////////////////////////////////////////////////////// +// \file SRTrkLikePID.h +//////////////////////////////////////////////////////////////////////// +#ifndef SRTRKCHI2PID_H +#define SRTRKCHI2PID_H + +namespace caf +{ + /// Track PID from dE/dx v. likelihood from dE/dx PDF measured with residual range-based kinetic energy and hit pitch + class SRTrkLikePID + { + public: + + SRTrkLikePID(); + virtual ~SRTrkLikePID(); + + int pdg; ///< Likelihood PID pdg + int pid_ndof; ///< Number of degress of freedom in likelihood PID + float lambda_muon; ///< Sum of -lnL/L_max (muon hypothesis) + float lambda_pion; ///< Sum of -lnL/L_max (charged pion hypothesis) + float lambda_proton; ///< Sum of -lnL/L_max (proton hypothesis) + + void setDefault(); + }; + +} // end namespace + +#endif // SRTRKCHI2PID_H +////////////////////////////////////////////////////////////////////////////// From efc6a8dd9e60485308fa1136b328ed4c9d18a27e Mon Sep 17 00:00:00 2001 From: sungbinoh Date: Mon, 20 Oct 2025 10:55:08 -0500 Subject: [PATCH 2/9] More updates for TrkLikePID --- sbnanaobj/StandardRecord/SRTrack.h | 2 ++ sbnanaobj/StandardRecord/SRTrkLikePID.cxx | 4 ++-- sbnanaobj/StandardRecord/SRTrkLikePID.h | 6 +++--- sbnanaobj/StandardRecord/classes_def.xml | 3 ++- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/sbnanaobj/StandardRecord/SRTrack.h b/sbnanaobj/StandardRecord/SRTrack.h index c93f8c65..01189e09 100644 --- a/sbnanaobj/StandardRecord/SRTrack.h +++ b/sbnanaobj/StandardRecord/SRTrack.h @@ -8,6 +8,7 @@ #include "sbnanaobj/StandardRecord/SRTrackTruth.h" #include "sbnanaobj/StandardRecord/SRTrkChi2PID.h" +#include "sbnanaobj/StandardRecord/SRTrkLikePID.h" #include "sbnanaobj/StandardRecord/SRTrkMCS.h" #include "sbnanaobj/StandardRecord/SRTrkRange.h" #include "sbnanaobj/StandardRecord/SRCRTHitMatch.h" @@ -45,6 +46,7 @@ namespace caf SRVector3D end; ///< End point of track SRTrkChi2PID chi2pid[3]; ///< Per-plane Chi2 Particle ID + SRTrkLikePID likepid[3]; ///< Per-plane likelihood-based Particle ID variabeles (lambda = \Sigma -lnL/L_max where \Sigma is done over hits) SRTrackCalo calo[3]; ///< Per-plane Calorimetry information Plane_t bestplane; ///< Plane index with the most hits. -1 if no calorimetry diff --git a/sbnanaobj/StandardRecord/SRTrkLikePID.cxx b/sbnanaobj/StandardRecord/SRTrkLikePID.cxx index c0c5d37f..aae28719 100644 --- a/sbnanaobj/StandardRecord/SRTrkLikePID.cxx +++ b/sbnanaobj/StandardRecord/SRTrkLikePID.cxx @@ -1,7 +1,7 @@ //////////////////////////////////////////////////////////////////////// // \file SRTrkLikePID.cxx // \brief An SRTrkLikePID is a high level track ParticlePID object for -// for larana Chi2ParticleID results. +// for larana LikelihoodPIDAlg results. //////////////////////////////////////////////////////////////////////// #include "sbnanaobj/StandardRecord/SRTrkLikePID.h" @@ -16,7 +16,7 @@ namespace caf pid_ndof(-99), lambda_muon(std::numeric_limits::signaling_NaN()), lambda_pion(std::numeric_limits::signaling_NaN()), - lambda_proton(std::numeric_limits::signaling_NaN()), + lambda_proton(std::numeric_limits::signaling_NaN()) { } SRTrkLikePID::~SRTrkLikePID(){ } diff --git a/sbnanaobj/StandardRecord/SRTrkLikePID.h b/sbnanaobj/StandardRecord/SRTrkLikePID.h index a482cf17..375c5968 100644 --- a/sbnanaobj/StandardRecord/SRTrkLikePID.h +++ b/sbnanaobj/StandardRecord/SRTrkLikePID.h @@ -1,8 +1,8 @@ //////////////////////////////////////////////////////////////////////// // \file SRTrkLikePID.h //////////////////////////////////////////////////////////////////////// -#ifndef SRTRKCHI2PID_H -#define SRTRKCHI2PID_H +#ifndef SRTRKLIKEPID_H +#define SRTRKLIKEPID_H namespace caf { @@ -25,5 +25,5 @@ namespace caf } // end namespace -#endif // SRTRKCHI2PID_H +#endif // SRTRKLIKEPID_H ////////////////////////////////////////////////////////////////////////////// diff --git a/sbnanaobj/StandardRecord/classes_def.xml b/sbnanaobj/StandardRecord/classes_def.xml index 9a0de728..edaaae2e 100644 --- a/sbnanaobj/StandardRecord/classes_def.xml +++ b/sbnanaobj/StandardRecord/classes_def.xml @@ -115,7 +115,8 @@ - + + From c59929675523b3da627a98b1948ee4961dbb60b3 Mon Sep 17 00:00:00 2001 From: sungbinoh Date: Tue, 21 Oct 2025 10:00:41 -0500 Subject: [PATCH 3/9] updating SRTrkLikePID to SRTrkLikelihoodPID --- .../{SRTrkLikePID.cxx => SRTrkLikelihoodPID.cxx} | 12 ++++++------ .../{SRTrkLikePID.h => SRTrkLikelihoodPID.h} | 14 +++++++------- 2 files changed, 13 insertions(+), 13 deletions(-) rename sbnanaobj/StandardRecord/{SRTrkLikePID.cxx => SRTrkLikelihoodPID.cxx} (69%) rename sbnanaobj/StandardRecord/{SRTrkLikePID.h => SRTrkLikelihoodPID.h} (79%) diff --git a/sbnanaobj/StandardRecord/SRTrkLikePID.cxx b/sbnanaobj/StandardRecord/SRTrkLikelihoodPID.cxx similarity index 69% rename from sbnanaobj/StandardRecord/SRTrkLikePID.cxx rename to sbnanaobj/StandardRecord/SRTrkLikelihoodPID.cxx index aae28719..a1fc3f91 100644 --- a/sbnanaobj/StandardRecord/SRTrkLikePID.cxx +++ b/sbnanaobj/StandardRecord/SRTrkLikelihoodPID.cxx @@ -1,17 +1,17 @@ //////////////////////////////////////////////////////////////////////// -// \file SRTrkLikePID.cxx -// \brief An SRTrkLikePID is a high level track ParticlePID object for +// \file SRTrkLikelihoodPID.cxx +// \brief An SRTrkLikelihoodPID is a high level track ParticlePID object for // for larana LikelihoodPIDAlg results. //////////////////////////////////////////////////////////////////////// -#include "sbnanaobj/StandardRecord/SRTrkLikePID.h" +#include "sbnanaobj/StandardRecord/SRTrkLikelihoodPID.h" #include namespace caf { - SRTrkLikePID::SRTrkLikePID(): + SRTrkLikelihoodPID::SRTrkLikelihoodPID(): pdg(-999), pid_ndof(-99), lambda_muon(std::numeric_limits::signaling_NaN()), @@ -19,9 +19,9 @@ namespace caf lambda_proton(std::numeric_limits::signaling_NaN()) { } - SRTrkLikePID::~SRTrkLikePID(){ } + SRTrkLikelihoodPID::~SRTrkLikelihoodPID(){ } - void SRTrkLikePID::setDefault() + void SRTrkLikelihoodPID::setDefault() { pdg = -5; pid_ndof = -5; diff --git a/sbnanaobj/StandardRecord/SRTrkLikePID.h b/sbnanaobj/StandardRecord/SRTrkLikelihoodPID.h similarity index 79% rename from sbnanaobj/StandardRecord/SRTrkLikePID.h rename to sbnanaobj/StandardRecord/SRTrkLikelihoodPID.h index 375c5968..f7391a11 100644 --- a/sbnanaobj/StandardRecord/SRTrkLikePID.h +++ b/sbnanaobj/StandardRecord/SRTrkLikelihoodPID.h @@ -1,18 +1,18 @@ //////////////////////////////////////////////////////////////////////// -// \file SRTrkLikePID.h +// \file SRTrkLikelihoodPID.h //////////////////////////////////////////////////////////////////////// -#ifndef SRTRKLIKEPID_H -#define SRTRKLIKEPID_H +#ifndef SRTRKLIKELIHOODPID_H +#define SRTRKLIKELIHOODPID_H namespace caf { /// Track PID from dE/dx v. likelihood from dE/dx PDF measured with residual range-based kinetic energy and hit pitch - class SRTrkLikePID + class SRTrkLikelihoodPID { public: - SRTrkLikePID(); - virtual ~SRTrkLikePID(); + SRTrkLikelihoodPID(); + virtual ~SRTrkLikelihoodPID(); int pdg; ///< Likelihood PID pdg int pid_ndof; ///< Number of degress of freedom in likelihood PID @@ -25,5 +25,5 @@ namespace caf } // end namespace -#endif // SRTRKLIKEPID_H +#endif // SRTRKLIKELIHOODPID_H ////////////////////////////////////////////////////////////////////////////// From 1f8c899d7977ce09b557b19cec31c23058d61e46 Mon Sep 17 00:00:00 2001 From: sungbinoh Date: Tue, 21 Oct 2025 10:20:33 -0500 Subject: [PATCH 4/9] more updates for SRTrkLikelihoodPID --- sbnanaobj/StandardRecord/SRTrack.h | 4 ++-- sbnanaobj/StandardRecord/classes_def.xml | 7 ++++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/sbnanaobj/StandardRecord/SRTrack.h b/sbnanaobj/StandardRecord/SRTrack.h index 01189e09..9d092f70 100644 --- a/sbnanaobj/StandardRecord/SRTrack.h +++ b/sbnanaobj/StandardRecord/SRTrack.h @@ -8,7 +8,7 @@ #include "sbnanaobj/StandardRecord/SRTrackTruth.h" #include "sbnanaobj/StandardRecord/SRTrkChi2PID.h" -#include "sbnanaobj/StandardRecord/SRTrkLikePID.h" +#include "sbnanaobj/StandardRecord/SRTrkLikelihoodPID.h" #include "sbnanaobj/StandardRecord/SRTrkMCS.h" #include "sbnanaobj/StandardRecord/SRTrkRange.h" #include "sbnanaobj/StandardRecord/SRCRTHitMatch.h" @@ -46,7 +46,7 @@ namespace caf SRVector3D end; ///< End point of track SRTrkChi2PID chi2pid[3]; ///< Per-plane Chi2 Particle ID - SRTrkLikePID likepid[3]; ///< Per-plane likelihood-based Particle ID variabeles (lambda = \Sigma -lnL/L_max where \Sigma is done over hits) + SRTrkLikelihoodPID likepid[3]; ///< Per-plane likelihood-based Particle ID variabeles (lambda = \Sigma -lnL/L_max where \Sigma is done over hits) SRTrackCalo calo[3]; ///< Per-plane Calorimetry information Plane_t bestplane; ///< Plane index with the most hits. -1 if no calorimetry diff --git a/sbnanaobj/StandardRecord/classes_def.xml b/sbnanaobj/StandardRecord/classes_def.xml index edaaae2e..fdba7472 100644 --- a/sbnanaobj/StandardRecord/classes_def.xml +++ b/sbnanaobj/StandardRecord/classes_def.xml @@ -115,7 +115,8 @@ - + + @@ -166,6 +167,10 @@ + + + + From 69f7b452c72eaa00bf990216395438238665bb27 Mon Sep 17 00:00:00 2001 From: sungbinoh Date: Thu, 23 Oct 2025 08:58:24 -0500 Subject: [PATCH 5/9] removing void SRTrkLikelihoodPID::setDefault() --- sbnanaobj/StandardRecord/SRTrkLikelihoodPID.cxx | 9 --------- 1 file changed, 9 deletions(-) diff --git a/sbnanaobj/StandardRecord/SRTrkLikelihoodPID.cxx b/sbnanaobj/StandardRecord/SRTrkLikelihoodPID.cxx index a1fc3f91..058842c6 100644 --- a/sbnanaobj/StandardRecord/SRTrkLikelihoodPID.cxx +++ b/sbnanaobj/StandardRecord/SRTrkLikelihoodPID.cxx @@ -21,14 +21,5 @@ namespace caf SRTrkLikelihoodPID::~SRTrkLikelihoodPID(){ } - void SRTrkLikelihoodPID::setDefault() - { - pdg = -5; - pid_ndof = -5; - lambda_muon = -5.0; - lambda_pion = -5.0; - lambda_proton = -5.0; - } - } // end namespace caf //////////////////////////////////////////////////////////////////////// From bacfd71878cf7f214a90bc8de45db064f87b7719 Mon Sep 17 00:00:00 2001 From: sungbinoh Date: Thu, 23 Oct 2025 08:58:44 -0500 Subject: [PATCH 6/9] removing void SRTrkLikelihoodPID::setDefault() --- sbnanaobj/StandardRecord/SRTrkLikelihoodPID.h | 1 - 1 file changed, 1 deletion(-) diff --git a/sbnanaobj/StandardRecord/SRTrkLikelihoodPID.h b/sbnanaobj/StandardRecord/SRTrkLikelihoodPID.h index f7391a11..b1af3be8 100644 --- a/sbnanaobj/StandardRecord/SRTrkLikelihoodPID.h +++ b/sbnanaobj/StandardRecord/SRTrkLikelihoodPID.h @@ -20,7 +20,6 @@ namespace caf float lambda_pion; ///< Sum of -lnL/L_max (charged pion hypothesis) float lambda_proton; ///< Sum of -lnL/L_max (proton hypothesis) - void setDefault(); }; } // end namespace From 6907b183848f5075b99b45ae3add55d6b811f6da Mon Sep 17 00:00:00 2001 From: sungbinoh Date: Tue, 28 Oct 2025 11:09:04 -0500 Subject: [PATCH 7/9] Following Gianluca's comments --- sbnanaobj/StandardRecord/SRTrack.h | 2 +- .../StandardRecord/SRTrkLikelihoodPID.cxx | 28 ++++++++++++------- sbnanaobj/StandardRecord/SRTrkLikelihoodPID.h | 13 +++++---- 3 files changed, 27 insertions(+), 16 deletions(-) diff --git a/sbnanaobj/StandardRecord/SRTrack.h b/sbnanaobj/StandardRecord/SRTrack.h index 9d092f70..afd80a51 100644 --- a/sbnanaobj/StandardRecord/SRTrack.h +++ b/sbnanaobj/StandardRecord/SRTrack.h @@ -46,7 +46,7 @@ namespace caf SRVector3D end; ///< End point of track SRTrkChi2PID chi2pid[3]; ///< Per-plane Chi2 Particle ID - SRTrkLikelihoodPID likepid[3]; ///< Per-plane likelihood-based Particle ID variabeles (lambda = \Sigma -lnL/L_max where \Sigma is done over hits) + SRTrkLikelihoodPID likepid[3]; ///< Per-plane likelihood-based Particle ID variabeles (@f$ \lambda = \sum -\ln L / L_{max} @f$ where @f$\Sigma@f$ is done over hits) SRTrackCalo calo[3]; ///< Per-plane Calorimetry information Plane_t bestplane; ///< Plane index with the most hits. -1 if no calorimetry diff --git a/sbnanaobj/StandardRecord/SRTrkLikelihoodPID.cxx b/sbnanaobj/StandardRecord/SRTrkLikelihoodPID.cxx index 058842c6..125d4b21 100644 --- a/sbnanaobj/StandardRecord/SRTrkLikelihoodPID.cxx +++ b/sbnanaobj/StandardRecord/SRTrkLikelihoodPID.cxx @@ -1,12 +1,13 @@ -//////////////////////////////////////////////////////////////////////// -// \file SRTrkLikelihoodPID.cxx -// \brief An SRTrkLikelihoodPID is a high level track ParticlePID object for -// for larana LikelihoodPIDAlg results. -//////////////////////////////////////////////////////////////////////// +/** + * @file sbnanaobj/StandardRecord/SRTrkLikelihoodPID.cxx + * @brief An `SRTrkLikelihoodPID` is a high level track ParticlePID object for + * for larana LikelihoodPIDAlg results. + * @author Sungbin Oh (sungbino@fnal.gov) + */ #include "sbnanaobj/StandardRecord/SRTrkLikelihoodPID.h" -#include +#include "sbnanaobj/StandardRecord/SRConstants.h" namespace caf { @@ -14,12 +15,19 @@ namespace caf SRTrkLikelihoodPID::SRTrkLikelihoodPID(): pdg(-999), pid_ndof(-99), - lambda_muon(std::numeric_limits::signaling_NaN()), - lambda_pion(std::numeric_limits::signaling_NaN()), - lambda_proton(std::numeric_limits::signaling_NaN()) + lambda_muon(caf::kSignalingNaN), + lambda_pion(caf::kSignalingNaN), + lambda_proton(caf::kSignalingNaN) { } - SRTrkLikelihoodPID::~SRTrkLikelihoodPID(){ } + void SRTrkLikelihoodPID::setDefault() + { + pdg = 0; + pid_ndof = -5; + lambda_muon = -5.0; + lambda_pion = -5.0; + lambda_proton = -5.0; + } } // end namespace caf //////////////////////////////////////////////////////////////////////// diff --git a/sbnanaobj/StandardRecord/SRTrkLikelihoodPID.h b/sbnanaobj/StandardRecord/SRTrkLikelihoodPID.h index b1af3be8..b5e1d1b0 100644 --- a/sbnanaobj/StandardRecord/SRTrkLikelihoodPID.h +++ b/sbnanaobj/StandardRecord/SRTrkLikelihoodPID.h @@ -1,6 +1,9 @@ -//////////////////////////////////////////////////////////////////////// -// \file SRTrkLikelihoodPID.h -//////////////////////////////////////////////////////////////////////// +/** + * @file sbnanaobj/StandardRecord/SRTrkLikelihoodPID.h + * @brief An `SRTrkLikelihoodPID` is a high level track ParticlePID object for + * for larana LikelihoodPIDAlg results. + * @author Sungbin Oh (sungbino@fnal.gov) + */ #ifndef SRTRKLIKELIHOODPID_H #define SRTRKLIKELIHOODPID_H @@ -12,14 +15,14 @@ namespace caf public: SRTrkLikelihoodPID(); - virtual ~SRTrkLikelihoodPID(); int pdg; ///< Likelihood PID pdg - int pid_ndof; ///< Number of degress of freedom in likelihood PID + int pid_ndof; ///< Number of degress of freedom in likelihood PID float lambda_muon; ///< Sum of -lnL/L_max (muon hypothesis) float lambda_pion; ///< Sum of -lnL/L_max (charged pion hypothesis) float lambda_proton; ///< Sum of -lnL/L_max (proton hypothesis) + void setDefault(); }; } // end namespace From 82276e3667b06959bfcec6ea38f184694f5c03b2 Mon Sep 17 00:00:00 2001 From: Sungbin Oh Date: Tue, 18 Nov 2025 13:22:15 -0600 Subject: [PATCH 8/9] Update sbnanaobj/StandardRecord/classes_def.xml Co-authored-by: Gianluca Petrillo --- sbnanaobj/StandardRecord/classes_def.xml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sbnanaobj/StandardRecord/classes_def.xml b/sbnanaobj/StandardRecord/classes_def.xml index fdba7472..98494c9d 100644 --- a/sbnanaobj/StandardRecord/classes_def.xml +++ b/sbnanaobj/StandardRecord/classes_def.xml @@ -116,8 +116,7 @@ - - + From f26feafbbc89aa07dc03370f65a650c2cfc26f6f Mon Sep 17 00:00:00 2001 From: Sungbin Oh Date: Wed, 19 Nov 2025 08:24:24 -0600 Subject: [PATCH 9/9] Update sbnanaobj/StandardRecord/classes_def.xml Co-authored-by: Henry Lay --- sbnanaobj/StandardRecord/classes_def.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sbnanaobj/StandardRecord/classes_def.xml b/sbnanaobj/StandardRecord/classes_def.xml index 98494c9d..888b197f 100644 --- a/sbnanaobj/StandardRecord/classes_def.xml +++ b/sbnanaobj/StandardRecord/classes_def.xml @@ -115,7 +115,7 @@ - +