#include <iomanip>
 
{
 
   
   
 
   
 
   
   
   
   
   
   
   
   
   
   
   
 
   
   
 
   RooLandau landau(
"landau", 
"landau", 
x, RooConst(0), RooConst(0.1));
 
 
   
   landau.forceNumInt(true);
 
   
 
   
   std::unique_ptr<RooAbsReal> intLandau{landau.createIntegral(
x)};
 
   double val = intLandau->getVal();
   cout << " [1] int_dx landau(x) = " << setprecision(15) << val << endl;
 
   
   
 
   
   
#ifdef R__HAS_MATHMORE
   customConfig.method1D().setLabel("RooAdaptiveGaussKronrodIntegrator1D");
#else
   Warning(
"rf901_numintconfig",
"ROOT is built without Mathmore (GSL) support. Cannot use RooAdaptiveGaussKronrodIntegrator1D");
 
#endif
 
   
   std::unique_ptr<RooAbsReal> intLandau2{landau.createIntegral(
x, NumIntConfig(customConfig))};
 
   double val2 = intLandau2->getVal();
   cout << " [2] int_dx landau(x) = " << val2 << endl;
 
   
   
 
   
   landau.setIntegratorConfig(customConfig);
 
   
   std::unique_ptr<RooAbsReal> intLandau3{landau.createIntegral(
x)};
 
   double val3 = intLandau3->getVal();
   cout << " [3] int_dx landau(x) = " << val3 << endl;
 
   
#ifdef R__HAS_MATHMORE
 
   
   
 
   
 
   
   
   
   customConfig.getConfigSection("RooAdaptiveGaussKronrodIntegrator1D").setRealValue("maxSeg", 50);
   customConfig.getConfigSection("RooAdaptiveGaussKronrodIntegrator1D").setCatLabel("method", "15Points");
 
   
   customConfig.getConfigSection("RooAdaptiveGaussKronrodIntegrator1D").find("method")->Print("v");
#endif
 
}
void Warning(const char *location, const char *msgfmt,...)
Use this function in warning situations.
 
bool setRealValue(const char *name, double newVal=0.0, bool verbose=false)
Set value of a RooAbsRealLValye stored in set with given name to newVal No error messages are printed...
 
static RooNumIntConfig * defaultIntegratorConfig()
Returns the default numeric integration configuration for all RooAbsReals.
 
bool setLabel(const char *label, bool printError=true) override
Set value by specifying the name of the desired state.
 
Landau distribution p.d.f.
 
static RooMsgService & instance()
Return reference to singleton instance.
 
Int_t addStream(RooFit::MsgLevel level, const RooCmdArg &arg1=RooCmdArg(), const RooCmdArg &arg2=RooCmdArg(), const RooCmdArg &arg3=RooCmdArg(), const RooCmdArg &arg4=RooCmdArg(), const RooCmdArg &arg5=RooCmdArg(), const RooCmdArg &arg6=RooCmdArg())
Add a message logging stream for message with given RooFit::MsgLevel or higher.
 
RooNumIntConfig holds the configuration parameters of the various numeric integrators used by RooReal...
 
void Print(Option_t *options=nullptr) const override
This method must be overridden when a class wants to print itself.
 
void setEpsRel(double newEpsRel)
Set relative convergence criteria (convergence if std::abs(Err)/abs(Int)<newEpsRel)
 
const RooArgSet & getConfigSection(const char *name) const
Retrieve configuration information specific to integrator with given name.
 
void setEpsAbs(double newEpsAbs)
Set absolute convergence criteria (convergence if std::abs(Err)<newEpsAbs)
 
RooRealVar represents a variable that can be changed from the outside.
 
The namespace RooFit contains mostly switches that change the behaviour of functions of PDFs (or othe...
 
   
Requested precision: 1e-07 absolute, 1e-07 relative
 
1-D integration method: RooIntegrator1D (RooImproperIntegrator1D if open-ended)
2-D integration method: RooAdaptiveIntegratorND (N/A if open-ended)
N-D integration method: RooAdaptiveIntegratorND (N/A if open-ended)
 
Available integration methods:
 
*** RooBinIntegrator ***
Capabilities: [1-D] [2-D] [N-D] 
Configuration: 
  1)  numBins = 100
 
*** RooIntegrator1D ***
Capabilities: [1-D] 
Configuration: 
  1)        sumRule = Trapezoid(idx = 0)
 
  2)  extrapolation = Wynn-Epsilon(idx = 1)
 
  3)       maxSteps = 20
  4)       minSteps = 999
  5)       fixSteps = 0
 
