rf902_numgenconfig

Numeric algorithm tuning: configuration and customization of how MC sampling algorithms on specific pdfs are executed

Author: Wouter Verkerke
This notebook tutorial was automatically generated with ROOTBOOK-izer from the macro found in the ROOT repository on Sunday, November 27, 2022 at 11:08 AM.

In [1]:
%%cpp -d
#include "RooRealVar.h"
#include "RooDataSet.h"
#include "RooChebychev.h"
#include "TCanvas.h"
#include "TAxis.h"
#include "RooPlot.h"
#include "RooNumGenConfig.h"
#include "RooArgSet.h"
#include <iomanip>
using namespace RooFit;

Adjust global MC sampling strategy

Example pdf for use below

In [2]:
RooRealVar x("x", "x", 0, 10);
RooChebychev model("model", "model", x, RooArgList(0, 0.5, -0.1));

Change global strategy for 1D sampling problems without conditional observable (1st false) and without discrete observable (2nd false) from RooFoamGenerator, ( an interface to the TFoam MC generator with adaptive subdivisioning strategy ) to RooAcceptReject, a plain accept/reject sampling algorithm [ RooFit default before ROOT 5.23/04 ]

In [3]:
RooAbsPdf::defaultGeneratorConfig()->method1D(false, false).setLabel("RooAcceptReject");
[#0] ERROR:InputArguments -- Trying to set invalid state label 'RooAcceptReject' for category method1D

Generate 10Kevt using RooAcceptReject

In [4]:
RooDataSet *data_ar = model.generate(x, 10000, Verbose(true));
data_ar->Print();
 --- RooGenContext --- 
Using PDF RooChebychev::model[ x=x coefList=(0,0.5,-0.1) ]
Use PDF generator for ()
Use MC sampling generator RooFoamGenerator for (x)
RooDataSet::modelData[x] = 10000 entries

Adjusting default config for a specific pdf

Another possibility: associate custom MC sampling configuration as default for object 'model' The true argument will install a clone of the default configuration as specialized configuration for this model if none existed so far

In [5]:
model.specialGeneratorConfig(true)->method1D(false, false).setLabel("RooFoamGenerator");

Adjusting parameters of a specific technique

Adjust maximum number of steps of RooIntegrator1D in the global default configuration

In [6]:
RooAbsPdf::defaultGeneratorConfig()->getConfigSection("RooAcceptReject").setRealValue("nTrial1D", 2000);

Example of how to change the parameters of a numeric integrator (Each config section is a RooArgSet with RooRealVars holding real-valued parameters and RooCategories holding parameters with a finite set of options)

In [7]:
model.specialGeneratorConfig()->getConfigSection("RooFoamGenerator").setRealValue("chatLevel", 1);

Generate 10Kevt using RooFoamGenerator (FOAM verbosity increased with above chatLevel adjustment for illustration purposes)

In [8]:
RooDataSet *data_foam = model.generate(x, 10000, Verbose());
data_foam->Print();
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
F                                                                              F
F                   ****************************************                   F
F                    ******      TFoam::Initialize    ******                   F
F                   ****************************************                   F
F                                                      TFOAM                   F
F    Version =           1.02M   =                   Release date:  2005.04.10 F
F       kDim =          1 =  Dimension of the hyper-cubical space              F
F     nCells =         30 =  Requested number of Cells (half of them active)   F
F     nSampl =        200 =  No of MC events in exploration of a cell          F
F       nBin =          8 =  No of bins in histograms, MC exploration of cell  F
F   EvPerBin =         25 =  Maximum No effective_events/bin, MC exploration   F
F   OptDrive =          2 =  Type of Driver   =1,2 for Sigma,WtMax             F
F     OptRej =          1 =  MC rejection on/off for OptRej=0,1                F
F   MaxWtRej =             1.1   =       Maximum wt in rejection for wt=1 evts F
F                                                                              F
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
11
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
F                                                                              F
F                    ***  TFoam::Initialize FINISHED!!!  ***                   F
F     nCalls =       5800 =            Total number of function calls          F
F     XPrime =      0.10992972   =     Primary total integral                  F
F     XDiver =     0.010000374   =     Driver  total integral                  F
F   mcResult =     0.099929343   =     Estimate of the true MC Integral        F
F                                                                              F
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
 --- RooGenContext --- 
Using PDF RooChebychev::model[ x=x coefList=(0,0.5,-0.1) ]
Use PDF generator for ()
Use MC sampling generator RooFoamGenerator for (x)
RooDataSet::modelData[x] = 10000 entries