16 #ifndef ROO_SIM_PDF_BUILDER 
   17 #define ROO_SIM_PDF_BUILDER 
   25 class RooSimultaneous ;
 
   28 class RooSuperCategory ;
 
   30 class RooSimPdfBuilder : 
public TObject {
 
   33   RooSimPdfBuilder(
const RooArgSet& pdfProtoList) ;
 
   36   RooArgSet* createProtoBuildConfig() ;
 
   38   RooSimultaneous* buildPdf(
const RooArgSet& buildConfig, 
const RooArgSet& dependents, 
 
   39               const RooArgSet* auxSplitCats=0, Bool_t verbose=kFALSE) ;
 
   41   RooSimultaneous* buildPdf(
const RooArgSet& buildConfig, 
const RooAbsData* dataSet, 
 
   42               const RooArgSet& auxSplitCats, Bool_t verbose=kFALSE) {
 
   43     return buildPdf(buildConfig,*dataSet->get(),&auxSplitCats,verbose) ;
 
   46   RooSimultaneous* buildPdf(
const RooArgSet& buildConfig, 
const RooArgSet& dependents,
 
   47               const RooArgSet& auxSplitCats, Bool_t verbose=kFALSE) {
 
   48     return buildPdf(buildConfig,dependents,&auxSplitCats,verbose) ;
 
   51   RooSimultaneous* buildPdf(
const RooArgSet& buildConfig, 
const RooAbsData* dataSet, 
 
   52               const RooArgSet* auxSplitCats=0, Bool_t verbose=kFALSE) {
 
   53     return buildPdf(buildConfig,*dataSet->get(),auxSplitCats,verbose) ;
 
   56   const RooArgSet& splitLeafList() { 
return _splitNodeList; }
 
   58   void addSpecializations(
const RooArgSet& specSet) ;
 
   62   RooArgSet _protoPdfSet ;       
 
   64   RooArgSet _compSplitCatSet ;   
 
   65   RooArgSet _splitNodeListOwned ;  
 
   66   RooArgSet _splitNodeList ;       
 
   67   TList     _retiredCustomizerList ; 
 
   69   std::list<RooSimultaneous*> _simPdfList ;     
 
   70   std::list<RooSuperCategory*> _fitCatList ;     
 
   74   RooSimPdfBuilder(
const RooSimPdfBuilder&) ; 
 
   77   ClassDef(RooSimPdfBuilder,0)