ROOT logo
ROOT » ROOFIT » ROOFITCORE » RooGaussKronrodIntegrator1D

class RooGaussKronrodIntegrator1D: public RooAbsIntegrator



RooGaussKronrodIntegrator1D implements the Gauss-Kronrod integration algorithm. An Gaussian quadrature method for numerical integration in which error is estimation based on evaluation at special points known as "Kronrod points." By suitably picking these points, abscissas from previous iterations can be reused as part of the new set of points, whereas usual Gaussian quadrature would require recomputation of all abscissas at each iteration. This class automatically handles (-inf,+inf) integrals by dividing the integration in three regions (-inf,-1), (-1,1), (1,inf) and calculating the 1st and 3rd term using a x -> 1/x coordinate transformation This class embeds the Gauss-Kronrod integrator from the GNU Scientific Library version 1.5 and applies the 10-, 21-, 43- and 87-point rule in succession until the required target precision is reached

Function Members (Methods)

public:
RooGaussKronrodIntegrator1D()
RooGaussKronrodIntegrator1D(const RooGaussKronrodIntegrator1D&)
RooGaussKronrodIntegrator1D(const RooAbsFunc& function, const RooNumIntConfig& config)
RooGaussKronrodIntegrator1D(const RooAbsFunc& function, Double_t xmin, Double_t xmax, const RooNumIntConfig& config)
virtual~RooGaussKronrodIntegrator1D()
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
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
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
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()
voidTObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const
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(ostream& out, Option_t* option = "")
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)
virtual Bool_tsetLimits(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_tsetUseIntegrandLimits(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()
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
Bool_tinitialize()
voidTObject::MakeZombie()
static voidregisterIntegrator(RooNumIntFactory& fact)
Double_t*xvec(Double_t& xx)

Data Members

protected:
Double_t_epsAbsAbsolute precision
Double_t_epsRelRelative precision
const RooAbsFunc*RooAbsIntegrator::_functionPointer to function binding of integrand
Bool_tRooAbsIntegrator::_printEvalCounterIf true print number of function evaluation required for integration
Bool_t_useIntegrandLimitsUse limits in function binding?
Bool_tRooAbsIntegrator::_validIs integrator in valid state?
Double_t*_x! do not persist
Double_t_xmax! Upper integration bound
Double_t_xmin! Lower integration bound

Class Charts

Inheritance Inherited Members Includes Libraries
Class Charts

Function documentation

void registerIntegrator(RooNumIntFactory& fact)
 Register RooGaussKronrodIntegrator1D, its parameters and capabilities with RooNumIntConfig
RooGaussKronrodIntegrator1D()
 coverity[UNINIT_CTOR]
 Default constructor
RooGaussKronrodIntegrator1D(const RooAbsFunc& function, const RooNumIntConfig& config)
 Construct integral on 'function' using given configuration object. The integration
 range is taken from the definition in the function binding
RooGaussKronrodIntegrator1D(const RooAbsFunc& function, Double_t xmin, Double_t xmax, const RooNumIntConfig& config)
 Construct integral on 'function' using given configuration object in the given range
RooAbsIntegrator* clone(const RooAbsFunc& function, const RooNumIntConfig& config) const
 Clone integrator with given function and configuration. Needed for RooNumIntFactory
Bool_t initialize()
 Perform one-time initialization of integrator
~RooGaussKronrodIntegrator1D()
 Destructor
Bool_t setLimits(Double_t* xmin, Double_t* xmax)
 Change our integration limits. Return kTRUE if the new limits are
 ok, or otherwise kFALSE. Always returns kFALSE and does nothing
 if this object was constructed to always use our integrand's limits.
Bool_t checkLimits() const
 Check that our integration range is finite and otherwise return kFALSE.
 Update the limits from the integrand if requested.
Double_t integral(const Double_t* yvec = 0)
 Calculate and return integral
RooGaussKronrodIntegrator1D()
 Constructors, assignment etc
Bool_t setUseIntegrandLimits(Bool_t flag)
{_useIntegrandLimits = flag ; return kTRUE ; }
Bool_t canIntegrate1D() const
{ return kTRUE ; }
Bool_t canIntegrate2D() const
{ return kFALSE ; }
Bool_t canIntegrateND() const
{ return kFALSE ; }
Bool_t canIntegrateOpenEnded() const
{ return kTRUE ; }
Double_t* xvec(Double_t& xx)
{ _x[0] = xx ; return _x ; }