74 _n(
"n",
"Normalization",this,norm),
88 _n(
"n",this,other.
_n),
112 coutW(InputArguments) <<
"RooExtendPdf::expectedEvents(" <<
GetName() <<
") WARNING: RooExtendPdf needs non-null normalization set to calculate fraction in range "
113 <<
_rangeName <<
". Results may be nonsensical" << std::endl ;
121 double fracInt =
pdf.getNormObj(nset,nset,
_rangeName)->getVal();
124 if ( fracInt == 0. ||
_n == 0.) {
125 coutW(Eval) <<
"RooExtendPdf(" <<
GetName() <<
") WARNING: nExpected = " <<
_n <<
" / "
126 << fracInt <<
" for nset = " << (nset?*nset:
RooArgSet()) << std::endl ;
133 if (
pdf.canBeExtended()) nExp *=
pdf.expectedEvents(nset) ;
147 std::unique_ptr<RooAbsReal> rangeFactor;
151 auto rangeFactorName = std::string(
"one_over_") + fracInteg->GetName();
152 rangeFactor = std::make_unique<RooRatio>(rangeFactorName.c_str(), rangeFactorName.c_str(),
RooFit::RooConst(1.0), *fracInteg);
153 rangeFactor->addOwnedComponents(std::move(fracInteg));
154 prodList.
add(*rangeFactor);
158 std::unique_ptr<RooAbsReal> pdfExpectedEvents;
159 if (
pdf.canBeExtended()) {
160 pdfExpectedEvents =
pdf.createExpectedEventsFunc(nset);
161 prodList.
add(*pdfExpectedEvents);
164 auto name = std::string(
GetName()) +
"_expectedEvents";
168 auto out = std::make_unique<RooProduct>(
name.c_str(),
name.c_str(), prodList);
170 out->addOwnedComponents(std::move(rangeFactor));
172 if(pdfExpectedEvents) {
173 out->addOwnedComponents(std::move(pdfExpectedEvents));
virtual bool add(const RooAbsArg &var, bool silent=false)
Add the specified argument to list.
RooAbsPdf()
Default constructor.
A RooAbsReal::Ref can be constructed from a RooAbsReal& or a double that will be implicitly converted...
void setUnit(const char *unit)
void setPlotLabel(const char *label)
Set the label associated with this variable.
RooArgList is a container object that can hold multiple RooAbsArg objects.
RooArgSet is a container object that can hold multiple RooAbsArg objects.
std::unique_ptr< RooAbsReal > createExpectedEventsFunc(const RooArgSet *nset) const override
Returns an object that represents the expected number of events for a given normalization set,...
RooAbsPdf const & pdf() const
RooTemplateProxy< RooAbsPdf > _pdf
Input p.d.f.
double expectedEvents(const RooArgSet *nset) const override
Return the number of expected events over the full range of all variables.
const TNamed * _rangeName
Name of subset range.
RooTemplateProxy< RooAbsReal > _n
Number of expected events.
Registry for const char* names.
static const char * str(const TNamed *ptr)
Return C++ string corresponding to given TNamed pointer.
const char * GetName() const override
Returns name of object.
RooConstVar & RooConst(double val)
std::string getColonSeparatedNameString(RooArgSet const &argSet, char delim=':')