Logo ROOT  
Reference Guide
RooFoamGenerator.h
Go to the documentation of this file.
1/*****************************************************************************
2 * Project: RooFit *
3 * Package: RooFitCore *
4 * File: $Id$
5 * Authors: *
6 * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu *
7 * DK, David Kirkby, UC Irvine, dkirkby@uci.edu *
8 * *
9 * Copyright (c) 2000-2005, Regents of the University of California *
10 * and Stanford University. All rights reserved. *
11 * *
12 * Redistribution and use in source and binary forms, *
13 * with or without modification, are permitted according to the terms *
14 * listed in LICENSE (http://roofit.sourceforge.net/license.txt) *
15 *****************************************************************************/
16#ifndef ROO_FOAM_GENERATOR
17#define ROO_FOAM_GENERATOR
18
19#include "RooAbsNumGenerator.h"
20#include "RooPrintable.h"
21#include "RooArgSet.h"
22
23class RooAbsReal;
24class RooRealVar;
25class RooDataSet;
26
27class TFoam ;
28class RooTFoamBinding ;
29class RooNumGenFactory ;
30
32public:
33 RooFoamGenerator() : _binding(0), _tfoam(0), _xmin(0), _range(0), _vec(0) {} ;
34 RooFoamGenerator(const RooAbsReal &func, const RooArgSet &genVars, const RooNumGenConfig& config, Bool_t verbose=kFALSE, const RooAbsReal* maxFuncVal=0);
35 RooAbsNumGenerator* clone(const RooAbsReal& func, const RooArgSet& genVars, const RooArgSet& /*condVars*/,
36 const RooNumGenConfig& config, Bool_t verbose=kFALSE, const RooAbsReal* maxFuncVal=0) const override {
37 return new RooFoamGenerator(func,genVars,config,verbose,maxFuncVal) ;
38 }
39 ~RooFoamGenerator() override;
40
41 const RooArgSet *generateEvent(UInt_t remaining, Double_t& resampleRatio) override;
42
43 TFoam& engine() { return *_tfoam; }
44
45 Bool_t canSampleConditional() const override { return kFALSE ; }
46 Bool_t canSampleCategories() const override { return kFALSE ; }
47
48protected:
49
50 friend class RooNumGenFactory ;
51 static void registerSampler(RooNumGenFactory& fact) ;
52
53 RooTFoamBinding* _binding ; ///< Binding of RooAbsReal to TFoam function interface
54 TFoam* _tfoam ; ///< Instance of TFOAM generator
55 Double_t* _xmin ; ///< Lower bound of observables to be generated ;
56 Double_t* _range ; ///< Range of observables to be generated ;
57 Double_t* _vec ; ///< Transfer array for FOAM output
58
59
60 ClassDefOverride(RooFoamGenerator,0) // Context for generating a dataset from a PDF using the TFoam class
61};
62
63#endif
const Bool_t kFALSE
Definition: RtypesCore.h:101
#define ClassDefOverride(name, id)
Definition: Rtypes.h:339
Class RooAbsNumGenerator is the abstract base class for MC event generator implementations like RooAc...
RooAbsReal is the common abstract base class for objects that represent a real value and implements f...
Definition: RooAbsReal.h:63
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Definition: RooArgSet.h:57
RooDataSet is a container class to hold unbinned data.
Definition: RooDataSet.h:55
Class RooFoamGenerator is a generic toy monte carlo generator that implement the TFOAM sampling techn...
Double_t * _xmin
Lower bound of observables to be generated ;.
const RooArgSet * generateEvent(UInt_t remaining, Double_t &resampleRatio) override
are we actually generating anything? (the cache always contains at least our function value)
Bool_t canSampleCategories() const override
Bool_t canSampleConditional() const override
RooAbsNumGenerator * clone(const RooAbsReal &func, const RooArgSet &genVars, const RooArgSet &, const RooNumGenConfig &config, Bool_t verbose=kFALSE, const RooAbsReal *maxFuncVal=0) const override
Double_t * _vec
Transfer array for FOAM output.
~RooFoamGenerator() override
Destructor.
Double_t * _range
Range of observables to be generated ;.
RooTFoamBinding * _binding
Binding of RooAbsReal to TFoam function interface.
TFoam * _tfoam
Instance of TFOAM generator.
static void registerSampler(RooNumGenFactory &fact)
Register RooIntegrator1D, is parameters and capabilities with RooNumIntFactory.
RooNumGenConfig holds the configuration parameters of the various numeric integrators used by RooReal...
RooNumGenFactory is a factory to instantiate numeric integrators from a given function binding and a ...
RooRealVar represents a variable that can be changed from the outside.
Definition: RooRealVar.h:40
Lightweight interface adaptor that binds a RooAbsPdf to TFOAM.
TFoam is the main class of the multi-dimensional general purpose Monte Carlo event generator (integra...
Definition: TFoam.h:21