17 #ifndef ROO_SIM_WS_TOOL_HH
18 #define ROO_SIM_WS_TOOL_HH
28 class RooAbsCategoryLValue ;
29 class RooAbsCategory ;
33 class RooSimultaneous ;
36 class RooSimWSTool :
public TNamed,
public RooPrintable {
41 RooSimWSTool(RooWorkspace& ws) ;
42 virtual ~RooSimWSTool() ;
45 class MultiBuildConfig ;
48 class ObjBuildConfig ;
51 RooSimultaneous* build(
const char* simPdfName,
const char* protoPdfName,
52 const RooCmdArg& arg1=RooCmdArg::none(),
const RooCmdArg& arg2=RooCmdArg::none(),
53 const RooCmdArg& arg3=RooCmdArg::none(),
const RooCmdArg& arg4=RooCmdArg::none(),
54 const RooCmdArg& arg5=RooCmdArg::none(),
const RooCmdArg& arg6=RooCmdArg::none()) ;
56 RooSimultaneous* build(
const char* simPdfName,BuildConfig& bc, Bool_t verbose=kTRUE) ;
58 class SimWSIFace :
public RooFactoryWSTool::IFace {
60 virtual ~SimWSIFace() {} ;
61 std::string create(RooFactoryWSTool& ft,
const char* typeName,
const char* instanceName, std::vector<std::string> args) ;
67 RooSimWSTool(
const RooSimWSTool&) ;
69 ObjBuildConfig* validateConfig(BuildConfig& bc) ;
70 RooSimultaneous* executeBuild(
const char* simPdfName,ObjBuildConfig& obc, Bool_t verbose=kTRUE) ;
71 std::string makeSplitName(
const RooArgSet& splitCatSet) ;
75 ClassDef(RooSimWSTool,0)
79 class RooSimWSTool::SplitRule :
public TNamed {
81 SplitRule(
const char* pdfName=
"") : TNamed(pdfName,pdfName) {} ;
82 virtual ~SplitRule() {} ;
83 void splitParameter(
const char* paramList,
const char* categoryList) ;
84 void splitParameterConstrained(
const char* paramNameList,
const char* categoryNameList,
const char* remainderStateName) ;
88 friend class RooSimWSTool ;
89 friend class BuildConfig ;
90 friend class MultiBuildConfig ;
91 void configure(
const RooCmdArg& arg1=RooCmdArg::none(),
const RooCmdArg& arg2=RooCmdArg::none(),
92 const RooCmdArg& arg3=RooCmdArg::none(),
const RooCmdArg& arg4=RooCmdArg::none(),
93 const RooCmdArg& arg5=RooCmdArg::none(),
const RooCmdArg& arg6=RooCmdArg::none()) ;
95 std::list<std::string> _miStateNameList ;
96 std::map<std::string, std::pair<std::list<std::string>,std::string> > _paramSplitMap ;
101 class RooSimWSTool::BuildConfig
104 BuildConfig(
const char* pdfName, SplitRule& sr) ;
105 BuildConfig(
const char* pdfName,
const RooCmdArg& arg1=RooCmdArg::none(),
const RooCmdArg& arg2=RooCmdArg::none(),
106 const RooCmdArg& arg3=RooCmdArg::none(),
const RooCmdArg& arg4=RooCmdArg::none(),
107 const RooCmdArg& arg5=RooCmdArg::none(),
const RooCmdArg& arg6=RooCmdArg::none()) ;
109 BuildConfig(
const RooArgSet& legacyBuildConfig) ;
111 virtual ~BuildConfig() {} ;
112 void restrictBuild(
const char* catName,
const char* stateList) ;
116 friend class RooSimWSTool ;
117 std::string _masterCatName ;
118 std::map<std::string,SplitRule> _pdfmap ;
119 std::map<std::string,std::string> _restr ;
120 RooCmdArg _conflProtocol ;
122 void internalAddPdf(
const char* pdfName,
const char* miStateList, SplitRule& sr) ;
124 ClassDef(BuildConfig,0)
128 class RooSimWSTool::MultiBuildConfig :
public RooSimWSTool::BuildConfig
131 MultiBuildConfig(
const char* masterIndexCat) ;
132 virtual ~MultiBuildConfig() {} ;
133 void addPdf(
const char* miStateList,
const char* pdfName, SplitRule& sr) ;
134 void addPdf(
const char* miStateList,
const char* pdfName,
135 const RooCmdArg& arg1=RooCmdArg::none(),
const RooCmdArg& arg2=RooCmdArg::none(),
136 const RooCmdArg& arg3=RooCmdArg::none(),
const RooCmdArg& arg4=RooCmdArg::none(),
137 const RooCmdArg& arg5=RooCmdArg::none(),
const RooCmdArg& arg6=RooCmdArg::none()) ;
140 friend class RooSimWSTool ;
142 ClassDef(MultiBuildConfig,0)
150 class RooSimWSTool::ObjSplitRule {
153 virtual ~ObjSplitRule() ;
156 friend class RooSimWSTool ;
157 friend class RooSimWSTool::ObjBuildConfig ;
158 std::list<const RooCatType*> _miStateList ;
159 std::map<RooAbsArg*, std::pair<RooArgSet,std::string> > _paramSplitMap ;
160 ClassDef(ObjSplitRule,0)
164 class RooSimWSTool::ObjBuildConfig
167 ObjBuildConfig() : _masterCat(0) {} ;
168 virtual ~ObjBuildConfig() {} ;
172 friend class RooSimWSTool ;
173 std::map<RooAbsPdf*,ObjSplitRule> _pdfmap ;
174 std::map<RooAbsCategory*,std::list<const RooCatType*> > _restr ;
175 RooCategory* _masterCat ;
176 RooArgSet _usedSplitCats ;
177 RooCmdArg _conflProtocol ;
179 ClassDef(ObjBuildConfig,0)