Logo ROOT  
Reference Guide
RooAcceptReject.h
Go to the documentation of this file.
1/*****************************************************************************
2 * Project: RooFit *
3 * Package: RooFitCore *
4 * File: $Id: RooAcceptReject.h,v 1.16 2007/05/11 09:11:30 verkerke Exp $
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_ACCEPT_REJECT
17#define ROO_ACCEPT_REJECT
18
19#include "RooAbsNumGenerator.h"
20#include "RooPrintable.h"
21#include "RooArgSet.h"
22
23class RooAbsReal;
24class RooRealVar;
25class RooDataSet;
26class RooRealBinding;
27class RooNumGenFactory ;
28
30public:
32 // coverity[UNINIT_CTOR]
33 } ;
34 RooAcceptReject(const RooAbsReal &func, const RooArgSet &genVars, const RooNumGenConfig& config, bool verbose=false, const RooAbsReal* maxFuncVal=nullptr);
35 RooAbsNumGenerator* clone(const RooAbsReal& func, const RooArgSet& genVars, const RooArgSet& /*condVars*/,
36 const RooNumGenConfig& config, bool verbose=false, const RooAbsReal* maxFuncVal=nullptr) const override {
37 return new RooAcceptReject(func,genVars,config,verbose,maxFuncVal) ;
38 }
39
40 const RooArgSet *generateEvent(UInt_t remaining, double& resampleRatio) override;
41 double getFuncMax() override ;
42
43
44 // Advertisement of capabilities
45 bool canSampleConditional() const override { return true ; }
46 bool canSampleCategories() const override { return true ; }
47
48
49protected:
50
51 friend class RooNumGenFactory ;
52 static void registerSampler(RooNumGenFactory& fact) ;
53
54 void addEventToCache();
56
57 double _maxFuncVal, _funcSum; ///< Maximum function value found, and sum of all samples made
58 UInt_t _realSampleDim,_catSampleMult; ///< Number of real and discrete dimensions to be sampled
59 UInt_t _minTrials; ///< Minimum number of max.finding trials, total number of samples
60 UInt_t _totalEvents; ///< Total number of function samples
61 UInt_t _eventsUsed; ///< Accepted number of function samples
62
63 UInt_t _minTrialsArray[4]; ///< Minimum number of trials samples for 1,2,3 dimensional problems
64
65 ClassDefOverride(RooAcceptReject,0) // Context for generating a dataset from a PDF
66};
67
68#endif
#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:62
Class RooAcceptReject is a generic toy monte carlo generator implement the accept/reject sampling tec...
UInt_t _minTrialsArray[4]
Minimum number of trials samples for 1,2,3 dimensional problems.
UInt_t _minTrials
Minimum number of max.finding trials, total number of samples.
static void registerSampler(RooNumGenFactory &fact)
Register RooIntegrator1D, is parameters and capabilities with RooNumIntFactory.
double getFuncMax() override
const RooArgSet * nextAcceptedEvent()
Scan through events in the cache which have not been used yet, looking for the first accepted one whi...
void addEventToCache()
Add a trial event to our cache and update our estimates of the function maximum value and integral.
double _funcSum
Maximum function value found, and sum of all samples made.
bool canSampleConditional() const override
bool canSampleCategories() const override
RooAbsNumGenerator * clone(const RooAbsReal &func, const RooArgSet &genVars, const RooArgSet &, const RooNumGenConfig &config, bool verbose=false, const RooAbsReal *maxFuncVal=nullptr) const override
UInt_t _totalEvents
Total number of function samples.
UInt_t _catSampleMult
Number of real and discrete dimensions to be sampled.
const RooArgSet * generateEvent(UInt_t remaining, double &resampleRatio) override
Return a pointer to a generated event.
UInt_t _eventsUsed
Accepted number of function samples.
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Definition: RooArgSet.h:56
RooDataSet is a container class to hold unbinned data.
Definition: RooDataSet.h:55
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 ...
Lightweight interface adaptor that binds a RooAbsReal object to a subset of its servers and present i...
RooRealVar represents a variable that can be changed from the outside.
Definition: RooRealVar.h:40