Logo ROOT  
Reference Guide
RooAbsCategoryLValue.h
Go to the documentation of this file.
1/*****************************************************************************
2 * Project: RooFit *
3 * Package: RooFitCore *
4 * File: $Id: RooAbsCategoryLValue.h,v 1.22 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#ifndef ROO_ABS_CATEGORY_LVALUE
17#define ROO_ABS_CATEGORY_LVALUE
18
19#include "RooAbsCategory.h"
20#include "RooAbsLValue.h"
21#include <list>
22#include <string>
23#include <utility>
24
26public:
27 // Constructor, assignment etc.
29 // Default constructor
30 }
31 RooAbsCategoryLValue(const char *name, const char *title);
32 RooAbsCategoryLValue(const RooAbsCategoryLValue& other, const char* name=nullptr) ;
33 ~RooAbsCategoryLValue() override;
34
35 // Value modifiers
36 ////////////////////////////////////////////////////////////////////////////////
37 /// Change category state by specifying the index code of the desired state.
38 /// If printError is set, a message will be printed if
39 /// the specified index does not represent a valid state.
40 /// \return bool to signal an error.
41 virtual bool setIndex(value_type index, bool printError = true) = 0;
42 ////////////////////////////////////////////////////////////////////////////////
43 /// Change category state to state specified by another category state.
44 /// If printError is set, a message will be printed if
45 /// the specified index does not represent a valid state.
46 /// \note The state name of the other category is ignored.
47 /// \return bool to signal an error.
48 bool setIndex(const std::pair<std::string,value_type>& nameIdxPair, bool printError = true) {
49 return setIndex(nameIdxPair.second, printError);
50 }
51 bool setOrdinal(unsigned int index);
52
53 ////////////////////////////////////////////////////////////////////////////////
54 /// Change category state by specifying a state name.
55 /// If printError is set, a message will be printed if
56 /// the specified state name does not represent a valid state.
57 /// \return bool to signal an error.
58 virtual bool setLabel(const char* label, bool printError=true) = 0;
59 /// \copydoc setLabel(const char*, bool)
60 bool setLabel(const std::string& label, bool printError = true) {
61 return setLabel(label.c_str(), printError);
62 }
63 ////////////////////////////////////////////////////////////////////////////////
64 /// Change category state to the state name of another category.
65 /// If printError is set, a message will be printed if
66 /// the specified state name does not represent a valid state.
67 /// \note The state index of the other category is ignored.
68 /// \return bool to signal an error.
69 bool setLabel(const std::pair<std::string,value_type>& nameIdxPair, bool printError = true) {
70 return setLabel(nameIdxPair.first.c_str(), printError);
71 }
72
73
75 RooAbsArg& operator=(const char* label) ;
76 RooAbsArg& operator=(const RooAbsCategory& other) ;
77
78 // Binned fit interface
79 void setBin(Int_t ibin, const char* rangeName=nullptr) override ;
80 /// Get the index of the plot bin for the current value of this category.
81 Int_t getBin(const char* /*rangeName*/=nullptr) const override {
83 }
84 Int_t numBins(const char* rangeName=nullptr) const override ;
85 double getBinWidth(Int_t /*i*/, const char* /*rangeName*/=nullptr) const override {
86 // Return volume of i-th bin (according to binning named rangeName if rangeName!=nullptr)
87 return 1.0 ;
88 }
89 double volume(const char* rangeName) const override {
90 // Return span of range with given name (=number of states included in this range)
91 return numTypes(rangeName) ;
92 }
93 void randomize(const char* rangeName=nullptr) override;
94
95 const RooAbsBinning* getBinningPtr(const char* /*rangeName*/) const override { return nullptr ; }
96 std::list<std::string> getBinningNames() const override { return std::list<std::string>(1, "") ; }
97 Int_t getBin(const RooAbsBinning* /*ptr*/) const override { return getBin((const char*)0) ; }
98
99
100 inline void setConstant(bool value= true) {
101 // Declare category constant
102 setAttribute("Constant",value);
103 }
104
105 inline bool isLValue() const override {
106 // Object is an l-value
107 return true;
108 }
109
110protected:
111
112 friend class RooSimGenContext ;
114 /// \cond
115 /// \deprecated This function is useless. Use setIndex() instead.
116 virtual void setIndexFast(Int_t index) {
118 }
119 /// \endcond
120
121 void copyCache(const RooAbsArg* source, bool valueOnly=false, bool setValDirty=true) override ;
122
123 ClassDefOverride(RooAbsCategoryLValue,1) // Abstract modifiable index variable
124};
125
126#endif
#define ClassDefOverride(name, id)
Definition: Rtypes.h:339
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t index
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void value
char name[80]
Definition: TGX11.cxx:110
RooAbsArg is the common abstract base class for objects that represent a value and a "shape" in RooFi...
Definition: RooAbsArg.h:71
void setAttribute(const Text_t *name, bool value=true)
Set (default) or clear a named boolean attribute of this object.
Definition: RooAbsArg.cxx:246
RooAbsBinning is the abstract base class for RooRealVar binning definitions.
Definition: RooAbsBinning.h:25
RooAbsCategoryLValue is the common abstract base class for objects that represent a discrete value th...
void randomize(const char *rangeName=nullptr) override
Randomize current value.
virtual bool setIndex(value_type index, bool printError=true)=0
Change category state by specifying the index code of the desired state.
bool isLValue() const override
Is this argument an l-value, i.e., can it appear on the left-hand side of an assignment expression?...
void copyCache(const RooAbsArg *source, bool valueOnly=false, bool setValDirty=true) override
Copy the cached value from given source and raise dirty flag.
Int_t getBin(const RooAbsBinning *) const override
Int_t numBins(const char *rangeName=nullptr) const override
Return the number of fit bins ( = number of types )
bool setOrdinal(unsigned int index)
Set our state to our nth defined type.
std::list< std::string > getBinningNames() const override
bool setIndex(const std::pair< std::string, value_type > &nameIdxPair, bool printError=true)
Change category state to state specified by another category state.
bool setLabel(const std::string &label, bool printError=true)
Change category state by specifying a state name.
bool setLabel(const std::pair< std::string, value_type > &nameIdxPair, bool printError=true)
Change category state to the state name of another category.
double getBinWidth(Int_t, const char *=nullptr) const override
void setConstant(bool value=true)
double volume(const char *rangeName) const override
RooAbsArg & operator=(int index)
Assignment operator from integer index number.
void setBin(Int_t ibin, const char *rangeName=nullptr) override
Set category to i-th fit bin, which is the i-th registered state.
~RooAbsCategoryLValue() override
Destructor.
const RooAbsBinning * getBinningPtr(const char *) const override
virtual bool setLabel(const char *label, bool printError=true)=0
Change category state by specifying a state name.
Int_t getBin(const char *=nullptr) const override
Get the index of the plot bin for the current value of this category.
A space to attach TBranches.
unsigned int getCurrentOrdinalNumber() const
Return ordinal number of the current state.
value_type _currentIndex
Current category state.
Int_t numTypes(const char *=nullptr) const
Return number of types defined (in range named rangeName if rangeName!=nullptr)
Abstract base class for objects that are lvalues, i.e.
Definition: RooAbsLValue.h:26
RooSimGenContext is an efficient implementation of the generator context specific for RooSimultaneous...
RooSimSplitGenContext is an efficient implementation of the generator context specific for RooSimulta...