00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef ROO_SIM_PDF_BUILDER
00017 #define ROO_SIM_PDF_BUILDER
00018
00019 #include "Rtypes.h"
00020 #include "TObject.h"
00021 #include "RooArgSet.h"
00022 #include "RooArgList.h"
00023 #include "RooAbsData.h"
00024 #include <list>
00025 class RooSimultaneous ;
00026 class RooAbsPdf ;
00027 class RooCategory ;
00028 class RooSuperCategory ;
00029
00030 class RooSimPdfBuilder : public TObject {
00031 public:
00032
00033 RooSimPdfBuilder(const RooArgSet& pdfProtoList) ;
00034 ~RooSimPdfBuilder() ;
00035
00036 RooArgSet* createProtoBuildConfig() ;
00037
00038 RooSimultaneous* buildPdf(const RooArgSet& buildConfig, const RooArgSet& dependents,
00039 const RooArgSet* auxSplitCats=0, Bool_t verbose=kFALSE) ;
00040
00041 RooSimultaneous* buildPdf(const RooArgSet& buildConfig, const RooAbsData* dataSet,
00042 const RooArgSet& auxSplitCats, Bool_t verbose=kFALSE) {
00043 return buildPdf(buildConfig,*dataSet->get(),&auxSplitCats,verbose) ;
00044 }
00045
00046 RooSimultaneous* buildPdf(const RooArgSet& buildConfig, const RooArgSet& dependents,
00047 const RooArgSet& auxSplitCats, Bool_t verbose=kFALSE) {
00048 return buildPdf(buildConfig,dependents,&auxSplitCats,verbose) ;
00049 }
00050
00051 RooSimultaneous* buildPdf(const RooArgSet& buildConfig, const RooAbsData* dataSet,
00052 const RooArgSet* auxSplitCats=0, Bool_t verbose=kFALSE) {
00053 return buildPdf(buildConfig,*dataSet->get(),auxSplitCats,verbose) ;
00054 }
00055
00056 const RooArgSet& splitLeafList() { return _splitNodeList; }
00057
00058 void addSpecializations(const RooArgSet& specSet) ;
00059
00060 protected:
00061
00062 RooArgSet _protoPdfSet ;
00063
00064 RooArgSet _compSplitCatSet ;
00065 RooArgSet _splitNodeListOwned ;
00066 RooArgSet _splitNodeList ;
00067 TList _retiredCustomizerList ;
00068
00069 std::list<RooSimultaneous*> _simPdfList ;
00070 std::list<RooSuperCategory*> _fitCatList ;
00071
00072
00073 private:
00074 RooSimPdfBuilder(const RooSimPdfBuilder&) ;
00075
00076 protected:
00077 ClassDef(RooSimPdfBuilder,0)
00078 };
00079
00080 #endif