diff --git a/Calo/CaloPIDs/src/CaloBremMatch.cpp b/Calo/CaloPIDs/src/CaloBremMatch.cpp index 41c9acead403c56bac542e7a05110d53cd1eae89..168766acc76eb3bfb88153ebc2d06993af953050 100755 --- a/Calo/CaloPIDs/src/CaloBremMatch.cpp +++ b/Calo/CaloPIDs/src/CaloBremMatch.cpp @@ -44,6 +44,14 @@ public: m_showerMax = calo()->plane( CaloPlane::ShowerMax ); return StatusCode::SUCCESS; } + + // added to reset m_cBad and m_tBad every time CaloTrackMatchAlg is called. + // fixes reproducibility issues seen in the Stripping, documented in https://gitlab.cern.ch/lhcb/Stripping/-/issues/41 + void resetBadPointers() override { + // std::cout<<"Calling CaloBremMatch::resetBadPointers"<<std::endl; + m_cBad = 0; + m_tBad = 0; + } // ========================================================================== public: // ========================================================================== diff --git a/Calo/CaloPIDs/src/CaloElectronMatch.cpp b/Calo/CaloPIDs/src/CaloElectronMatch.cpp index 6b5a2662f1d173f6da92f50988fca92e068186f3..f0cf904902911b2ecfc86cfdeb1b08195de2bc3e 100755 --- a/Calo/CaloPIDs/src/CaloElectronMatch.cpp +++ b/Calo/CaloPIDs/src/CaloElectronMatch.cpp @@ -35,6 +35,7 @@ class CaloElectronMatch : public virtual ICaloTrackMatch, public CaloTrackMatch { public: /// initialize the tool + StatusCode initialize() override { StatusCode sc = CaloTrackMatch::initialize(); if ( sc.isFailure() ) { return sc; } @@ -42,6 +43,13 @@ public: return StatusCode::SUCCESS; }; + // added to reset m_cBad and m_tBad every time CaloTrackMatchAlg is called. + // fixes reproducibility issues seen in the Stripping, documented in https://gitlab.cern.ch/lhcb/Stripping/-/issues/41 + void resetBadPointers() override { + m_cBad = 0; + m_tBad = 0; + }; + public: /** the main matching method * @see ICaloTrackMatch diff --git a/Calo/CaloPIDs/src/CaloPhotonMatch.cpp b/Calo/CaloPIDs/src/CaloPhotonMatch.cpp index 48e6017b1e369e9af8b1c1e2fe5aa9f77e916c96..a723be8c784eae5a6e6189f85b2ddbbf3f5567e1 100755 --- a/Calo/CaloPIDs/src/CaloPhotonMatch.cpp +++ b/Calo/CaloPIDs/src/CaloPhotonMatch.cpp @@ -52,6 +52,13 @@ public: return StatusCode::SUCCESS; }; + // added to reset m_cBad and m_tBad every time CaloTrackMatchAlg is called. + // fixes reproducibility issues seen in the Stripping, documented in https://gitlab.cern.ch/lhcb/Stripping/-/issues/41 + void resetBadPointers() override { + m_cBad = 0; + m_tBad = 0; + }; + public: /** the main matching method * @see ICaloTrackMatch diff --git a/Calo/CaloPIDs/src/CaloTrackMatchAlg.h b/Calo/CaloPIDs/src/CaloTrackMatchAlg.h index edf5b6230af686f064d38c2d5145e41b42e8c52c..5fd3ab8ffb5762dc6d8d1dfe88633a497e68279d 100755 --- a/Calo/CaloPIDs/src/CaloTrackMatchAlg.h +++ b/Calo/CaloPIDs/src/CaloTrackMatchAlg.h @@ -164,6 +164,10 @@ inline StatusCode CaloTrackMatchAlg::doTheJob( TABLE* table ) const { // get the matching tool ICaloTrackMatch* matcher = match(); + // added to reset m_cBad and m_tBad every time CaloTrackMatchAlg is called. + // fixes reproducibility issues seen in the Stripping, documented in https://gitlab.cern.ch/lhcb/Stripping/-/issues/41 + matcher->resetBadPointers(); + size_t nCalos = 0; size_t nOverflow = 0; // loop over cluster containers