16 #ifndef ROO_ACCEPT_REJECT
17 #define ROO_ACCEPT_REJECT
27 class RooNumGenFactory ;
29 class RooAcceptReject :
public RooAbsNumGenerator {
31 RooAcceptReject() : _nextCatVar(0), _nextRealVar(0) {
34 RooAcceptReject(
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& ,
36 const RooNumGenConfig& config, Bool_t verbose=kFALSE,
const RooAbsReal* maxFuncVal=0)
const {
37 return new RooAcceptReject(func,genVars,config,verbose,maxFuncVal) ;
39 virtual ~RooAcceptReject();
41 const RooArgSet *generateEvent(UInt_t remaining, Double_t& resampleRatio);
42 Double_t getFuncMax() ;
46 virtual Bool_t canSampleConditional()
const {
return kTRUE ; }
47 virtual Bool_t canSampleCategories()
const {
return kTRUE ; }
52 friend class RooNumGenFactory ;
53 static void registerSampler(RooNumGenFactory& fact) ;
55 void addEventToCache();
56 const RooArgSet *nextAcceptedEvent();
58 Double_t _maxFuncVal, _funcSum;
59 UInt_t _realSampleDim,_catSampleMult;
63 TIterator *_nextCatVar;
64 TIterator *_nextRealVar;
66 UInt_t _minTrialsArray[4];
68 ClassDef(RooAcceptReject,0)