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);
142 for (
const auto realDep : *_funcObsSet) {
144 if (realDepRLV && realDepRLV->isDerived()) {
146 realDepRLV->leafNodeServerList(&tmp2, 0,
true);
147 _funcObsSet->
add(tmp2,
true);
157 for (
const auto arg : *_funcObsSet) {
160 auto realReal =
dynamic_cast<RooRealVar *
>(arg);
164 auto datReal =
dynamic_cast<RooRealVar *
>(dataDepSet->
find(realReal->GetName()));
171 if (!realReal->getBinning().lowBoundFunc() && realReal->getMin() < (datReal->getMin() - 1
e-6)) {
173 << realReal->getMin() <<
") is smaller than that of " << arg->GetName()
174 <<
" in the dataset (" << datReal->getMin() <<
")" << std::endl;
179 if (!realReal->getBinning().highBoundFunc() && realReal->getMax() > (datReal->getMax() + 1
e-6)) {
181 <<
"RooAbsL: ERROR maximum of FUNC observable " << arg->GetName() <<
" is larger than that of "
182 << arg->GetName() <<
" in the dataset" << std::endl;
209 data_->attachBuffers(*_funcObsSet);
225 pdf_->optimizeCacheMode(*_funcObsSet);
227 data_->setDirtyProp(
false);
235 return std::unique_ptr<RooArgSet>{
pdf_->getParameters(*
data_)};
249 std::string
output(
"likelihood of pdf ");
256 std::string
output(
"likelihood of pdf ");
263 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.
RooAbsData is the common abstract base class for binned and unbinned datasets.
virtual const RooArgSet * get() const
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)