ROOT logo
ROOT » ROOFIT » ROOFITCORE » RooSimWSTool

class RooSimWSTool: public TNamed, public RooPrintable


 Class RooSimWSTool is a tool operating on RooWorkspace objects that
 can clone p.d.f.s into a series of variations that are joined together
 into a RooSimultanous p.d.f.

 The simplest use case to to take a workspace p.d.f as prototype and
 'split' a parameter of that p.d.f into two specialized parameters
 depending on a category in the dataset.

 For example, given a Gaussian
 p.d.f G(x,m,s) we want to construct a G_a(x,m_a,s) and a G_b(x,m_b,s)
 with different mean parameters to be fit to a dataset with observables
 (x,c) where c is a category with states 'a' and 'b'

 Using RooSimWSTool one can create a simultaneous p.d.f from G_a and G_b
 from G with the following command

   RooSimWSTool wst(wspace) ;
   wst.build("G_sim","G",SplitParam("m","c")) ;

 From this simple example one can go to builds of arbitrary complexity
 by specifying multiple SplitParam arguments on multiple parameters
 involving multiple splitting categories. Splits can also be performed
 in the product multiple categories, e.g.

      SplitParam("m","c,d")) ;

 splits parameter m in the product of states of c and d. Another possibility
 is the 'constrained' split which clones the parameter for all but one state
 and insert a formula specialization in a chosen state that evaluates
 to 1 - sum_i(a_i) where a_i are all other specializations. For example,
 given a category c with state "A","B","C","D" the specification

     SplitParamConstrained("m","c","D")

 will result in parameters m_A,m_B,m_C and a formula expression m_D
 that evaluates to (1-(m_A+m_B+m_C)). Constrained split can also be
 specified in product of categories. In that case the name of the
 remainder state follows the syntax "{State1;State2}" where State1 and
 State2 are the state names of the two spitting categories.

 The examples so far deal with a single prototype p.d.f. It is also
 possible to build with multiple prototype p.d.fs by specifying a
 mapping between the prototype to use and the names of states of
 a 'master' splitting category. To specify these configurations
 an intermediate MultiBuildConfig must be composed with all
 the necessary specifications. For example, this code

  RooSimWSTool::MultiBuildConfig mbc("mc") ;
  mbc.addPdf("I","G",SplitParam("m,s","c")) ;
  mbc.addPdf("II,III","F",SplitParam("a","c,d")) ;

 configures a build with two prototype p.d.f.s G and F.
 Prototype G is used for state "I" of master split category
 mc and prototype F is used for states "II" and "III" of
 master split category mc. Furthermore parameters m,s of prototype G are split
 in category c while parameter a of prototype F is split in
 the product of categories c and d. The actual build is then
 performed by passing the build configuration to RooSimWSTool, e.g.

  wst.build("MASTER",mbc) ;

 By default, a specialization is built for each permutation of
 states of the spitting categories that are used. It is possible
 to restrict the building of specialized p.d.f to a subset of states
 by adding a restriction on the number of states to build as follows

  mbc.restrictBuild("c","A,B") ;

 The restrictBuild method can be called multiple times, but at most
 once for each used splitting category. For simple builds with a single
 prototype, restriction can be specified with a Restrict() argument
 on the build command line

Function Members (Methods)

