16 #ifndef ROO_ABS_BINNING
17 #define ROO_ABS_BINNING
23 class RooAbsRealLValue ;
26 class RooAbsBinning :
public TNamed,
public RooPrintable {
29 RooAbsBinning(
const char* name=0) ;
30 RooAbsBinning(
const RooAbsBinning& other,
const char* name=0) : TNamed(name,name), RooPrintable(other) {
33 virtual TObject* Clone(
const char* newname=0)
const {
return clone(newname) ; }
34 virtual RooAbsBinning* clone(
const char* name=0)
const = 0 ;
35 virtual ~RooAbsBinning() ;
37 Int_t numBins()
const {
39 return numBoundaries()-1 ;
41 virtual Int_t numBoundaries()
const = 0 ;
42 virtual Int_t binNumber(Double_t x)
const = 0 ;
43 virtual Int_t rawBinNumber(Double_t x)
const {
return binNumber(x) ; }
44 virtual Double_t binCenter(Int_t bin)
const = 0 ;
45 virtual Double_t binWidth(Int_t bin)
const = 0 ;
46 virtual Double_t binLow(Int_t bin)
const = 0 ;
47 virtual Double_t binHigh(Int_t bin)
const = 0 ;
48 virtual Bool_t isUniform()
const {
return kFALSE ; }
50 virtual void setRange(Double_t xlo, Double_t xhi) = 0 ;
51 virtual void setMin(Double_t xlo) {
53 setRange(xlo,highBound()) ;
55 virtual void setMax(Double_t xhi) {
57 setRange(lowBound(),xhi) ;
60 virtual Double_t lowBound()
const = 0 ;
61 virtual Double_t highBound()
const = 0 ;
62 virtual Double_t averageBinWidth()
const = 0 ;
65 virtual Double_t* array()
const = 0 ;
67 inline virtual void Print(Option_t *options= 0)
const {
69 printStream(defaultPrintStream(),defaultPrintContents(options),defaultPrintStyle(options));
72 virtual void printName(std::ostream& os)
const ;
73 virtual void printTitle(std::ostream& os)
const ;
74 virtual void printClassName(std::ostream& os)
const ;
75 virtual void printArgs(std::ostream& os)
const ;
76 virtual void printValue(std::ostream& os)
const ;
79 virtual Bool_t isParameterized()
const {
83 virtual RooAbsReal* lowBoundFunc()
const {
87 virtual RooAbsReal* highBoundFunc()
const {
91 virtual Bool_t isShareable()
const {
95 virtual void insertHook(RooAbsRealLValue&)
const {
98 virtual void removeHook(RooAbsRealLValue&)
const {
104 ClassDef(RooAbsBinning,2)