36using std::endl, std::ostream;
46 static bool initStarted =
false;
70 _method1D(
"method1D",
"1D integration method"),
71 _method2D(
"method2D",
"2D integration method"),
72 _methodND(
"methodND",
"ND integration method"),
73 _method1DOpen(
"method1DOpen",
"1D integration method in open domain"),
74 _method2DOpen(
"method2DOpen",
"2D integration method in open domain"),
75 _methodNDOpen(
"methodNDOpen",
"ND integration method in open domain")
116 RooArgSet* setCopy = new RooArgSet;
117 set->snapshot(*setCopy);
118 setCopy->setName(set->GetName()) ;
119 _configSets.Add(setCopy);
150 set->snapshot(*setCopy);
166 bool canIntegrate2D,
bool canIntegrateND,
bool canIntegrateOpenEnded)
169 if (canIntegrate1D) {
171 if (canIntegrateOpenEnded) {
176 if (canIntegrate2D) {
178 if (canIntegrateOpenEnded) {
183 if (canIntegrateND) {
185 if (canIntegrateOpenEnded) {
218 oocoutE(
nullptr,InputArguments) <<
"RooNumIntConfig::getConfigSection: ERROR: no configuration stored for integrator '" <<
name <<
"'" << std::endl ;
232 oocoutE(
nullptr,InputArguments) <<
"RooNumIntConfig::setEpsAbs: ERROR: target absolute precision must be greater or equal than zero" << std::endl ;
262 oocoutE(
nullptr,InputArguments) <<
"RooNumIntConfig::setEpsRel: ERROR: target absolute precision must be greater or equal than zero" << std::endl ;
275 os <<
indent <<
"Requested precision: " <<
_epsAbs <<
" absolute, " <<
_epsRel <<
" relative" << std::endl << std::endl ;
277 os <<
indent <<
"Printing of function evaluation counter for each integration enabled" << std::endl << std::endl ;
280 os <<
indent <<
"1-D integration method: " <<
_method1D.getCurrentLabel() ;
282 os <<
" (" <<
_method1DOpen.getCurrentLabel() <<
" if open-ended)" << std::endl ;
286 os <<
indent <<
"2-D integration method: " <<
_method2D.getCurrentLabel() ;
288 os <<
" (" <<
_method2DOpen.getCurrentLabel() <<
" if open-ended)" << std::endl ;
292 os <<
indent <<
"N-D integration method: " <<
_methodND.getCurrentLabel() ;
294 os <<
" (" <<
_methodNDOpen.getCurrentLabel() <<
" if open-ended)" << std::endl ;
301 os << std::endl <<
"Available integration methods:" << std::endl << std::endl ;
306 os <<
indent <<
"*** " << configSet->GetName() <<
" ***" << std::endl ;
307 os <<
indent <<
"Capabilities: " ;
308 if (info.canIntegrate1D) os <<
"[1-D] " ;
309 if (info.canIntegrate2D) os <<
"[2-D] " ;
310 if (info.canIntegrateND) os <<
"[N-D] " ;
311 if (info.canIntegrateOpenEnded) os <<
"[OpenEnded] " ;
314 os <<
"Configuration: " << std::endl ;
318 if (!info.depName.empty()) {
319 os <<
indent <<
"(Depends on '" << info.depName <<
"')" << std::endl ;
ROOT::RRangeCast< T, false, Range_t > static_range_cast(Range_t &&coll)
int Int_t
Signed integer 4 bytes (int).
const char Option_t
Option string (const char).
static void indent(ostringstream &buf, int indent_level)
void setName(const char *name)
RooArgSet is a container object that can hold multiple RooAbsArg objects.
RooArgSet * snapshot(bool deepCopy=true) const
Use RooAbsCollection::snapshot(), but return as RooArgSet.
value_type getCurrentIndex() const final
Return current index.
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(std::string const &name, const RooArgSet &inDefaultConfig, bool canIntegrate1D, bool canIntegrate2D, bool canIntegrateND, bool canIntegrateOpenEnded)
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.
static RooNumIntConfig & defaultConfig()
Return reference to instance of default numeric integrator configuration object.
void setEpsAbs(double newEpsAbs)
Set absolute convergence criteria (convergence if std::abs(Err)<newEpsAbs).
PluginInfo const * getPluginInfo(std::string const &name) const
static RooNumIntFactory & instance()
Static method returning reference to singleton instance of factory.
TObject()
TObject constructor.
void ToLower()
Change string to lower-case.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const