diff --git a/PhysicsAnalysis/TopPhys/xAOD/TopAnalysis/Root/Tools.cxx b/PhysicsAnalysis/TopPhys/xAOD/TopAnalysis/Root/Tools.cxx
index 5fb00c304378facc651e5a2382ec410c6fc04c96..fe03601fd00278e8780d42c8bffd7c8bf753fbd1 100644
--- a/PhysicsAnalysis/TopPhys/xAOD/TopAnalysis/Root/Tools.cxx
+++ b/PhysicsAnalysis/TopPhys/xAOD/TopAnalysis/Root/Tools.cxx
@@ -165,7 +165,10 @@ namespace top {
   void parseCutBookkeepers(xAOD::TEvent& xaodEvent, const std::size_t size,
       std::vector<std::string> &names, std::vector<float>& sumW, const bool isHLLHC) {
 
-    for (std::size_t icbk = 0; icbk < size; ++icbk) {
+    // workaround for PMGTruthWeightTool returning ZERO weights, when sample has ONLY ONE weight...
+    const std::size_t modifiedSize = (size == 0) ? 1 : size;
+
+    for (std::size_t icbk = 0; icbk < modifiedSize; ++icbk) {
       const std::string cbkName = (icbk == 0) ? "CutBookkeepers" : "CutBookkeepers_weight_" + std::to_string(icbk);
       const xAOD::CutBookkeeperContainer* cutBookKeepers = nullptr;
       top::check(xaodEvent.retrieveMetaInput(cutBookKeepers, cbkName), "Cannot retrieve CutBookkeepers: " + cbkName);