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)