Logo ROOT  
Reference Guide
RooSimWSTool.h
Go to the documentation of this file.
1/*****************************************************************************
2 * Project: RooFit *
3 * Package: RooFitCore *
4 * File: $Id$
5 * Authors: *
6 * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu *
7 * DK, David Kirkby, UC Irvine, dkirkby@uci.edu *
8 * *
9 * Copyright (c) 2000-2005, Regents of the University of California *
10 * and Stanford University. All rights reserved. *
11 * *
12 * Redistribution and use in source and binary forms, *
13 * with or without modification, are permitted according to the terms *
14 * listed in LICENSE (http://roofit.sourceforge.net/license.txt) *
15 *****************************************************************************/
16
17#ifndef ROO_SIM_WS_TOOL_HH
18#define ROO_SIM_WS_TOOL_HH
19
20#include "Rtypes.h"
21#include "RooWorkspace.h"
22#include "RooCmdArg.h"
23#include "RooFactoryWSTool.h"
24#include <list>
25#include <map>
26#include <string>
27#include <vector>
28
30class RooAbsCategory;
31class RooAbsArg;
32class RooAbsPdf;
33class RooCatType;
34class RooSimultaneous;
35
36
37class RooSimWSTool : public TNamed, public RooPrintable {
38
39public:
40
41 // Constructors, assignment etc
43 ~RooSimWSTool() override ;
44
45 class BuildConfig ;
46 class MultiBuildConfig ;
47 class SplitRule ;
48
49 class ObjBuildConfig ;
50 class ObjSplitRule ;
51
52 RooSimultaneous* build(const char* simPdfName, const char* protoPdfName,
53 const RooCmdArg& arg1=RooCmdArg::none(),const RooCmdArg& arg2=RooCmdArg::none(),
54 const RooCmdArg& arg3=RooCmdArg::none(),const RooCmdArg& arg4=RooCmdArg::none(),
55 const RooCmdArg& arg5=RooCmdArg::none(),const RooCmdArg& arg6=RooCmdArg::none()) ;
56
57 RooSimultaneous* build(const char* simPdfName,BuildConfig& bc, bool verbose=true) ;
58
60 public:
61 ~SimWSIFace() override {} ;
62 std::string create(RooFactoryWSTool& ft, const char* typeName, const char* instanceName, std::vector<std::string> args) override ;
63 } ;
64
65
66protected:
67
69
71 RooSimultaneous* executeBuild(const char* simPdfName,ObjBuildConfig& obc, bool verbose=true) ;
72 std::string makeSplitName(const RooArgSet& splitCatSet) ;
73
75
76 ClassDefOverride(RooSimWSTool,0) // Workspace oriented tool for customized cloning of p.d.f. into a simultaneous p.d.f
77} ;
78
79
81public:
82 SplitRule(const char* pdfName="") : TNamed(pdfName,pdfName) {} ;
83 ~SplitRule() override {} ;
84 void splitParameter(const char* paramList, const char* categoryList) ;
85 void splitParameterConstrained(const char* paramNameList, const char* categoryNameList, const char* remainderStateName) ;
86
87protected:
88
89 friend class RooSimWSTool ;
90 friend class BuildConfig ;
91 friend class MultiBuildConfig ;
92 void configure(const RooCmdArg& arg1=RooCmdArg::none(),const RooCmdArg& arg2=RooCmdArg::none(),
93 const RooCmdArg& arg3=RooCmdArg::none(),const RooCmdArg& arg4=RooCmdArg::none(),
94 const RooCmdArg& arg5=RooCmdArg::none(),const RooCmdArg& arg6=RooCmdArg::none()) ;
95
96 std::list<std::string> _miStateNameList ;
97 std::map<std::string, std::pair<std::list<std::string>,std::string> > _paramSplitMap ; //<paramName,<std::list<splitCatSet>,remainderStateName>>
98 ClassDefOverride(SplitRule,0) // Split rule specification for prototype p.d.f
99} ;
100
101
103{
104 public:
105 BuildConfig(const char* pdfName, SplitRule& sr) ;
106 BuildConfig(const char* pdfName, const RooCmdArg& arg1=RooCmdArg::none(),const RooCmdArg& arg2=RooCmdArg::none(),
107 const RooCmdArg& arg3=RooCmdArg::none(),const RooCmdArg& arg4=RooCmdArg::none(),
108 const RooCmdArg& arg5=RooCmdArg::none(),const RooCmdArg& arg6=RooCmdArg::none()) ;
109
110 BuildConfig(const RooArgSet& legacyBuildConfig) ;
111
112 virtual ~BuildConfig() {} ;
113 void restrictBuild(const char* catName, const char* stateList) ;
114
115 protected:
117 friend class RooSimWSTool ;
118 std::string _masterCatName ;
119 std::map<std::string,SplitRule> _pdfmap ;
120 std::map<std::string,std::string> _restr ;
122
123 void internalAddPdf(const char* pdfName, const char* miStateList, SplitRule& sr) ;
124
125 ClassDef(BuildConfig,0) // Build configuration object for RooSimWSTool
126 } ;
127
128
130{
131 public:
132 MultiBuildConfig(const char* masterIndexCat) ;
133 ~MultiBuildConfig() override {} ;
134 void addPdf(const char* miStateList, const char* pdfName, SplitRule& sr) ;
135 void addPdf(const char* miStateList, const char* pdfName,
136 const RooCmdArg& arg1=RooCmdArg::none(),const RooCmdArg& arg2=RooCmdArg::none(),
137 const RooCmdArg& arg3=RooCmdArg::none(),const RooCmdArg& arg4=RooCmdArg::none(),
138 const RooCmdArg& arg5=RooCmdArg::none(),const RooCmdArg& arg6=RooCmdArg::none()) ;
139
140 protected:
141 friend class RooSimWSTool ;
142
143 ClassDefOverride(MultiBuildConfig,0) // Build configuration object for RooSimWSTool with multiple prototype p.d.f.
144 } ;
145
146
148public:
150 virtual ~ObjSplitRule() ;
151
152protected:
153 friend class RooSimWSTool ;
155 std::list<const RooCatType*> _miStateList ;
156 std::map<RooAbsArg*, std::pair<RooArgSet,std::string> > _paramSplitMap ; //<paramName,<std::list<splitCatSet>,remainderStateName>>
157 ClassDef(ObjSplitRule,0) // Validated RooSimWSTool split rule
158 } ;
159
160
162{
163 public:
165 virtual ~ObjBuildConfig() {} ;
166 void print() ;
167
168 protected:
169 friend class RooSimWSTool ;
170 std::map<RooAbsPdf*,ObjSplitRule> _pdfmap ;
171 std::map<RooAbsCategory*,std::list<const RooCatType*> > _restr ;
175
176 ClassDef(ObjBuildConfig,0) // Validated RooSimWSTool build configuration
177 } ;
178
179#endif
#define ClassDef(name, id)
Definition: Rtypes.h:335
#define ClassDefOverride(name, id)
Definition: Rtypes.h:339
RooAbsArg is the common abstract base class for objects that represent a value and a "shape" in RooFi...
Definition: RooAbsArg.h:72
RooAbsCategoryLValue is the common abstract base class for objects that represent a discrete value th...
A space to attach TBranches.
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Definition: RooArgSet.h:57
RooCatType is an auxilary class for RooAbsCategory and defines a a single category state.
RooCategory is an object to represent discrete states.
Definition: RooCategory.h:28
RooCmdArg is a named container for two doubles, two integers two object points and three string point...
Definition: RooCmdArg.h:26
static const RooCmdArg & none()
Return reference to null argument.
Definition: RooCmdArg.cxx:51
RooFactoryWSTool is a class similar to TTree::MakeClass() that generates skeleton code for RooAbsPdf ...
RooPlotable is a 'mix-in' base class that define the standard RooFit plotting and printing methods.
Definition: RooPrintable.h:25
void restrictBuild(const char *catName, const char *stateList)
Restrict build by only considering state names in stateList for split in category catName.
std::map< std::string, SplitRule > _pdfmap
Definition: RooSimWSTool.h:119
std::map< std::string, std::string > _restr
Definition: RooSimWSTool.h:120
void internalAddPdf(const char *pdfName, const char *miStateList, SplitRule &sr)
Internal routine to add prototype pdf 'pdfName' with list of associated master states 'miStateNameLis...
void addPdf(const char *miStateList, const char *pdfName, SplitRule &sr)
Add protytpe p.d.f 'pdfName' to MultiBuildConfig associated with master indes states 'miStateList'.
MultiBuildConfig(const char *masterIndexCat)
Construct MultiBuildConfig for build configuration with multiple prototype p.d.f.s masterIndexCat is ...
std::map< RooAbsPdf *, ObjSplitRule > _pdfmap
Definition: RooSimWSTool.h:170
void print()
Print details of a validated build configuration.
std::map< RooAbsCategory *, std::list< const RooCatType * > > _restr
Definition: RooSimWSTool.h:171
virtual ~ObjSplitRule()
Destructor.
std::map< RooAbsArg *, std::pair< RooArgSet, std::string > > _paramSplitMap
Definition: RooSimWSTool.h:156
std::list< const RooCatType * > _miStateList
Definition: RooSimWSTool.h:155
std::string create(RooFactoryWSTool &ft, const char *typeName, const char *instanceName, std::vector< std::string > args) override
void splitParameter(const char *paramList, const char *categoryList)
Specify that parameters names listed in paramNameList be split in (product of) category(s) listed in ...
void configure(const RooCmdArg &arg1=RooCmdArg::none(), const RooCmdArg &arg2=RooCmdArg::none(), const RooCmdArg &arg3=RooCmdArg::none(), const RooCmdArg &arg4=RooCmdArg::none(), const RooCmdArg &arg5=RooCmdArg::none(), const RooCmdArg &arg6=RooCmdArg::none())
Construct the SplitRule object from a list of named arguments past to RooSimWSTool::build This method...
SplitRule(const char *pdfName="")
Definition: RooSimWSTool.h:82
std::list< std::string > _miStateNameList
Definition: RooSimWSTool.h:96
void splitParameterConstrained(const char *paramNameList, const char *categoryNameList, const char *remainderStateName)
Specify that parameters names listed in paramNameList be split in constrained way in (product of) cat...
std::map< std::string, std::pair< std::list< std::string >, std::string > > _paramSplitMap
Definition: RooSimWSTool.h:97
The RooSimWSTool is a tool operating on RooWorkspace objects that can clone PDFs into a series of var...
Definition: RooSimWSTool.h:37
RooWorkspace * _ws
Definition: RooSimWSTool.h:74
RooSimWSTool(RooWorkspace &ws)
Constructor of SimWSTool on given workspace.
RooSimultaneous * build(const char *simPdfName, const char *protoPdfName, const RooCmdArg &arg1=RooCmdArg::none(), const RooCmdArg &arg2=RooCmdArg::none(), const RooCmdArg &arg3=RooCmdArg::none(), const RooCmdArg &arg4=RooCmdArg::none(), const RooCmdArg &arg5=RooCmdArg::none(), const RooCmdArg &arg6=RooCmdArg::none())
Build a RooSimultaneous PDF with name simPdfName from cloning specializations of protytpe PDF protoPd...
RooSimultaneous * executeBuild(const char *simPdfName, ObjBuildConfig &obc, bool verbose=true)
Internal build driver from validation ObjBuildConfig.
RooSimWSTool(const RooSimWSTool &)
ObjBuildConfig * validateConfig(BuildConfig &bc)
Validate build configuration.
std::string makeSplitName(const RooArgSet &splitCatSet)
Construct name of composite split.
~RooSimWSTool() override
Destructor.
RooSimultaneous facilitates simultaneous fitting of multiple PDFs to subsets of a given dataset.
The RooWorkspace is a persistable container for RooFit projects.
Definition: RooWorkspace.h:43
The TNamed class is the base class for all named ROOT classes.
Definition: TNamed.h:29
static constexpr double sr
void ws()
Definition: ws.C:66