*** RooIntegrator2D ***
Capabilities: [2-D] 
Configuration: 
(Depends on 'RooIntegrator1D')
 
*** RooSegmentedIntegrator1D ***
Capabilities: [1-D] 
Configuration: 
  1)  numSeg = 3
(Depends on 'RooIntegrator1D')
 
*** RooSegmentedIntegrator2D ***
Capabilities: [2-D] 
Configuration: 
(Depends on 'RooSegmentedIntegrator1D')
 
*** RooImproperIntegrator1D ***
Capabilities: [1-D] [OpenEnded] 
Configuration: 
(Depends on 'RooIntegrator1D')
 
*** RooMCIntegrator ***
Capabilities: [1-D] [2-D] [N-D] 
Configuration: 
  1)   samplingMode = Importance(idx = 0)
 
  2)        genType = QuasiRandom(idx = 0)
 
  3)        verbose = false(idx = 0)
 
  4)          alpha = 1.5
  5)    nRefineIter = 5
  6)  nRefinePerDim = 1000
  7)     nIntPerDim = 5000
 
*** RooAdaptiveIntegratorND ***
Capabilities: [2-D] [N-D] 
Configuration: 
  1)  maxEval2D = 100000
  2)  maxEval3D = 1e+06
  3)  maxEvalND = 1e+07
  4)    maxWarn = 5
 
*** RooAdaptiveGaussKronrodIntegrator1D ***
Capabilities: [1-D] [OpenEnded] 
Configuration: 
  1)  maxSeg = 100
  2)  method = 21Points(idx = 2)
 
 
*** RooGaussKronrodIntegrator1D ***
Capabilities: [1-D] [OpenEnded] 
Configuration: 
 
[#3] INFO:Integration -- RooRealIntegral::ctor(landau_Int[x]) Constructing integral of function landau over observables(x) with normalization () with range identifier <none>
[#3] DEBUG:Integration -- landau: Adding observable x as shape dependent
[#3] DEBUG:Integration -- landau: Adding parameter 0 as value dependent
[#3] DEBUG:Integration -- landau: Adding parameter 0.1 as value dependent
[#3] INFO:Integration -- landau: Observable x is suitable for analytical integration (if supported by p.d.f)
[#3] INFO:Integration -- landau: Observables (x) are numerically integrated
[#1] INFO:NumericIntegration -- RooRealIntegral::init(landau_Int[x]) using numeric integrator RooIntegrator1D to calculate Int(x)
 [1] int_dx landau(x) = 0.0989653362054419
[#3] INFO:Integration -- RooRealIntegral::ctor(landau_Int[x]) Constructing integral of function landau over observables(x) with normalization () with range identifier <none>
[#3] DEBUG:Integration -- landau: Adding observable x as shape dependent
[#3] DEBUG:Integration -- landau: Adding parameter 0 as value dependent
[#3] DEBUG:Integration -- landau: Adding parameter 0.1 as value dependent
[#3] INFO:Integration -- landau: Observable x is suitable for analytical integration (if supported by p.d.f)
[#3] INFO:Integration -- landau: Observables (x) are numerically integrated
[#1] INFO:NumericIntegration -- RooRealIntegral::init(landau_Int[x]) using numeric integrator RooAdaptiveGaussKronrodIntegrator1D to calculate Int(x)
 [2] int_dx landau(x) = 0.098957102921895
[#3] INFO:Integration -- RooRealIntegral::ctor(landau_Int[x]) Constructing integral of function landau over observables(x) with normalization () with range identifier <none>
[#3] DEBUG:Integration -- landau: Adding observable x as shape dependent
[#3] DEBUG:Integration -- landau: Adding parameter 0 as value dependent
[#3] DEBUG:Integration -- landau: Adding parameter 0.1 as value dependent
[#3] INFO:Integration -- landau: Observable x is suitable for analytical integration (if supported by p.d.f)
[#3] INFO:Integration -- landau: Observables (x) are numerically integrated
[#1] INFO:NumericIntegration -- RooRealIntegral::init(landau_Int[x]) using numeric integrator RooAdaptiveGaussKronrodIntegrator1D to calculate Int(x)
 [3] int_dx landau(x) = 0.098957102921895
--- RooAbsArg ---
  Value State: clean
  Shape State: clean
  Attributes: 
  Address: 0x55f66dce5ba0
  Clients: 
  Servers: 
  Proxies: 
--- RooAbsCategory ---
  Value = 1 "15Points)
  Possible states:
    15Points   1
    21Points   2
    31Points   3
    41Points   4
    51Points   5
    61Points   6
    WynnEpsilon   0