47 static bool initStarted =
false;
70 _printEvalCounter(false),
71 _method1D(
"method1D",
"1D integration method"),
72 _method2D(
"method2D",
"2D integration method"),
73 _methodND(
"methodND",
"ND integration method"),
74 _method1DOpen(
"method1DOpen",
"1D integration method in open domain"),
75 _method2DOpen(
"method2DOpen",
"2D integration method in open domain"),
76 _methodNDOpen(
"methodNDOpen",
"ND integration method in open domain")
105 _epsAbs(other._epsAbs),
106 _epsRel(other._epsRel),
107 _printEvalCounter(other._printEvalCounter),
108 _method1D(other._method1D),
109 _method2D(other._method2D),
110 _methodND(other._methodND),
111 _method1DOpen(other._method1DOpen),
112 _method2DOpen(other._method2DOpen),
113 _methodNDOpen(other._methodNDOpen)
116 for(
auto * set : static_range_cast<RooArgSet*>(other.
_configSets)) {
118 setCopy->
setName(set->GetName()) ;
148 for(
auto * set : static_range_cast<RooArgSet*>(other.
_configSets)) {
150 setCopy->
setName(set->GetName()) ;
169 if (
proto->canIntegrate1D()) {
171 if (
proto->canIntegrateOpenEnded()) {
176 if (
proto->canIntegrate2D()) {
178 if (
proto->canIntegrateOpenEnded()) {
183 if (
proto->canIntegrateND()) {
185 if (
proto->canIntegrateOpenEnded()) {
217 oocoutE(
nullptr,InputArguments) <<
"RooNumIntConfig::getConfigSection: ERROR: no configuration stored for integrator '" <<
name <<
"'" << endl ;
231 oocoutE(
nullptr,InputArguments) <<
"RooNumIntConfig::setEpsAbs: ERROR: target absolute precision must be greater or equal than zero" << endl ;
261 oocoutE(
nullptr,InputArguments) <<
"RooNumIntConfig::setEpsRel: ERROR: target absolute precision must be greater or equal than zero" << endl ;
274 os <<
indent <<
"Requested precision: " <<
_epsAbs <<
" absolute, " <<
_epsRel <<
" relative" << endl << endl ;
276 os <<
indent <<
"Printing of function evaluation counter for each integration enabled" << endl << endl ;
300 os << endl <<
"Available integration methods:" << endl << endl ;
301 for(
auto * configSet : static_range_cast<RooArgSet*>(
_configSets)) {
303 os <<
indent <<
"*** " << configSet->GetName() <<
" ***" << endl ;
304 os <<
indent <<
"Capabilities: " ;
306 if (
proto->canIntegrate1D()) os <<
"[1-D] " ;
307 if (
proto->canIntegrate2D()) os <<
"[2-D] " ;
308 if (
proto->canIntegrateND()) os <<
"[N-D] " ;
309 if (
proto->canIntegrateOpenEnded()) os <<
"[OpenEnded] " ;
312 os <<
"Configuration: " << endl ;
317 if (strlen(depName)>0) {
318 os <<
indent <<
"(Depends on '" << depName <<
"')" << endl ;
static void indent(ostringstream &buf, int indent_level)
virtual const char * getCurrentLabel() const
Return label string of current state.
void setName(const char *name)
RooAbsIntegrator is the abstract interface for integrators of real-valued functions that implement th...
RooArgSet is a container object that can hold multiple RooAbsArg objects.
RooArgSet * snapshot(bool deepCopy=true) const
Use RooAbsCollection::snapshot(), but return as RooArgSet.
bool setIndex(Int_t index, bool printError=true) override
Set value by specifying the index code of the desired state.
bool defineType(const std::string &label)
Define a state with given name.
value_type getCurrentIndex() const final
Return current index.
void Delete(Option_t *o=nullptr) override
Remove all elements in collection and delete all elements NB: Collection does not own elements,...
virtual void Add(TObject *arg)
TObject * FindObject(const char *name) const override
Return pointer to obejct with given name.
RooNumIntConfig holds the configuration parameters of the various numeric integrators used by RooReal...
RooCategory _method1D
Selects integration method for 1D integrals.
RooCategory _method1DOpen
Selects integration method for open ended 1D integrals.
void printMultiline(std::ostream &os, Int_t content, bool verbose, TString indent="") const override
Detailed printing interface.
RooNumIntConfig()
Constructor.
RooLinkedList _configSets
List of configuration sets for individual integration methods.
void setEpsRel(double newEpsRel)
Set relative convergence criteria (convergence if std::abs(Err)/abs(Int)<newEpsRel)
RooCategory _methodND
Selects integration method for ND integrals.
const RooArgSet & getConfigSection(const char *name) const
Retrieve configuration information specific to integrator with given name.
double _epsAbs
Absolute precision.
RooCategory _methodNDOpen
Selects integration method for open ended ND integrals.
bool _printEvalCounter
Flag to control printing of function evaluation counter.
double _epsRel
Relative precision.
~RooNumIntConfig() override
Destructor.
StyleOption defaultPrintStyle(Option_t *opt) const override
bool addConfigSection(const RooAbsIntegrator *proto, const RooArgSet &defaultConfig)
Add a configuration section for a particular integrator.
RooCategory _method2D
Selects integration method for 2D integrals.
RooCategory _method2DOpen
Selects integration method for open ended 2D integrals.
RooNumIntConfig & operator=(const RooNumIntConfig &other)
Assignment operator from other RooNumIntConfig.
void setEpsAbs(double newEpsAbs)
Set absolute convergence criteria (convergence if std::abs(Err)<newEpsAbs)
const RooAbsIntegrator * getProtoIntegrator(const char *name) const
Return prototype integrator with given (class) name.
const char * getDepIntegratorName(const char *name) const
Get list of class names of integrators needed by integrator named 'name'.
static RooNumIntFactory & instance()
Static method returning reference to singleton instance of factory.
RooPlotable is a 'mix-in' base class that define the standard RooFit plotting and printing methods.
Mother of all ROOT objects.
void ToLower()
Change string to lower-case.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const