Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
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 virtual ~RooSimWSTool() ;
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_t verbose=kTRUE) ;
58
60 public:
61 virtual ~SimWSIFace() {} ;
62 std::string create(RooFactoryWSTool& ft, const char* typeName, const char* instanceName, std::vector<std::string> args) ;
63 } ;
64
65
66protected:
67
69
71 RooSimultaneous* executeBuild(const char* simPdfName,ObjBuildConfig& obc, Bool_t verbose=kTRUE) ;
72 std::string makeSplitName(const RooArgSet& splitCatSet) ;
73
75
76 ClassDef(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 virtual ~SplitRule() {} ;
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 ClassDef(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 virtual ~MultiBuildConfig() {} ;
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 ClassDef(MultiBuildConfig,0) // Build configuration object for RooSimWSTool with multiple prototype p.d.f.
144 } ;
145
146
147
148
149
150
152public:
154 virtual ~ObjSplitRule() ;
155
156protected:
157 friend class RooSimWSTool ;
159 std::list<const RooCatType*> _miStateList ;
160 std::map<RooAbsArg*, std::pair<RooArgSet,std::string> > _paramSplitMap ; //<paramName,<std::list<splitCatSet>,remainderStateName>>
161 ClassDef(ObjSplitRule,0) // Validated RooSimWSTool split rule
162 } ;
163
164
166{
167 public:
169 virtual ~ObjBuildConfig() {} ;
170 void print() ;
171
172 protected:
173 friend class RooSimWSTool ;
174 std::map<RooAbsPdf*,ObjSplitRule> _pdfmap ;
175 std::map<RooAbsCategory*,std::list<const RooCatType*> > _restr ;
179
180 ClassDef(ObjBuildConfig,0) // Validated RooSimWSTool build configuration
181 } ;
182
183#endif
const Bool_t kTRUE
Definition RtypesCore.h:91
#define ClassDef(name, id)
Definition Rtypes.h:325
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...
RooAbsCategory is the base class for objects that represent a discrete value with a finite number of ...
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Definition RooArgSet.h:29
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:27
RooCmdArg is a named container for two doubles, two integers two object points and three string point...
Definition RooCmdArg.h:27
static const RooCmdArg & none()
Return reference to null argument.
Definition RooCmdArg.cxx:52
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.
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
std::map< std::string, std::string > _restr
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'.
std::map< RooAbsPdf *, ObjSplitRule > _pdfmap
void print()
Print details of a validated build configuration.
std::map< RooAbsCategory *, std::list< const RooCatType * > > _restr
virtual ~ObjSplitRule()
Destructor.
std::map< RooAbsArg *, std::pair< RooArgSet, std::string > > _paramSplitMap
std::list< const RooCatType * > _miStateList
std::string create(RooFactoryWSTool &ft, const char *typeName, const char *instanceName, std::vector< std::string > args)
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="")
std::list< std::string > _miStateNameList
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
The RooSimWSTool is a tool operating on RooWorkspace objects that can clone PDFs into a series of var...
RooWorkspace * _ws
RooSimWSTool(const RooSimWSTool &)
ObjBuildConfig * validateConfig(BuildConfig &bc)
Validate build configuration.
RooSimultaneous * executeBuild(const char *simPdfName, ObjBuildConfig &obc, Bool_t verbose=kTRUE)
Internal build driver from validation ObjBuildConfig.
std::string makeSplitName(const RooArgSet &splitCatSet)
Construct name of composite split.
virtual ~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 PDF with name simPdfName from cloning specializations of protytpe PDF protoPd...
RooSimultaneous facilitates simultaneous fitting of multiple PDFs to subsets of a given dataset.
The RooWorkspace is a persistable container for RooFit projects.
The TNamed class is the base class for all named ROOT classes.
Definition TNamed.h:29
void ws()
Definition ws.C:66