32std::unique_ptr<RooAbsArg> createSimultaneousNLL(
RooSimultaneous const &simPdf,
bool isExtended,
39 for (
auto const &catState : simCat) {
40 std::string
const &catName = catState.
first;
45 if (!rangeName.empty()) {
48 auto simCatAsRooCategory =
dynamic_cast<RooCategory const *
>(&simCat);
49 if (simCatAsRooCategory && !simCatAsRooCategory->isStateInRange(rangeName.c_str(), catIndex)) {
56 std::unique_ptr<RooArgSet> observables(
57 static_cast<RooArgSet *
>(std::unique_ptr<RooArgSet>(pdf->getVariables())->selectByAttrib(
"__obs__",
true)));
58 auto nll = std::make_unique<RooNLLVarNew>(
name.c_str(),
name.c_str(), *pdf, *observables, isExtended,
offset);
60 nll->setPrefix(std::string(
"_") + catName +
"_");
66 nll->setSimCount(nllTerms.
size());
70 auto nll = std::make_unique<RooAddition>(
"mynll",
"mynll", nllTerms);
71 nll->addOwnedComponents(std::move(nllTerms));
77std::unique_ptr<RooAbsReal>
79 std::string
const &rangeName,
RooArgSet const &projDeps,
bool isExtended,
84 constraints->setData(
data,
false);
93 observables.
remove(projDeps,
true,
true);
96 <<
") fixing normalization set for coefficient determination to observables in data"
103 RooAbsPdf &finalPdf = wrappedPdf ? *wrappedPdf : pdf;
105 binSamplingPdfs.
addOwned(std::move(wrappedPdf));
114 nllTerms.
addOwned(createSimultaneousNLL(*simPdf, isExtended, rangeName,
offset));
117 std::make_unique<RooNLLVarNew>(
"RooNLLVarNew",
"RooNLLVarNew", finalPdf, observables, isExtended,
offset));
120 nllTerms.
addOwned(std::move(constraints));
123 std::string nllName = std::string(
"nll_") + pdf.
GetName() +
"_" +
data.GetName();
124 auto nll = std::make_unique<RooAddition>(nllName.c_str(), nllName.c_str(), nllTerms);
125 nll->addOwnedComponents(std::move(binSamplingPdfs));
126 nll->addOwnedComponents(std::move(nllTerms));
ROOT::RRangeCast< T, false, Range_t > static_range_cast(Range_t &&coll)
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void data
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h offset
RooFit::OwningPtr< RooArgSet > getObservables(const RooArgSet &set, bool valueOnly=true) const
Given a set of possible observables, return the observables that this PDF depends on.
Abstract base class for objects that represent a discrete value that can be set from the outside,...
virtual bool remove(const RooAbsArg &var, bool silent=false, bool matchByNameOnly=false)
Remove the specified argument from our list.
Storage_t::size_type size() const
RooAbsArg * first() const
virtual bool addOwned(RooAbsArg &var, bool silent=false)
Add an argument and transfer the ownership to the collection.
Abstract base class for binned and unbinned datasets.
Abstract interface for all probability density functions.
virtual void fixAddCoefNormalization(const RooArgSet &addNormSet=RooArgSet(), bool force=true)
Fix the interpretation of the coefficient of any RooAddPdf component in the expression tree headed by...
RooArgList is a container object that can hold multiple RooAbsArg objects.
RooArgSet is a container object that can hold multiple RooAbsArg objects.
static std::unique_ptr< RooAbsPdf > create(RooAbsPdf &pdf, RooAbsData const &data, double precision)
Creates a wrapping RooBinSamplingPdf if appropriate.
Object to represent discrete states.
This is a simple class designed to produce the nll values needed by the fitter.
Facilitates simultaneous fitting of multiple PDFs to subsets of a given dataset.
RooAbsPdf * getPdf(RooStringView catName) const
Return the p.d.f associated with the given index category name.
void wrapPdfsInBinSamplingPdfs(RooAbsData const &data, double precision)
Wraps the components of this RooSimultaneous in RooBinSamplingPdfs.
const RooAbsCategoryLValue & indexCat() const
const char * GetName() const override
Returns name of object.
OffsetMode
For setting the offset mode with the Offset() command argument to RooAbsPdf::fitTo()