00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef ROO_GEN_CONTEXT
00017 #define ROO_GEN_CONTEXT
00018
00019 #include "RooAbsGenContext.h"
00020 #include "RooArgSet.h"
00021
00022 class RooAbsPdf;
00023 class RooDataSet;
00024 class RooRealIntegral;
00025 class RooAcceptReject;
00026 class TRandom;
00027 class RooRealVar ;
00028 class RooAbsNumGenerator ;
00029
00030 class RooGenContext : public RooAbsGenContext {
00031 public:
00032 RooGenContext(const RooAbsPdf &model, const RooArgSet &vars, const RooDataSet *prototype= 0,
00033 const RooArgSet* auxProto=0, Bool_t verbose=kFALSE, const RooArgSet* forceDirect=0);
00034 virtual ~RooGenContext();
00035
00036 virtual void printMultiline(ostream &os, Int_t content, Bool_t verbose=kFALSE, TString indent="") const ;
00037
00038 virtual void attach(const RooArgSet& params) ;
00039
00040 protected:
00041
00042 virtual void initGenerator(const RooArgSet &theEvent);
00043 virtual void generateEvent(RooArgSet &theEvent, Int_t remaining);
00044
00045 RooArgSet *_cloneSet;
00046 RooAbsPdf *_pdfClone;
00047 RooArgSet _directVars,_uniformVars,_otherVars;
00048 Int_t _code;
00049 Double_t _maxProb, _area, _norm;
00050 RooRealIntegral *_acceptRejectFunc;
00051 RooAbsNumGenerator *_generator;
00052 RooRealVar *_maxVar ;
00053 TIterator *_uniIter ;
00054 Int_t _updateFMaxPerEvent ;
00055
00056 ClassDef(RooGenContext,0)
00057 };
00058
00059 #endif