18#ifndef ROO_MC_INTEGRATOR
19#define ROO_MC_INTEGRATOR
29 enum SamplingMode { Importance, ImportanceOnly, Stratified };
30 enum GeneratorType { QuasiRandom, PseudoRandom };
31 RooMCIntegrator(
const RooAbsFunc &function, SamplingMode mode = Importance, GeneratorType genType = QuasiRandom,
32 bool verbose =
false);
33 RooMCIntegrator(
const RooAbsFunc &function,
const RooNumIntConfig &config);
36 double integral(
const double *yvec =
nullptr)
override;
38 enum Stage { AllStages, ReuseGrid, RefineGrid };
39 double vegas(Stage stage,
UInt_t calls,
UInt_t iterations,
double *absError =
nullptr);
41 double getAlpha()
const {
return _alpha; }
42 void setAlpha(
double alpha) { _alpha = alpha; }
44 GeneratorType getGenType()
const {
return _genType; }
45 void setGenType(GeneratorType type) { _genType =
type; }
47 const RooGrid &grid()
const {
return _grid; }
50 friend class RooNumIntFactory;
51 static void registerIntegrator(RooNumIntFactory &fact);
53 mutable RooGrid _grid;
59 GeneratorType _genType;
62 Int_t _nIntegratePerDim;
66 double _jac, _wtd_int_sum, _sum_wgts, _chi_sum, _chisq, _result,
68 UInt_t _it_start, _it_num, _samples, _calls_per_box;
int Int_t
Signed integer 4 bytes (int).
unsigned int UInt_t
Unsigned integer 4 bytes (unsigned int).
Abstract interface for integrators of real-valued functions that implement the RooAbsFunc interface.
virtual bool checkLimits() const
If true, finite limits are required on the observable range.
virtual double integral(const double *yvec=nullptr)=0