53 ClassImp(RooExtendPdf);
57 RooExtendPdf::RooExtendPdf() : _rangeName(0)
73 RooExtendPdf::RooExtendPdf(
const char *name,
const char *title,
const RooAbsPdf& pdf,
74 const RooAbsReal& norm,
const char* rangeName) :
75 RooAbsPdf(name,title),
76 _pdf(
"pdf",
"PDF",this,(RooAbsReal&)pdf),
77 _n(
"n",
"Normalization",this,(RooAbsReal&)norm),
78 _rangeName(RooNameReg::ptr(rangeName))
82 setUnit(_pdf.arg().getUnit()) ;
83 setPlotLabel(_pdf.arg().getPlotLabel()) ;
88 RooExtendPdf::RooExtendPdf(
const RooExtendPdf& other,
const char* name) :
89 RooAbsPdf(other,name),
90 _pdf(
"pdf",this,other._pdf),
91 _n(
"n",this,other._n),
92 _rangeName(other._rangeName)
98 RooExtendPdf::~RooExtendPdf()
117 Double_t RooExtendPdf::expectedEvents(
const RooArgSet* nset)
const
119 RooAbsPdf& pdf = (RooAbsPdf&)_pdf.arg() ;
121 if (_rangeName && (!nset || nset->getSize()==0)) {
122 coutW(InputArguments) <<
"RooExtendPdf::expectedEvents(" << GetName() <<
") WARNING: RooExtendPdf needs non-null normalization set to calculate fraction in range "
123 << _rangeName <<
". Results may be nonsensical" << endl ;
133 GlobalSelectComponentRAII globalSelComp(
true);
134 fracInt = pdf.getNormObj(nset,nset,_rangeName)->getVal();
138 if ( fracInt == 0. || _n == 0.) {
139 coutW(Eval) <<
"RooExtendPdf(" << GetName() <<
") WARNING: nExpected = " << _n <<
" / "
140 << fracInt <<
" for nset = " << (nset?*nset:RooArgSet()) << endl ;
151 if (pdf.canBeExtended()) nExp *= pdf.expectedEvents(nset) ;