30namespace TestStatistics {
46 throw std::logic_error(
"RooAbsL::isExtendedHelper got an unknown extended value!");
54 std::size_t N_components,
Extended extended)
55 : pdf_(std::move(pdf)),
56 data_(std::move(
data)),
58 N_components_(N_components),
59 extended_(isExtendedHelper(pdf_.get(), extended))
64 <<
"in RooAbsL ctor: p.d.f. provides expected number of events, including extended term in likelihood."
80 :
RooAbsL(in.ownedPdf ? std::move(in.ownedPdf)
100 :
RooAbsL({std::shared_ptr<RooAbsPdf>(
nullptr), inpdf}, {std::shared_ptr<RooAbsData>(
nullptr), indata}, N_events,
101 N_components, extended)
108 N_events_(other.N_events_),
109 N_components_(other.N_components_),
110 extended_(other.extended_),
111 sim_count_(other.sim_count_)
115 assert((
pdf_.use_count() != 1) && (
data_.use_count() != 1) && (
pdf_.use_count() ==
data_.use_count()));
116 if ((
pdf_.use_count() > 1) && (
data_.use_count() > 1)) {
130 std::unique_ptr<RooArgSet> _funcObsSet{
pdf_->getObservables(indata)};
132 if (
pdf_->getAttribute(
"BinnedLikelihood")) {
133 pdf_->setAttribute(
"BinnedLikelihoodActive");
137 std::unique_ptr<RooArgSet> origParams{inpdf.
getParameters(indata)};
138 pdf_->recursiveRedirectServers(*origParams);
141 normSet_ = std::make_unique<RooArgSet>();
145 for (
const auto realDep : *_funcObsSet) {
147 if (realDepRLV && realDepRLV->isDerived()) {
149 realDepRLV->leafNodeServerList(&tmp2,
nullptr,
true);
150 _funcObsSet->
add(tmp2,
true);
160 for (
const auto arg : *_funcObsSet) {
163 auto realReal =
dynamic_cast<RooRealVar *
>(arg);
167 auto datReal =
dynamic_cast<RooRealVar *
>(dataDepSet->
find(realReal->GetName()));
174 if (!realReal->getBinning().lowBoundFunc() && realReal->getMin() < (datReal->getMin() - 1
e-6)) {
176 << realReal->getMin() <<
") is smaller than that of " << arg->GetName()
177 <<
" in the dataset (" << datReal->getMin() <<
")" << std::endl;
182 if (!realReal->getBinning().highBoundFunc() && realReal->getMax() > (datReal->getMax() + 1
e-6)) {
184 <<
"RooAbsL: ERROR maximum of FUNC observable " << arg->GetName() <<
" is larger than that of "
185 << arg->GetName() <<
" in the dataset" << std::endl;
212 data_->attachBuffers(*_funcObsSet);
228 pdf_->optimizeCacheMode(*_funcObsSet);
230 data_->setDirtyProp(
false);
235 return std::unique_ptr<RooArgSet>{
pdf_->getParameters(*
data_)};
240 std::string output(
"likelihood of pdf ");
241 output.append(
pdf_->GetName());
247 std::string output(
"likelihood of pdf ");
248 output.append(
pdf_->GetTitle());
254 return static_cast<std::size_t
>(
data_->numEntries());
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void data
RooFit::OwningPtr< RooArgSet > getParameters(const RooAbsData *data, bool stripDisconnected=true) const
Create a list of leaf nodes in the arg tree starting with ourself as top node that don't match any of...
virtual bool add(const RooAbsArg &var, bool silent=false)
Add the specified argument to list.
RooAbsArg * find(const char *name) const
Find object with given name in list.
Abstract base class for binned and unbinned datasets.
virtual const RooArgSet * get() const
Abstract interface for all probability density functions.
virtual ExtendMode extendMode() const
Returns ability of PDF to provide extended likelihood terms.
Abstract base class for objects that represent a real value that may appear on the left hand side of ...
RooArgSet is a container object that can hold multiple RooAbsArg objects.
RooArgSet * snapshot(bool deepCopy=true) const
Use RooAbsCollection::snapshot(), but return as RooArgSet.
static void softAbort()
Soft abort function that interrupts macro execution but doesn't kill ROOT.
Convenience wrapper class used to distinguish between pdf/data owning and non-owning constructors.
std::shared_ptr< RooAbsData > data_
static bool isExtendedHelper(RooAbsPdf *pdf, Extended extended)
virtual std::string GetName() const
virtual std::string GetTitle() const
std::unique_ptr< RooArgSet > normSet_
Pointer to set with observables used for normalization.
void initClones(RooAbsPdf &inpdf, RooAbsData &indata)
virtual std::unique_ptr< RooArgSet > getParameters()
RooAbsL(std::shared_ptr< RooAbsPdf > pdf, std::shared_ptr< RooAbsData > data, std::size_t N_events, std::size_t N_components, Extended extended)
After handling cloning (or not) of the pdf and dataset, the public constructors call this private con...
virtual std::size_t numDataEntries() const
Number of dataset entries.
std::shared_ptr< RooAbsPdf > pdf_
Variable that can be changed from the outside.
const char * GetName() const override
Returns name of object.
The namespace RooFit contains mostly switches that change the behaviour of functions of PDFs (or othe...