115 printf(
"Analytic integration of PDF is not defined\n" );
133 double factor = 1. );
138 virtual double pdf(
const T& )
const = 0;
181 return ( random <= itsPdf->evaluate( p ) );
186 template <
class InputIterator>
187 void compute_max( InputIterator it, InputIterator end,
double factor = 1. )
192 while ( !( it == end ) ) {
194 double val =
itsPdf->evaluate( p ) * factor;
219 double ret =
itsPdf->evaluate( p );
246 double pdf(
const T& p )
const override 248 double num =
itsNum->evaluate( p );
249 double den =
itsDen->evaluate( p );
272 assert( N > 0 || nFindMax > 0 );
275 for ( i = 0; i < N; i++ )
296 while ( !( begin == end ) ) {
297 double value = pdfdiv.
evaluate( *begin++ );
299 sum2 += value * value;
304 double av = sum / ( (double)N );
306 double dev2 = ( sum2 - av * av * N ) / ( (
double)( N - 1 ) );
310 double error = sqrt( dev2 / ( (
double)N ) );
322 printf(
"Function defined for analytic PDFs only\n" );
EvtPredGen< EvtPdfGen< T >, EvtPdfPred< T > > accRejGen(const EvtPdf< T > &pc, int nMax, double factor=1.)
void compute_max(InputIterator it, InputIterator end, double factor=1.)
double evaluate(const T &p) const
EvtPdf(const EvtPdf &other)
void setItg(EvtValError itg)
EvtValError compute_mc_integral(const EvtPdf< T > &pc, int N)
EvtPdfDiv(const EvtPdfDiv< T > &other)
result_type operator()(argument_type p)
EvtPdfPred(const EvtPdf< T > &thePdf)
EvtPdf< T > * clone() const override
void setMax(const EvtPdfMax< T > &max)
virtual EvtPdf< T > * clone() const =0
EvtValError getItg() const
EvtPdfUnary(const EvtPdfUnary &other)
EvtPdfGen(const EvtPdf< T > &pdf)
EvtPdfMax< T > getMax() const
EvtPdfDiv(const EvtPdf< T > &theNum, const EvtPdf< T > &theDen)
virtual EvtValError compute_integral() const
EvtValError getItg(int N) const
virtual double pdf(const T &) const =0
double pdf(const T &p) const override
virtual EvtValError compute_integral(int) const
EvtValError findGenEff(const EvtPdf< T > &pc, int N, int nFindMax)
result_type operator()(argument_type p)
EvtPdfUnary(const EvtPdf< T > &thePdf)
Index other(Index i, Index j)
EvtPdfPred(const EvtPdfPred &other)
EvtPdfMax< T > findMax(const EvtPdf< T > &pc, int N)
EvtPdfGen(const EvtPdfGen< T > &other)