16 #ifndef ROO_ABS_CATEGORY_LVALUE
17 #define ROO_ABS_CATEGORY_LVALUE
22 class RooAbsCategoryLValue :
public RooAbsCategory,
public RooAbsLValue {
25 RooAbsCategoryLValue() {
28 RooAbsCategoryLValue(
const char *name,
const char *title);
29 RooAbsCategoryLValue(
const RooAbsCategoryLValue& other,
const char* name=0) ;
30 virtual ~RooAbsCategoryLValue();
33 virtual Bool_t setIndex(Int_t index, Bool_t printError=kTRUE) = 0 ;
34 virtual Bool_t setLabel(
const char* label, Bool_t printError=kTRUE) = 0 ;
35 RooAbsArg& operator=(
int index) ;
36 RooAbsArg& operator=(
const char* label) ;
37 RooAbsArg& operator=(
const RooAbsCategory& other) ;
40 virtual void setBin(Int_t ibin,
const char* rangeName=0) ;
41 virtual Int_t getBin(
const char* rangeName=0)
const ;
42 virtual Int_t numBins(
const char* rangeName)
const ;
43 virtual Double_t getBinWidth(Int_t ,
const char* =0)
const {
47 virtual Double_t volume(
const char* rangeName)
const {
49 return numTypes(rangeName) ;
51 virtual void randomize(
const char* rangeName=0);
53 virtual const RooAbsBinning* getBinningPtr(
const char* )
const {
return 0 ; }
54 virtual std::list<std::string> getBinningNames()
const {
return std::list<std::string>(1,
"") ; }
55 virtual Int_t getBin(
const RooAbsBinning* )
const {
return getBin((
const char*)0) ; }
58 inline void setConstant(Bool_t value= kTRUE) {
60 setAttribute(
"Constant",value);
63 inline virtual Bool_t isLValue()
const {
69 virtual Bool_t readFromStream(std::istream& is, Bool_t compact, Bool_t verbose=kFALSE) ;
70 virtual void writeToStream(std::ostream& os, Bool_t compact)
const ;
74 friend class RooSimGenContext ;
75 friend class RooSimSplitGenContext ;
76 virtual void setIndexFast(Int_t index) { _value._value = index ; _value._label[0]=0 ; }
78 Bool_t setOrdinal(UInt_t index,
const char* rangeName);
79 void copyCache(
const RooAbsArg* source, Bool_t valueOnly=kFALSE, Bool_t setValDirty=kTRUE) ;
81 ClassDef(RooAbsCategoryLValue,1)