#ifndef ROO_PDF_CUSTOMIZER
#define ROO_PDF_CUSTOMIZER
#include "Rtypes.h"
#include "TList.h"
#include "TNamed.h"
#include "TString.h"
#include "RooArgSet.h"
#include "RooPrintable.h"
class RooAbsCategoryLValue ; 
class RooAbsCategory ;
class RooAbsArg ;
class RooAbsPdf ;
class RooCustomizer : public TNamed, public RooPrintable {
public:
  
  RooCustomizer(const RooAbsArg& pdf, const RooAbsCategoryLValue& masterCat, RooArgSet& splitLeafList) ;
  RooCustomizer(const RooAbsArg& pdf, const char* name) ;
  virtual ~RooCustomizer() ;
  
  void splitArgs(const RooArgSet& argSet, const RooAbsCategory& splitCat) ;
  void splitArg(const RooAbsArg& arg, const RooAbsCategory& splitCat) ;
  void replaceArg(const RooAbsArg& orig, const RooAbsArg& subst) ;
  RooAbsArg* build(const char* masterCatState, Bool_t verbose=kFALSE) ;
  RooAbsArg* build(Bool_t verbose=kFALSE) ;
  const RooArgSet& cloneBranchList() const { return *_cloneBranchList ; }
  const RooArgSet& cloneLeafList() const { return *_cloneNodeList ; }
  
  virtual void printToStream(ostream& os, PrintOption opt= Standard, TString indent= "") const;
  inline virtual void Print(Option_t *options= 0) const {
    printToStream(defaultStream(),parseOptions(options));
  }
  
  void setCloneBranchSet(RooArgSet& cloneBranchSet) ;
protected:
  
  RooCustomizer(const RooCustomizer&) ;
  void initialize() ;
  
  RooAbsArg* doBuild(const char* masterCatState, Bool_t verbose) ;
  Bool_t _sterile ;
  TString _name ;
  TList _splitArgList ;
  TList _splitCatList ;
  TList _replaceArgList ;
  TList _replaceSubList ;
  
  RooAbsArg* _masterPdf ;
  RooAbsCategoryLValue* _masterCat ;
  TIterator* _masterLeafListIter ;
  TIterator* _masterBranchListIter ;
  RooArgSet  _masterBranchList ;
  RooArgSet  _masterLeafList ;
  RooArgSet  _internalCloneBranchList ;
  RooArgSet* _cloneBranchList ;
  
  RooArgSet* _cloneNodeList ;
  ClassDef(RooCustomizer,0) 
} ;
#endif
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.