18#include "EvtGenBase/EvtPdf.hh"
33 { assert(
c >= 0.);
_c.push_back(
c);
_term.push_back(
pdf.clone()); }
40 inline double c(
int i)
const {
return _c[i]; }
52 virtual double pdf(
const T& p)
const;
55 vector<EvtPdf<T>*>
_term;
65 for(i = 0; i < other.nTerms(); i++) {
66 _c.push_back(other._c[i]);
67 _term.push_back(other._term[i]->clone());
75 for(i = 0; i < _c.size(); i++)
delete _term[i];
84 for(i=0; i < _c.size(); i++) ret += _c[i] * _term[i]->evaluate(p);
97 for(i=0;i<nTerms();i++) itg += _c[i]*_term[i]->getItg();
106 for(i=0;i<nTerms();i++) itg += _c[i]*_term[i]->getItg(N);
120 if(!_itg.valueKnown()) _itg = compute_integral();
122 double max = _itg.value();
127 for(i = 0; i < nTerms(); i++) {
128 double itg = _term[i]->getItg().value();
133 return _term[i]->randomPoint();
virtual EvtValError compute_integral() const
virtual EvtPdf< T > * clone() const
EvtPdf< T > * getPdf(int i) const
void addTerm(double c, const EvtPdf< T > &pdf)
virtual double pdf(const T &p) const
virtual double pdf(const T &p) const
virtual EvtValError compute_integral() const
vector< EvtPdf< T > * > _term
void addOwnedTerm(double c, EvtPdf< T > *pdf)
virtual EvtValError compute_integral(int N) const
EvtPdfSum(const EvtPdfSum< T > &other)