public:
RooSimWSTool(RooWorkspace& ws)
virtual~RooSimWSTool()
voidTObject::AbstractMethod(const char* method) const
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
RooSimultaneous*build(const char* simPdfName, RooSimWSTool::BuildConfig& bc, Bool_t verbose = kTRUE)
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())
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTNamed::Clear(Option_t* option = "")
virtual TObject*TNamed::Clone(const char* newname = "") const
virtual Int_tTNamed::Compare(const TObject* obj) const
virtual voidTNamed::Copy(TObject& named) const
virtual Int_tRooPrintable::defaultPrintContents(Option_t* opt) const
static ostream&RooPrintable::defaultPrintStream(ostream* os = 0)
virtual RooPrintable::StyleOptionRooPrintable::defaultPrintStyle(Option_t* opt) const
virtual voidTObject::Delete(Option_t* option = "")MENU
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidTObject::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() constMENU
virtual TObject*TObject::DrawClone(Option_t* option = "") constMENU
virtual voidTObject::Dump() constMENU
virtual voidTObject::Error(const char* method, const char* msgfmt) const
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
virtual voidTNamed::FillBuffer(char*& buffer)
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
virtual const char*TObject::GetIconName() const
virtual const char*TNamed::GetName() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
virtual const char*TNamed::GetTitle() const
virtual UInt_tTObject::GetUniqueID() const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTNamed::Hash() const
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
virtual voidTObject::Inspect() constMENU
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
Bool_tTObject::IsOnHeap() const
virtual Bool_tTNamed::IsSortable() const
Bool_tTObject::IsZombie() const
virtual voidTNamed::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) const
static voidRooPrintable::nameFieldLength(Int_t newLen)
virtual Bool_tTObject::Notify()
static voidTObject::operator delete(void* ptr)
static voidTObject::operator delete(void* ptr, void* vp)
static voidTObject::operator delete[](void* ptr)
static voidTObject::operator delete[](void* ptr, void* vp)
void*TObject::operator new(size_t sz)
void*TObject::operator new(size_t sz, void* vp)
void*TObject::operator new[](size_t sz)
void*TObject::operator new[](size_t sz, void* vp)
RooSimWSTool&operator=(const RooSimWSTool&)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidTNamed::Print(Option_t* option = "") const
virtual voidRooPrintable::printAddress(ostream& os) const
virtual voidRooPrintable::printArgs(ostream& os) const
virtual voidRooPrintable::printClassName(ostream& os) const
virtual voidRooPrintable::printExtras(ostream& os) const
virtual voidRooPrintable::printMultiline(ostream& os, Int_t contents, Bool_t verbose = kFALSE, TString indent = "") const
virtual voidRooPrintable::printName(ostream& os) const
virtual voidRooPrintable::printStream(ostream& os, Int_t contents, RooPrintable::StyleOption style, TString indent = "") const
virtual voidRooPrintable::printTitle(ostream& os) const
virtual voidRooPrintable::printTree(ostream& os, TString indent = "") const
virtual voidRooPrintable::printValue(ostream& os) const
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
voidTObject::ResetBit(UInt_t f)
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "")
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
virtual voidTNamed::SetName(const char* name)MENU
virtual voidTNamed::SetNameTitle(const char* name, const char* title)
static voidTObject::SetObjectStat(Bool_t stat)
virtual voidTNamed::SetTitle(const char* title = "")MENU
virtual voidTObject::SetUniqueID(UInt_t uid)
virtual voidShowMembers(TMemberInspector& insp, char* parent)
virtual Int_tTNamed::Sizeof() const
virtual voidStreamer(TBuffer& b)
voidStreamerNVirtual(TBuffer& b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
virtual voidTObject::UseCurrentStyle()
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const
protected:
RooSimWSTool(const RooSimWSTool&)
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
RooSimultaneous*executeBuild(const char* simPdfName, RooSimWSTool::ObjBuildConfig& obc, Bool_t verbose = kTRUE)
stringmakeSplitName(const RooArgSet& splitCatSet)
voidTObject::MakeZombie()
RooSimWSTool::ObjBuildConfig*validateConfig(RooSimWSTool::BuildConfig& bc)

Data Members

Class Charts

Inheritance Inherited Members Includes Libraries
Class Charts

Function documentation

RooSimWSTool(RooWorkspace& ws)
 Constructor of SimWSTool on given workspace. All input is taken from the workspace
 All output is stored in the workspace
~RooSimWSTool()
 Destructor
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 p.d.f with name simPdfName from cloning specializations of protytpe p.d.f protoPdfName.
 The following named arguments are supported

 SplitParam(varname, catname)                   -- Split parameter(s) with given name(s) in category(s) with given names
 SplitParam(var, cat)                           -- Split given parameter(s) in givem category(s)
 SplitParamConstrained(vname, cname, remainder) -- Make constrained split in parameter(s) with given name(s) in category(s) with given names
                                                   putting remainder fraction formula in state with name "remainder"
 SplitParamConstrained(var,cat,remainder)       -- Make constrained split in parameter(s) with given name(s) in category(s) with given names
                                                   putting remainder fraction formula in state with name "remainder"
 Restrict(catName,stateNameList)                -- Restrict build by only considered listed state names of category with given name
RooSimultaneous* build(const char* simPdfName, RooSimWSTool::BuildConfig& bc, Bool_t verbose = kTRUE)
 Build a RooSimultaneous p.d.f with name simPdfName from cloning specializations of protytpe p.d.f protoPdfName.
 Use the provided BuildConfig or MultiBuildConfig object to configure the build
RooSimultaneous* executeBuild(const char* simPdfName, RooSimWSTool::ObjBuildConfig& obc, Bool_t verbose = kTRUE)
 Internal build driver from validation ObjBuildConfig.
std::string makeSplitName(const RooArgSet& splitCatSet)
 Construct name of composite split
RooSimWSTool(RooWorkspace& ws)
 Constructors, assignment etc
ObjBuildConfig* validateConfig(RooSimWSTool::BuildConfig& bc)