From a64aa8ac37c894bac54aecc6d021835ab1c89ed0 Mon Sep 17 00:00:00 2001 From: Jonas Rembser Date: Thu, 11 Sep 2025 10:11:38 +0200 Subject: [PATCH] [RF] Add base-case overload for `RooAbsReal::matchArgs` implementation In user frameworks based on RooFit, there were linker errors with ROOT `master`: ```txt undefined reference to RooAbsReal::matchArgs(RooArgSet const&, RooArgSet&, RooArgProxy const&) const ``` This can be fixed by treating the case of no extra arguments to the variadic `matchArgs` function as a separate overload, so it get consistently not inlined. Thanks @cburgard for noticing and reporting! Follows up on 85186f3d8e8fea3, which implemented `RooAbsReal::matchArgs` with variadic templates. --- roofit/roofitcore/inc/RooAbsReal.h | 2 ++ roofit/roofitcore/src/RooAbsReal.cxx | 11 +++++++++++ 2 files changed, 13 insertions(+) diff --git a/roofit/roofitcore/inc/RooAbsReal.h b/roofit/roofitcore/inc/RooAbsReal.h index 5851dd32e8985..51ae68eabaf14 100644 --- a/roofit/roofitcore/inc/RooAbsReal.h +++ b/roofit/roofitcore/inc/RooAbsReal.h @@ -437,6 +437,8 @@ class RooAbsReal : public RooAbsArg { return result; } + bool matchArgs(const RooArgSet &allDeps, RooArgSet &analDeps, const RooArgProxy &a) const; + bool matchArgs(const RooArgSet& allDeps, RooArgSet& numDeps, const RooArgSet& set) const ; diff --git a/roofit/roofitcore/src/RooAbsReal.cxx b/roofit/roofitcore/src/RooAbsReal.cxx index f2588a76ff158..6e6c7deb6cf75 100644 --- a/roofit/roofitcore/src/RooAbsReal.cxx +++ b/roofit/roofitcore/src/RooAbsReal.cxx @@ -3122,6 +3122,17 @@ RooFit::OwningPtr RooAbsReal::createFundamental(const char* newname) return RooFit::makeOwningPtr(std::move(fund)); } + +bool RooAbsReal::matchArgs(const RooArgSet &allDeps, RooArgSet &analDeps, const RooArgProxy &a) const +{ + TList nameList; + nameList.Add(new TObjString(a.absArg()->GetName())); + bool result = matchArgsByName(allDeps, analDeps, nameList); + nameList.Delete(); + return result; +} + + //////////////////////////////////////////////////////////////////////////////// /// Utility function for use in getAnalyticalIntegral(). If the /// contents of 'refset' occur in set 'allDeps' then the arguments