31namespace TestStatistics {
47 throw std::logic_error(
"RooAbsL::isExtendedHelper got an unknown extended value!");
55 std::size_t N_components,
Extended extended)
56 : pdf_(std::move(pdf)), data_(std::move(
data)), N_events_(N_events), N_components_(N_components)
62 <<
"in RooAbsL ctor: p.d.f. provides expected number of events, including extended term in likelihood."
78 :
RooAbsL(in.ownedPdf ? std::move(in.ownedPdf)
98 :
RooAbsL({std::shared_ptr<RooAbsPdf>(
nullptr), inpdf}, {std::shared_ptr<RooAbsData>(
nullptr), indata}, N_events,
99 N_components, extended)
106 N_events_(other.N_events_),
107 N_components_(other.N_components_),
108 extended_(other.extended_),
109 sim_count_(other.sim_count_)
113 assert((
pdf_.use_count() != 1) && (
data_.use_count() != 1) && (
pdf_.use_count() ==
data_.use_count()));
114 if ((
pdf_.use_count() > 1) && (
data_.use_count() > 1)) {
128 auto _funcObsSet =
pdf_->getObservables(indata);
130 if (
pdf_->getAttribute(
"BinnedLikelihood")) {
131 pdf_->setAttribute(
"BinnedLikelihoodActive");
135 std::unique_ptr<RooArgSet> origParams{inpdf.
getParameters(indata)};
136 pdf_->recursiveRedirectServers(*origParams);
139 normSet_ = std::make_unique<RooArgSet>();
143 for (
const auto realDep : *_funcObsSet) {
145 if (realDepRLV && realDepRLV->isDerived()) {
147 realDepRLV->leafNodeServerList(&tmp2,
nullptr,
true);
148 _funcObsSet->
add(tmp2,
true);
158 for (
const auto arg : *_funcObsSet) {
161 auto realReal =
dynamic_cast<RooRealVar *
>(arg);
165 auto datReal =
dynamic_cast<RooRealVar *
>(dataDepSet->
find(realReal->GetName()));
172 if (!realReal->getBinning().lowBoundFunc() && realReal->getMin() < (datReal->getMin() - 1
e-6)) {
174 << realReal->getMin() <<
") is smaller than that of " << arg->GetName()
175 <<
" in the dataset (" << datReal->getMin() <<
")" << std::endl;
180 if (!realReal->getBinning().highBoundFunc() && realReal->getMax() > (datReal->getMax() + 1
e-6)) {
182 <<
"RooAbsL: ERROR maximum of FUNC observable " << arg->GetName() <<
" is larger than that of "
183 << arg->GetName() <<
" in the dataset" << std::endl;
210 data_->attachBuffers(*_funcObsSet);
226 pdf_->optimizeCacheMode(*_funcObsSet);
228 data_->setDirtyProp(
false);
236 return std::unique_ptr<RooArgSet>{
pdf_->getParameters(*
data_)};
250 std::string
output(
"likelihood of pdf ");
257 std::string
output(
"likelihood of pdf ");
264 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.
RooAbsRealLValue is the common abstract base class for objects that represent a real value that may a...
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()
virtual void constOptimizeTestStatistic(RooAbsArg::ConstOpCode opcode, bool doAlsoTrackingOpt)
Interface function signaling a request to perform constant term optimization.
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_
RooRealVar represents a 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...
static void enableConstantTermsOptimization(RooAbsReal *function, RooArgSet *norm_set, RooAbsData *dataset, bool applyTrackingOpt)