16 #ifndef ROO_SIM_GEN_CONTEXT 
   17 #define ROO_SIM_GEN_CONTEXT 
   24 class RooSimultaneous;
 
   26 class RooAbsCategoryLValue ;
 
   28 class RooSimGenContext : 
public RooAbsGenContext {
 
   30   RooSimGenContext(
const RooSimultaneous &model, 
const RooArgSet &vars, 
const RooDataSet *prototype= 0,
 
   31                    const RooArgSet* auxProto=0, Bool_t _verbose= kFALSE);
 
   32   virtual ~RooSimGenContext();
 
   33   virtual void setProtoDataOrder(Int_t* lut) ;
 
   35   virtual void attach(
const RooArgSet& params) ;
 
   37   virtual void printMultiline(std::ostream &os, Int_t content, Bool_t verbose=kFALSE, TString indent=
"") 
const ;
 
   42   virtual void initGenerator(
const RooArgSet &theEvent);
 
   43   virtual void generateEvent(RooArgSet &theEvent, Int_t remaining);
 
   45   RooDataSet* createDataSet(
const char* name, 
const char* title, 
const RooArgSet& obs) ;
 
   46   void updateFractions() ;
 
   48   RooSimGenContext(
const RooSimGenContext& other) ;
 
   50   RooAbsCategoryLValue* _idxCat{
nullptr}; 
 
   51   RooArgSet*            _idxCatSet{
nullptr}; 
 
   52   const RooDataSet *_prototype{
nullptr};   
 
   53   const RooSimultaneous *_pdf{
nullptr};   
 
   54   std::vector<RooAbsGenContext*> _gcList ; 
 
   55   std::vector<int>               _gcIndex ; 
 
   56   Bool_t _haveIdxProto{
false};          
 
   57   TString _idxCatName{};           
 
   59   Double_t* _fracThresh{
nullptr};         
 
   60   RooDataSet* _protoData{
nullptr};        
 
   62   RooArgSet _allVarsPdf{}; 
 
   63   TIterator* _proxyIter{
nullptr}; 
 
   65   ClassDef(RooSimGenContext,0)