#ifndef ROO_ADD_GEN_CONTEXT
#define ROO_ADD_GEN_CONTEXT
#include "RooAbsGenContext.h"
#include "RooArgSet.h"
#include <vector>
#include "RooAddPdf.h"
#include "RooAddModel.h"
class RooAddPdf;
class RooAddModel;
class RooDataSet;
class RooRealIntegral;
class RooAcceptReject;
class TRandom;
class TIterator;
class RooAddGenContext : public RooAbsGenContext {
public:
RooAddGenContext(const RooAddPdf &model, const RooArgSet &vars, const RooDataSet *prototype= 0,
const RooArgSet* auxProto=0, Bool_t _verbose= kFALSE);
RooAddGenContext(const RooAddModel &model, const RooArgSet &vars, const RooDataSet *prototype= 0,
const RooArgSet* auxProto=0, Bool_t _verbose= kFALSE);
virtual ~RooAddGenContext();
virtual void setProtoDataOrder(Int_t* lut) ;
virtual void attach(const RooArgSet& params) ;
virtual void printMultiline(std::ostream &os, Int_t content, Bool_t verbose=kFALSE, TString indent="") const ;
protected:
virtual void initGenerator(const RooArgSet &theEvent);
virtual void generateEvent(RooArgSet &theEvent, Int_t remaining);
void updateThresholds() ;
RooAddGenContext(const RooAddGenContext& other) ;
const RooArgSet* _vars ;
RooArgSet* _pdfSet ;
RooAbsPdf *_pdf ;
std::vector<RooAbsGenContext*> _gcList ;
Int_t _nComp ;
Double_t* _coefThresh ;
Bool_t _isModel ;
RooAddModel::CacheElem* _mcache ;
RooAddPdf::CacheElem* _pcache ;
ClassDef(RooAddGenContext,0)
};
#endif