Rf 9 0 2_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 Monday, December 06, 2021 at 09:54 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>
In [2]:
%%cpp -d
// This is a workaround to make sure the namespace is used inside functions
using namespace RooFit;

Adjust global mc sampling strategy

Example pdf for use below

In [3]:
RooRealVar x("x", "x", 0, 10);
RooChebychev model("model", "model", x, RooArgList(0, 0.5, -0.1));
RooFit v3.60 -- Developed by Wouter Verkerke and David Kirkby 
                Copyright (C) 2000-2013 NIKHEF, University of California & Stanford University
                All rights reserved, please read http://roofit.sourceforge.net/license.txt

Change global strategy for 1d sampling problems without conditional observable (1st kFALSE) and without discrete observable (2nd kFALSE) 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 [4]:
RooAbsPdf::defaultGeneratorConfig()->method1D(kFALSE, kFALSE).setLabel("RooAcceptReject");
[#0] ERROR:InputArguments -- Trying to set invalid state label 'RooAcceptReject' for category method1D

Generate 10kevt using rooacceptreject

In [5]:
RooDataSet *data_ar = model.generate(x, 10000, Verbose(kTRUE));
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 kTRUE argument will install a clone of the default configuration as specialized configuration for this model if none existed so far

In [6]:
model.specialGeneratorConfig(kTRUE)->method1D(kFALSE, kFALSE).setLabel("RooFoamGenerator");

Adjusting parameters of a specific technique

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

In [7]:
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 [8]:
model.specialGeneratorConfig()->getConfigSection("RooFoamGenerator").setRealValue("chatLevel", 1);

Generate 10kevt using roofoamgenerator (foam verbosity increased with above chatlevel adjustment for illustration purposes)

In [9]:
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