00001 /***************************************************************************** 00002 * Project: RooFit * 00003 * Package: RooFitCore * 00004 * File: $Id: RooSimGenContext.h,v 1.12 2007/05/11 09:11:30 verkerke Exp $ 00005 * Authors: * 00006 * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu * 00007 * DK, David Kirkby, UC Irvine, dkirkby@uci.edu * 00008 * * 00009 * Copyright (c) 2000-2005, Regents of the University of California * 00010 * and Stanford University. All rights reserved. * 00011 * * 00012 * Redistribution and use in source and binary forms, * 00013 * with or without modification, are permitted according to the terms * 00014 * listed in LICENSE (http://roofit.sourceforge.net/license.txt) * 00015 *****************************************************************************/ 00016 #ifndef ROO_SIM_GEN_CONTEXT 00017 #define ROO_SIM_GEN_CONTEXT 00018 00019 #include "TList.h" 00020 #include "RooAbsGenContext.h" 00021 #include "RooArgSet.h" 00022 00023 class RooSimultaneous; 00024 class RooDataSet; 00025 class RooAbsCategoryLValue ; 00026 00027 class RooSimGenContext : public RooAbsGenContext { 00028 public: 00029 RooSimGenContext(const RooSimultaneous &model, const RooArgSet &vars, const RooDataSet *prototype= 0, 00030 const RooArgSet* auxProto=0, Bool_t _verbose= kFALSE); 00031 virtual ~RooSimGenContext(); 00032 virtual void setProtoDataOrder(Int_t* lut) ; 00033 00034 virtual void attach(const RooArgSet& params) ; 00035 00036 virtual void printMultiline(ostream &os, Int_t content, Bool_t verbose=kFALSE, TString indent="") const ; 00037 00038 00039 protected: 00040 00041 virtual void initGenerator(const RooArgSet &theEvent); 00042 virtual void generateEvent(RooArgSet &theEvent, Int_t remaining); 00043 00044 RooSimGenContext(const RooSimGenContext& other) ; 00045 00046 RooAbsCategoryLValue* _idxCat ; // Clone of index category 00047 RooArgSet* _idxCatSet ; // Owner of index category components 00048 const RooDataSet *_prototype; // Prototype data set 00049 const RooSimultaneous *_pdf ; // Original PDF 00050 TList _gcList ; // List of component generator contexts 00051 Bool_t _haveIdxProto ; // Flag set if generation of index is requested 00052 TString _idxCatName ; // Name of index category 00053 Int_t _numPdf ; // Number of generated PDFs 00054 Double_t* _fracThresh ; //[_numPdf] Fraction threshold array 00055 00056 ClassDef(RooSimGenContext,0) // Context for efficiently generating a dataset from a RooSimultaneous PDF 00057 }; 00058 00059 #endif