ROOT logo
ROOT » ROOFIT » ROOFITCORE » RooAdaptiveGaussKronrodIntegrator1D

class RooAdaptiveGaussKronrodIntegrator1D: public RooAbsIntegrator



RooAdaptiveGaussKronrodIntegrator1D implements the Gauss-Kronrod integration algorithm. An adaptive 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 adaptive Gauss-Kronrod integrator from the GNU Scientific Library version 1.5 and applies a chosen rule ( 10-, 21-, 31-, 41, 51- or 61-point). The integration domain is subdivided and recursively integrated until the required precision is reached. For integrands with integrable singulaties the Wynn epsilon rule can be selected to speed up the converges of these integrals

Function Members (Methods)

public:
RooAdaptiveGaussKronrodIntegrator1D()
RooAdaptiveGaussKronrodIntegrator1D(const RooAdaptiveGaussKronrodIntegrator1D&)
RooAdaptiveGaussKronrodIntegrator1D(const RooAbsFunc& function, const RooNumIntConfig& config)
RooAdaptiveGaussKronrodIntegrator1D(const RooAbsFunc& function, Double_t xmin, Double_t xmax, const RooNumIntConfig& config)
virtual~RooAdaptiveGaussKronrodIntegrator1D()
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()
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 = "")
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, char* parent)
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

public:
enum DomainType { Closed
OpenLo
OpenHi
Open
};
enum TObject::EStatusBits { kCanDelete
kMustCleanup
kObjInCanvas
kIsReferenced
kHasUUID
kCannotPick
kNoContextMenu
kInvalidObject
};
enum TObject::[unnamed] { kIsOnHeap
kNotDeleted
kZombie
kBitMask
kSingleKey
kOverwrite
kWriteDelete
};
protected:
RooAdaptiveGaussKronrodIntegrator1D::DomainType_domainType
Double_t_epsAbsAbsolute precision
Double_t_epsRelRelative precision
const RooAbsFunc*RooAbsIntegrator::_functionPointer to function binding of integrand
Int_t_maxSegMaximum number of segments
Int_t_methodKeyGSL method key
Bool_tRooAbsIntegrator::_printEvalCounterIf true print number of function evaluation required for integration
Bool_t_useIntegrandLimits
Bool_tRooAbsIntegrator::_validIs integrator in valid state?
void*_workspaceGSL workspace
Double_t*_x! Current coordinate
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 this class with RooNumIntConfig as a possible choice of numeric
 integrator for one-dimensional integrals over finite and infinite domains
RooAdaptiveGaussKronrodIntegrator1D()
 Default constructor
RooAdaptiveGaussKronrodIntegrator1D(const RooAbsFunc& function, const RooNumIntConfig& config)
 Constructor taking a function binding and a configuration object
RooAdaptiveGaussKronrodIntegrator1D(const RooAbsFunc& function, Double_t xmin, Double_t xmax, const RooNumIntConfig& config)
 Constructor taking a function binding, an integration range and a configuration object
RooAbsIntegrator* clone(const RooAbsFunc& function, const RooNumIntConfig& config) const
 Virtual constructor
Bool_t initialize()
 Initialize integrator allocate buffers and setup GSL workspace
~RooAdaptiveGaussKronrodIntegrator1D()
 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 at at given parameter values
RooAdaptiveGaussKronrodIntegrator1D()
 Constructors, assignment etc
Bool_t setUseIntegrandLimits(Bool_t flag)
 If flag is true, intergration limits are taken from definition in input function binding
Bool_t canIntegrate1D() const
 We can integrate 1-dimensional functions
Bool_t canIntegrate2D() const
 We can not integrate 2-dimensional functions
Bool_t canIntegrateND() const
 We can not integrate >2-dimensional functions
Bool_t canIntegrateOpenEnded() const
 We can integrate over open-ended domains
Double_t* xvec(Double_t& xx)
 Return contents of xx in internal array pointer