ROOT  6.06/09
Reference Guide
RooCustomizer.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * Project: RooFit *
3  * Package: RooFitCore *
4  * File: $Id: RooCustomizer.h,v 1.11 2007/05/11 09:11:30 verkerke Exp $
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_PDF_CUSTOMIZER
18 #define ROO_PDF_CUSTOMIZER
19 
20 #include "Rtypes.h"
21 #include "TList.h"
22 #include "TNamed.h"
23 #include "TString.h"
24 #include "RooArgSet.h"
25 #include "RooPrintable.h"
26 #include "RooFactoryWSTool.h"
27 class RooAbsCategoryLValue ;
28 class RooAbsCategory ;
29 class RooAbsArg ;
30 class RooAbsPdf ;
31 
32 class RooCustomizer : public TNamed, public RooPrintable {
33 
34 public:
35 
36  // Constructors, assignment etc
37  RooCustomizer(const RooAbsArg& pdf, const RooAbsCategoryLValue& masterCat, RooArgSet& splitLeafListOwned, RooArgSet* splitLeafListAll=0) ;
38  RooCustomizer(const RooAbsArg& pdf, const char* name) ;
39  virtual ~RooCustomizer() ;
40 
41  void setOwning(Bool_t flag) {
42  // If flag is true, make customizer own all created components
43  _owning = flag ;
44  }
45 
46  void splitArgs(const RooArgSet& argSet, const RooAbsCategory& splitCat) ;
47  void splitArg(const RooAbsArg& arg, const RooAbsCategory& splitCat) ;
48  void replaceArg(const RooAbsArg& orig, const RooAbsArg& subst) ;
49  RooAbsArg* build(const char* masterCatState, Bool_t verbose=kFALSE) ;
51 
52  const RooArgSet& cloneBranchList() const {
53  // Return list of cloned branch nodes
54  return *_cloneBranchList ;
55  }
56  const RooArgSet& cloneLeafList() const {
57  // Return list of cloned leaf nodes
58  return *_cloneNodeListOwned ;
59  }
60 
61  // Printing interface
62  virtual void printName(std::ostream& os) const ;
63  virtual void printTitle(std::ostream& os) const ;
64  virtual void printClassName(std::ostream& os) const ;
65  virtual void printArgs(std::ostream& os) const ;
66  virtual void printMultiline(std::ostream& os, Int_t content, Bool_t verbose=kFALSE, TString indent= "") const;
67 
68  inline virtual void Print(Option_t *options= 0) const {
69  // Printing interface
71  }
72 
73  // Releases ownership of list of cloned branch nodes
74  void setCloneBranchSet(RooArgSet& cloneBranchSet) ;
75 
76  // Factory interface
78  public:
79  virtual ~CustIFace() {} ;
80  std::string create(RooFactoryWSTool& ft, const char* typeName, const char* instanceName, std::vector<std::string> args) ;
81  } ;
82 
83 protected:
84 
86  void initialize() ;
87 
88  RooAbsArg* doBuild(const char* masterCatState, Bool_t verbose) ;
89 
90  Bool_t _sterile ; // If true we do not have as associated master category
91  Bool_t _owning ; // If true we own all created components
92  TString _name ; // Name of this object
93 
94  TList _splitArgList ; // List of RooAbsArgs to be split
95  TList _splitCatList ; // List of categories to be used for above splits
96 
97  TList _replaceArgList ; // List of RooAbsArgs to be replaced
98  TList _replaceSubList ; // List of replacement RooAbsArgs
99 
100  // Master nodes are not owned
101  RooAbsArg* _masterPdf ; // Pointer to input p.d.f
102  RooAbsCategoryLValue* _masterCat ; // Pointer to input master category
103 
104  TIterator* _masterLeafListIter ; // Iterator over leaf list
105  TIterator* _masterBranchListIter ; // Iterator over branch list
106 
107  RooArgSet _masterBranchList ; // List of branch nodes
108  RooArgSet _masterLeafList ; // List of leaf nodes
109 
110  RooArgSet _internalCloneBranchList ; // List of branches of internal clone
111  RooArgSet* _cloneBranchList ; // Pointer to list of cloned branches used
112 
113  // Cloned leafs are owned by the user supplied list in the ctor
114  RooArgSet* _cloneNodeListAll ; // List of all cloned nodes
115  RooArgSet* _cloneNodeListOwned ; // List of owned cloned nodes
116 
117  ClassDef(RooCustomizer,0) // Editing tool for RooAbsArg composite object expressions
118 } ;
119 
120 #endif
virtual void printTitle(std::ostream &os) const
Print title of customizer.
const RooArgSet & cloneBranchList() const
Definition: RooCustomizer.h:52
RooArgSet * _cloneBranchList
virtual void Print(Option_t *options=0) const
Print TNamed name and title.
Definition: RooCustomizer.h:68
virtual void printStream(std::ostream &os, Int_t contents, StyleOption style, TString indent="") const
Print description of object on ostream, printing contents set by contents integer, which is interpreted as an OR of 'enum ContentsOptions' values and in the style given by 'enum StyleOption'.
void splitArg(const RooAbsArg &arg, const RooAbsCategory &splitCat)
Split all argument 'arg' into individualized clones for each defined state of 'splitCat'.
TList _splitArgList
Definition: RooCustomizer.h:94
virtual void printMultiline(std::ostream &os, Int_t content, Bool_t verbose=kFALSE, TString indent="") const
Print customizer configuration details.
const char Option_t
Definition: RtypesCore.h:62
RooCustomizer(const RooAbsArg &pdf, const RooAbsCategoryLValue &masterCat, RooArgSet &splitLeafListOwned, RooArgSet *splitLeafListAll=0)
Constructor with a prototype and masterCat index category.
Basic string class.
Definition: TString.h:137
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
const Bool_t kFALSE
Definition: Rtypes.h:92
virtual StyleOption defaultPrintStyle(Option_t *opt) const
virtual Int_t defaultPrintContents(Option_t *opt) const
Default choice of contents to be printed (name and value)
Iterator abstract base class.
Definition: TIterator.h:32
TList _splitCatList
Definition: RooCustomizer.h:95
#define ClassDef(name, id)
Definition: Rtypes.h:254
RooArgSet _masterLeafList
The TNamed class is the base class for all named ROOT classes.
Definition: TNamed.h:33
void setOwning(Bool_t flag)
Definition: RooCustomizer.h:41
RooArgSet _masterBranchList
RooArgSet _internalCloneBranchList
TList _replaceArgList
Definition: RooCustomizer.h:97
virtual void printClassName(std::ostream &os) const
Print class name of customizer.
TIterator * _masterLeafListIter
A doubly linked list.
Definition: TList.h:47
TIterator * _masterBranchListIter
bool verbose
virtual void printArgs(std::ostream &os) const
Print arguments of customizer, i.e. input p.d.f and input master category (if any) ...
static void indent(ostringstream &buf, int indent_level)
RooAbsCategoryLValue * _masterCat
void replaceArg(const RooAbsArg &orig, const RooAbsArg &subst)
Replace any occurence of arg 'orig' with arg 'subst'.
static std::ostream & defaultPrintStream(std::ostream *os=0)
Return a reference to the current default stream to use in Print().
RooAbsArg * _masterPdf
RooAbsArg * doBuild(const char *masterCatState, Bool_t verbose)
Back-end implementation of the p.d.f building functionality.
#define name(a, b)
Definition: linkTestLib0.cpp:5
void setCloneBranchSet(RooArgSet &cloneBranchSet)
Install the input RooArgSet as container in which all cloned branches will be stored.
void splitArgs(const RooArgSet &argSet, const RooAbsCategory &splitCat)
Split all arguments in 'set' into individualized clones for each defined state of 'splitCat'...
RooAbsPdf is the abstract interface for all probability density functions The class provides hybrid a...
Definition: RooAbsPdf.h:41
RooArgSet * _cloneNodeListOwned
RooAbsArg * build(const char *masterCatState, Bool_t verbose=kFALSE)
Build a clone of the prototype executing all registered 'replace' rules and 'split' rules for the mas...
std::string create(RooFactoryWSTool &ft, const char *typeName, const char *instanceName, std::vector< std::string > args)
RooArgSet * _cloneNodeListAll
TList _replaceSubList
Definition: RooCustomizer.h:98
virtual void printName(std::ostream &os) const
Print name of customizer.
RooAbsArg is the common abstract base class for objects that represent a value (of arbitrary type) an...
Definition: RooAbsArg.h:66
virtual ~RooCustomizer()
Destructor.
void initialize()
Initialize the customizer.
const RooArgSet & cloneLeafList() const
Definition: RooCustomizer.h:56