00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef ROO_ABS_GEN_CONTEXT
00017 #define ROO_ABS_GEN_CONTEXT
00018
00019 #include "TNamed.h"
00020 #include "RooPrintable.h"
00021 #include "RooArgSet.h"
00022 #include "RooAbsPdf.h"
00023
00024 class RooDataSet;
00025
00026 class RooAbsGenContext : public TNamed, public RooPrintable {
00027 public:
00028 RooAbsGenContext(const RooAbsPdf &model, const RooArgSet &vars, const RooDataSet *prototype= 0, const RooArgSet* auxProto=0,
00029 Bool_t _verbose= kFALSE) ;
00030 virtual ~RooAbsGenContext();
00031
00032 RooDataSet *generate(Int_t nEvents= 0);
00033
00034 Bool_t isValid() const {
00035
00036 return _isValid;
00037 }
00038
00039 inline void setVerbose(Bool_t verbose= kTRUE) {
00040
00041 _verbose= verbose;
00042 }
00043 inline Bool_t isVerbose() const {
00044
00045 return _verbose;
00046 }
00047
00048 virtual void setProtoDataOrder(Int_t* lut) ;
00049
00050 inline virtual void Print(Option_t *options= 0) const {
00051
00052 printStream(defaultPrintStream(),defaultPrintContents(options),defaultPrintStyle(options));
00053 }
00054
00055 virtual void attach(const RooArgSet& params) ;
00056
00057 virtual void printName(ostream& os) const ;
00058 virtual void printTitle(ostream& os) const ;
00059 virtual void printClassName(ostream& os) const ;
00060 virtual void printArgs(ostream& os) const ;
00061 virtual void printMultiline(ostream& os, Int_t contents, Bool_t verbose=kFALSE, TString indent="") const;
00062
00063 virtual Int_t defaultPrintContents(Option_t* opt) const ;
00064 virtual StyleOption defaultPrintStyle(Option_t* opt) const ;
00065
00066 protected:
00067
00068 friend class RooConvGenContext ;
00069 friend class RooProdGenContext ;
00070 friend class RooAddGenContext ;
00071 friend class RooSimGenContext ;
00072 friend class RooEffGenContext ;
00073
00074 virtual void initGenerator(const RooArgSet &theEvent);
00075 virtual void generateEvent(RooArgSet &theEvent, Int_t remaining) = 0;
00076
00077 void resampleData(Double_t& ratio) ;
00078
00079 const RooDataSet *_prototype;
00080 RooArgSet *_theEvent;
00081 Bool_t _isValid;
00082 Bool_t _verbose;
00083 UInt_t _expectedEvents;
00084 RooArgSet _protoVars;
00085 Int_t _nextProtoIndex;
00086 RooAbsPdf::ExtendMode _extendMode ;
00087 Int_t* _protoOrder ;
00088 TString _normRange ;
00089
00090 RooDataSet* _genData ;
00091
00092 ClassDef(RooAbsGenContext,0)
00093 };
00094
00095 #endif