Skip to content

Commit b473f33

Browse files
committed
[RF] Use smart pointers for constraints management functions
1 parent 34361dc commit b473f33

File tree

4 files changed

+23
-31
lines changed

4 files changed

+23
-31
lines changed

roofit/roofitcore/inc/RooAbsPdf.h

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,7 @@
2626
class RooArgSet ;
2727
class RooAbsGenContext ;
2828
class RooFitResult ;
29-
class RooExtendPdf ;
30-
class RooCategory ;
31-
class TPaveText;
32-
class TH1F;
33-
class TH2F;
34-
class TList ;
35-
class RooMinimizer ;
3629
class RooNumGenConfig ;
37-
class RooRealIntegral ;
3830

3931

4032
class RooAbsPdf : public RooAbsReal {
@@ -165,14 +157,16 @@ class RooAbsPdf : public RooAbsReal {
165157
return RooFit::makeOwningPtr(createNLLImpl(data, *RooFit::Detail::createCmdList(&cmdArgs...)));
166158
}
167159

168-
// Constraint management
169-
virtual RooArgSet* getConstraints(const RooArgSet& /*observables*/, RooArgSet const& /*constrainedParams*/, RooArgSet& /*pdfParams*/) const
160+
// Constraint management. Interface to retrieve constraint terms on this pdf. Default implementation returns null.
161+
virtual std::unique_ptr<RooArgSet> getConstraints(const RooArgSet & /*observables*/,
162+
RooArgSet const & /*constrainedParams*/,
163+
RooArgSet & /*pdfParams*/) const
170164
{
171-
// Interface to retrieve constraint terms on this pdf. Default implementation returns null
172-
return nullptr ;
165+
return nullptr;
173166
}
174-
RooArgSet* getAllConstraints(const RooArgSet& observables, RooArgSet& constrainedParams,
175-
bool stripDisconnected=true) const ;
167+
168+
std::unique_ptr<RooArgSet>
169+
getAllConstraints(const RooArgSet &observables, RooArgSet &constrainedParams, bool stripDisconnected = true) const;
176170

177171
// Project p.d.f into lower dimensional p.d.f
178172
virtual RooAbsPdf* createProjection(const RooArgSet& iset) ;

roofit/roofitcore/inc/RooProdPdf.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,8 @@ class RooProdPdf : public RooAbsPdf {
7878
bool isDirectGenSafe(const RooAbsArg& arg) const override ;
7979

8080
// Constraint management
81-
RooArgSet* getConstraints(const RooArgSet& observables, RooArgSet const& constrainedParams, RooArgSet &pdfParams) const override ;
81+
std::unique_ptr<RooArgSet> getConstraints(const RooArgSet &observables, RooArgSet const &constrainedParams,
82+
RooArgSet &pdfParams) const override;
8283

8384
std::list<double>* plotSamplingHint(RooAbsRealLValue& obs, double xlo, double xhi) const override ;
8485
std::list<double>* binBoundaries(RooAbsRealLValue& /*obs*/, double /*xlo*/, double /*xhi*/) const override ;

roofit/roofitcore/src/RooAbsPdf.cxx

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2564,8 +2564,8 @@ RooFit::OwningPtr<RooAbsReal> RooAbsPdf::createScanCdf(const RooArgSet& iset, co
25642564
/// This helper function finds and collects all constraints terms of all component p.d.f.s
25652565
/// and returns a RooArgSet with all those terms.
25662566

2567-
RooArgSet* RooAbsPdf::getAllConstraints(const RooArgSet& observables, RooArgSet& constrainedParams,
2568-
bool stripDisconnected) const
2567+
std::unique_ptr<RooArgSet>
2568+
RooAbsPdf::getAllConstraints(const RooArgSet &observables, RooArgSet &constrainedParams, bool stripDisconnected) const
25692569
{
25702570
RooArgSet constraints;
25712571
RooArgSet pdfParams;
@@ -2574,9 +2574,7 @@ RooArgSet* RooAbsPdf::getAllConstraints(const RooArgSet& observables, RooArgSet&
25742574
for (const auto arg : *comps) {
25752575
auto pdf = dynamic_cast<const RooAbsPdf*>(arg) ;
25762576
if (pdf && !constraints.find(pdf->GetName())) {
2577-
std::unique_ptr<RooArgSet> compRet(
2578-
pdf->getConstraints(observables,constrainedParams, pdfParams));
2579-
if (compRet) {
2577+
if (auto compRet = pdf->getConstraints(observables,constrainedParams, pdfParams)) {
25802578
constraints.add(*compRet,false) ;
25812579
}
25822580
}
@@ -2585,7 +2583,7 @@ RooArgSet* RooAbsPdf::getAllConstraints(const RooArgSet& observables, RooArgSet&
25852583
RooArgSet conParams;
25862584

25872585
// Strip any constraints that are completely decoupled from the other product terms
2588-
RooArgSet* finalConstraints = new RooArgSet("AllConstraints") ;
2586+
auto finalConstraints = std::make_unique<RooArgSet>("AllConstraints");
25892587
for(auto * pdf : static_range_cast<RooAbsPdf*>(constraints)) {
25902588

25912589
RooArgSet tmp;
@@ -2653,11 +2651,10 @@ RooNumGenConfig* RooAbsPdf::specialGeneratorConfig(bool createOnTheFly)
26532651
/// a specialized configuration was associated with this object, that configuration
26542652
/// is returned, otherwise the default configuration for all RooAbsReals is returned
26552653

2656-
const RooNumGenConfig* RooAbsPdf::getGeneratorConfig() const
2654+
const RooNumGenConfig *RooAbsPdf::getGeneratorConfig() const
26572655
{
2658-
const RooNumGenConfig* config = specialGeneratorConfig() ;
2659-
if (config) return config ;
2660-
return defaultGeneratorConfig() ;
2656+
const RooNumGenConfig *config = specialGeneratorConfig();
2657+
return config ? config : defaultGeneratorConfig();
26612658
}
26622659

26632660

roofit/roofitcore/src/RooProdPdf.cxx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1730,11 +1730,10 @@ bool RooProdPdf::isDirectGenSafe(const RooAbsArg& arg) const
17301730
////////////////////////////////////////////////////////////////////////////////
17311731
/// Look up user specified normalization set for given input PDF component
17321732

1733-
RooArgSet* RooProdPdf::findPdfNSet(RooAbsPdf const& pdf) const
1733+
RooArgSet *RooProdPdf::findPdfNSet(RooAbsPdf const &pdf) const
17341734
{
1735-
Int_t idx = _pdfList.index(&pdf) ;
1736-
if (idx<0) return nullptr;
1737-
return _pdfNSetList[idx].get() ;
1735+
Int_t idx = _pdfList.index(&pdf);
1736+
return idx < 0 ? nullptr : _pdfNSetList[idx].get();
17381737
}
17391738

17401739

@@ -1842,9 +1841,10 @@ bool sortedNamePtrsOverlap(std::vector<TNamed const*> const& ptrsA, std::vector<
18421841
/// The pdfParams output parameter communicates to the caller which parameter
18431842
/// are used in the pdfs that are not constraints.
18441843

1845-
RooArgSet* RooProdPdf::getConstraints(const RooArgSet& observables, RooArgSet const& constrainedParams, RooArgSet &pdfParams) const
1844+
std::unique_ptr<RooArgSet>
1845+
RooProdPdf::getConstraints(const RooArgSet &observables, RooArgSet const &constrainedParams, RooArgSet &pdfParams) const
18461846
{
1847-
auto constraints = new RooArgSet{"constraints"};
1847+
auto constraints = std::make_unique<RooArgSet>("constraints");
18481848

18491849
// For the optimized implementation of checking if two collections overlap by name.
18501850
auto observablesNamePtrs = sortedNamePtrs(observables);

0 commit comments

Comments
 (0)