ROOT logo
ROOT » ROOFIT » ROOFITCORE » RooMCIntegrator

class RooMCIntegrator: public RooAbsIntegrator



RooMCIntegrator implements an adaptive multi-dimensional Monte Carlo numerical integration, following the VEGAS algorithm originally described in G. P. Lepage, J. Comp. Phys. 27, 192(1978). This implementation is based on a C version from the 0.9 beta release of the GNU scientific library.

Function Members (Methods)

public:
RooMCIntegrator()
RooMCIntegrator(const RooMCIntegrator&)
RooMCIntegrator(const RooAbsFunc& function, const RooNumIntConfig& config)
RooMCIntegrator(const RooAbsFunc& function, RooMCIntegrator::SamplingMode mode = Importance, RooMCIntegrator::GeneratorType genType = QuasiRandom, Bool_t verbose = kFALSE)
virtual~RooMCIntegrator()
voidTObject::AbstractMethod(const char* method) const
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
Double_tRooAbsIntegrator::calculate(const Double_t* yvec = 0)
virtual Bool_tcanIntegrate1D() const
virtual Bool_tcanIntegrate2D() const
virtual Bool_tcanIntegrateND() const
virtual Bool_tcanIntegrateOpenEnded() const
virtual Bool_tcheckLimits() const
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTObject::Clear(Option_t* = "")
virtual TObject*TObject::Clone(const char* newname = "") const
virtual RooAbsIntegrator*clone(const RooAbsFunc& function, const RooNumIntConfig& config) const
virtual Int_tTObject::Compare(const TObject* obj) const
virtual voidTObject::Copy(TObject& object) const
virtual voidTObject::Delete(Option_t* option = "")MENU
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidTObject::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() constMENU
virtual TObject*TObject::DrawClone(Option_t* option = "") constMENU
virtual voidTObject::Dump() constMENU
virtual voidTObject::Error(const char* method, const char* msgfmt) const
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
Double_tgetAlpha() const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
RooMCIntegrator::GeneratorTypegetGenType() const
virtual const char*TObject::GetIconName() const
virtual const char*TObject::GetName() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
virtual const char*TObject::GetTitle() const
virtual UInt_tTObject::GetUniqueID() const
const RooGrid&grid() const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTObject::Hash() const
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
virtual voidTObject::Inspect() constMENU
virtual Double_tintegral(const Double_t* yvec = 0)
const RooAbsFunc*RooAbsIntegrator::integrand() const
Double_tRooAbsIntegrator::integrand(const Double_t* x) const
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
Bool_tTObject::IsOnHeap() const
virtual Bool_tTObject::IsSortable() const
Bool_tRooAbsIntegrator::isValid() const
Bool_tTObject::IsZombie() const
virtual voidTObject::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) const
virtual Bool_tTObject::Notify()
static voidTObject::operator delete(void* ptr)
static voidTObject::operator delete(void* ptr, void* vp)
static voidTObject::operator delete[](void* ptr)
static voidTObject::operator delete[](void* ptr, void* vp)
void*TObject::operator new(size_t sz)
void*TObject::operator new(size_t sz, void* vp)
void*TObject::operator new[](size_t sz)
void*TObject::operator new[](size_t sz, void* vp)
TObject&TObject::operator=(const TObject& rhs)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidTObject::Print(Option_t* option = "") const
Bool_tRooAbsIntegrator::printEvalCounter() const
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
voidTObject::ResetBit(UInt_t f)
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "")
voidsetAlpha(Double_t alpha)
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
voidsetGenType(RooMCIntegrator::GeneratorType type)
virtual Bool_tRooAbsIntegrator::setLimits(Double_t*, Double_t*)
virtual Bool_tRooAbsIntegrator::setLimits(Double_t xmin, Double_t xmax)
static voidTObject::SetObjectStat(Bool_t stat)
voidRooAbsIntegrator::setPrintEvalCounter(Bool_t value)
virtual voidTObject::SetUniqueID(UInt_t uid)
virtual Bool_tRooAbsIntegrator::setUseIntegrandLimits(Bool_t flag)
virtual voidShowMembers(TMemberInspector& insp)
virtual voidStreamer(TBuffer& b)
voidStreamerNVirtual(TBuffer& b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
virtual voidTObject::UseCurrentStyle()
Double_tvegas(RooMCIntegrator::Stage stage, UInt_t calls, UInt_t iterations, Double_t* absError = 0)
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const
protected:
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
voidTObject::MakeZombie()
static voidregisterIntegrator(RooNumIntFactory& fact)

Data Members

public:
enum SamplingMode { Importance
ImportanceOnly
Stratified
};
enum GeneratorType { QuasiRandom
PseudoRandom
};
enum Stage { AllStages
ReuseGrid
RefineGrid
};
enum TObject::EStatusBits { kCanDelete
kMustCleanup
kObjInCanvas
kIsReferenced
kHasUUID
kCannotPick
kNoContextMenu
kInvalidObject
};
enum TObject::[unnamed] { kIsOnHeap
kNotDeleted
kZombie
kBitMask
kSingleKey
kOverwrite
kWriteDelete
};
protected:
Double_t_alphaGrid stiffness parameter
UInt_t_calls_per_boxScratch variables preserved between calls to vegas1/2/2
Double_t_chi_sum
Double_t_chisq
const RooAbsFunc*RooAbsIntegrator::_functionPointer to function binding of integrand
RooMCIntegrator::GeneratorType_genTypeGenerator type
RooGrid_gridSampling grid definition
UInt_t_it_num
UInt_t_it_start
Double_t_jac
Int_t_modeSampling mode
Int_t_nIntegratePerDimNumber of integration samplings (per dim)
Int_t_nRefineIterNumber of refinement iterations
Int_t_nRefinePerDimNumber of refinement samplings (per dim)
Bool_tRooAbsIntegrator::_printEvalCounterIf true print number of function evaluation required for integration
Double_t_result
UInt_t_samples
Double_t_sigmaScratch variables preserved between calls to vegas1/2/2
Double_t_sum_wgts
TStopwatch_timerTimer
Bool_tRooAbsIntegrator::_validIs integrator in valid state?
Bool_t_verboseVerbosity control
Double_t_wtd_int_sum

Class Charts

Inheritance Inherited Members Includes Libraries
Class Charts

Function documentation

void registerIntegrator(RooNumIntFactory& fact)
 This function registers class RooMCIntegrator, its configuration options
 and its capabilities with RooNumIntFactory
RooMCIntegrator()
 Default constructor

 coverity[UNINIT_CTOR]
RooMCIntegrator(const RooAbsFunc& function, RooMCIntegrator::SamplingMode mode = Importance, RooMCIntegrator::GeneratorType genType = QuasiRandom, Bool_t verbose = kFALSE)
 Construct an integrator over 'function' with given sampling mode
 and generator type.  The sampling mode can be 'Importance'
 (default), 'ImportanceOnly' and 'Stratified'. The generator type
 can be 'QuasiRandom' (default) and 'PseudoRandom'. Consult the original
 VEGAS documentation on details of the mode and type parameters.
RooMCIntegrator(const RooAbsFunc& function, const RooNumIntConfig& config)
 Construct an integrator over 'function' where the configuration details
 are taken from 'config'
RooAbsIntegrator* clone(const RooAbsFunc& function, const RooNumIntConfig& config) const
 Return clone of this generator operating on given function with given configuration
 Needed to support RooNumIntFactory
~RooMCIntegrator()
 Destructor
Bool_t checkLimits() const
 Check if we can integrate over the current domain. If return value
 is kTRUE we cannot handle the current limits (e.g. where the domain
 of one or more observables is open ended.
Double_t integral(const Double_t* yvec = 0)
 Evaluate the integral using a fixed number of calls to evaluate the integrand
 equal to about 10k per dimension. Use the first 5k calls to refine the grid
 over 5 iterations of 1k calls each, and the remaining 5k calls for a single
 high statistics integration.
Double_t vegas(RooMCIntegrator::Stage stage, UInt_t calls, UInt_t iterations, Double_t* absError = 0)
 Perform one step of Monte Carlo integration using the specified number of iterations
 with (approximately) the specified number of integrand evaluation calls per iteration.
 Use the VEGAS algorithm, starting from the specified stage. Returns the best estimate
 of the integral. Also sets *absError to the estimated absolute error of the integral
 estimate if absError is non-zero.
RooMCIntegrator()
Double_t getAlpha() const
{ return _alpha; }
void setAlpha(Double_t alpha)
{ _alpha= alpha; }
GeneratorType getGenType() const
{ return _genType; }
void setGenType(RooMCIntegrator::GeneratorType type)
{ _genType= type; }
const RooGrid & grid() const
{ return _grid; }
Bool_t canIntegrate1D() const
{ return kTRUE ; }
Bool_t canIntegrate2D() const
{ return kTRUE ; }
Bool_t canIntegrateND() const
{ return kTRUE ; }
Bool_t canIntegrateOpenEnded() const
{ return kFALSE ; }