ROOT  6.06/09
Reference Guide
RooCatType.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * Project: RooFit *
3  * Package: RooFitCore *
4  * File: $Id: RooCatType.h,v 1.20 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_CAT_TYPE
17 #define ROO_CAT_TYPE
18 
19 #include "Riosfwd.h"
20 #include "TObject.h"
21 #include "RooPrintable.h"
22 
23 class RooCatType : public TObject, public RooPrintable {
24 public:
25  inline RooCatType() : TObject(), RooPrintable() {
26  // Default constructor
27  _value = 0 ; _label[0] = 0 ;
28  }
29 
30  inline RooCatType(const char* name, Int_t value) : TObject(), RooPrintable(), _value(value) {
31  // Constructor with state name and index value
32  SetName(name) ;
33  }
34  inline RooCatType(const RooCatType& other) :
35  TObject(other), RooPrintable(other), _value(other._value) {
36  // Copy constructor
37  strlcpy(_label,other._label,256) ;
38  } ;
39 
40  virtual ~RooCatType() {
41  // Destructor
42  } ;
43  virtual TObject* Clone(const char*) const { return new RooCatType(*this); }
44 
45  virtual const Text_t* GetName() const {
46  // Return state name
47  return _label[0] ? _label : 0 ;
48  }
49  virtual void SetName(const Text_t* name) ;
50 
51  inline RooCatType& operator=(const RooCatType& other) {
52  // Assignment operator from other RooCatType
53  if (&other==this) return *this ;
54  //SetName(other.GetName()) ;
55  _label[0] = 0 ;
56  _value = other._value ;
57  return *this ; }
58 
59  inline void assignFast(const RooCatType& other) {
60  // Fast assignment operator from other RooCatType
61  _label[0] = 0 ;
62  _value = other._value ;
63  }
64 
65  inline Bool_t operator==(const RooCatType& other) {
66  // Equality operator with other RooCatType
67  return (_value==other._value) ;
68  }
69 
70  inline Bool_t operator==(Int_t index) {
71  // Return true if index value matches integer
72  return (_value==index) ;
73  }
74 
75  Bool_t operator==(const char* label) {
76  // Return true if state name matchins string
77  return !strcmp(_label,label) ;
78  }
79 
80  inline Int_t getVal() const {
81  // Return index value
82  return _value ;
83  }
84  void setVal(Int_t newValue) {
85  // Set index value
86  _value = newValue ;
87  }
88 
89  virtual void printName(std::ostream& os) const ;
90  virtual void printTitle(std::ostream& os) const ;
91  virtual void printClassName(std::ostream& os) const ;
92  virtual void printValue(std::ostream& os) const ;
93 
94  inline virtual void Print(Option_t *options= 0) const {
95  // Printing interface
97  }
98 
99 protected:
100 
101  friend class RooAbsCategoryLValue ;
102  friend class RooAbsCategory ;
103  Int_t _value ; // Index value
104  char _label[256] ; // State name
105 
106  ClassDef(RooCatType,1) // Category state, (name,index) pair
107 } ;
108 
109 
110 #endif
111 
virtual void printName(std::ostream &os) const
Print the name of the state.
Definition: RooCatType.cxx:60
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'.
const char Option_t
Definition: RtypesCore.h:62
virtual void printValue(std::ostream &os) const
Print the value (index integer) of the state.
Definition: RooCatType.cxx:90
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
virtual ~RooCatType()
Definition: RooCatType.h:40
RooCatType & operator=(const RooCatType &other)
Definition: RooCatType.h:51
Bool_t operator==(const RooCatType &other)
Definition: RooCatType.h:65
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)
Bool_t operator==(const char *label)
Definition: RooCatType.h:75
#define ClassDef(name, id)
Definition: Rtypes.h:254
char _label[256]
Definition: RooCatType.h:104
RooCatType(const char *name, Int_t value)
Definition: RooCatType.h:30
Int_t _value
Definition: RooCatType.h:103
RooCatType(const RooCatType &other)
Definition: RooCatType.h:34
static std::ostream & defaultPrintStream(std::ostream *os=0)
Return a reference to the current default stream to use in Print().
Int_t getVal() const
Definition: RooCatType.h:80
virtual void SetName(const Text_t *name)
Constructor with name argument.
Definition: RooCatType.cxx:46
virtual void Print(Option_t *options=0) const
This method must be overridden when a class wants to print itself.
Definition: RooCatType.h:94
#define name(a, b)
Definition: linkTestLib0.cpp:5
Mother of all ROOT objects.
Definition: TObject.h:58
virtual void printTitle(std::ostream &os) const
Print the title of the state.
Definition: RooCatType.cxx:70
char Text_t
Definition: RtypesCore.h:58
void assignFast(const RooCatType &other)
Definition: RooCatType.h:59
void setVal(Int_t newValue)
Definition: RooCatType.h:84
float value
Definition: math.cpp:443
Bool_t operator==(Int_t index)
Definition: RooCatType.h:70
virtual const Text_t * GetName() const
Returns name of object.
Definition: RooCatType.h:45
virtual TObject * Clone(const char *) const
Make a clone of an object using the Streamer facility.
Definition: RooCatType.h:43
virtual void printClassName(std::ostream &os) const
Print the class name of the state.
Definition: RooCatType.cxx:80