16 #ifndef ROO_ABS_NUM_GENERATOR
17 #define ROO_ABS_NUM_GENERATOR
28 class RooNumGenConfig ;
30 class RooAbsNumGenerator :
public TNamed,
public RooPrintable {
32 RooAbsNumGenerator() : _cloneSet(0), _funcClone(0), _funcMaxVal(0), _verbose(kFALSE), _isValid(kFALSE), _funcValStore(0), _funcValPtr(0), _cache(0) {} ;
33 RooAbsNumGenerator(
const RooAbsReal &func,
const RooArgSet &genVars, Bool_t verbose=kFALSE,
const RooAbsReal* maxFuncVal=0);
34 virtual RooAbsNumGenerator* clone(
const RooAbsReal&,
const RooArgSet& genVars,
const RooArgSet& condVars,
35 const RooNumGenConfig& config, Bool_t verbose=kFALSE,
const RooAbsReal* maxFuncVal=0)
const = 0 ;
37 Bool_t isValid()
const {
41 virtual ~RooAbsNumGenerator();
43 inline void setVerbose(Bool_t verbose= kTRUE) {
47 inline Bool_t isVerbose()
const {
52 virtual const RooArgSet *generateEvent(UInt_t remaining, Double_t& resampleRatio) = 0;
53 virtual Double_t getFuncMax() {
return 0 ; }
55 inline virtual void Print(Option_t *options= 0)
const {
57 printStream(defaultPrintStream(),defaultPrintContents(options),defaultPrintStyle(options));
60 virtual void printName(std::ostream& os)
const ;
61 virtual void printTitle(std::ostream& os)
const ;
62 virtual void printClassName(std::ostream& os)
const ;
63 virtual void printArgs(std::ostream& os)
const ;
65 void attachParameters(
const RooArgSet& vars) ;
68 virtual Bool_t canSampleCategories()
const {
return kFALSE ; }
69 virtual Bool_t canSampleConditional()
const {
return kFALSE ; }
74 RooAbsReal *_funcClone;
75 const RooAbsReal *_funcMaxVal ;
76 RooArgSet _catVars,_realVars ;
77 Bool_t _verbose, _isValid;
78 RooRealVar *_funcValStore,*_funcValPtr;
82 ClassDef(RooAbsNumGenerator,0)