Logo ROOT  
Reference Guide
RooAbsBinning.cxx
Go to the documentation of this file.
1/*****************************************************************************
2 * Project: RooFit *
3 * Package: RooFitCore *
4 * @(#)root/roofitcore:$Id$
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/**
18\file RooAbsBinning.cxx
19\class RooAbsBinning
20\ingroup Roofitcore
21
22RooAbsBinning is the abstract base class for RooRealVar binning definitions.
23This class defines the interface to retrieve bin boundaries, ranges etc.
24**/
25
26#include "RooAbsBinning.h"
27
28#include "RooAbsReal.h"
29#include "TBuffer.h"
30#include "TClass.h"
31
32#include "Riostream.h"
33
34using namespace std;
35
37;
38
39
40////////////////////////////////////////////////////////////////////////////////
41/// Constructor
42
44{
45}
46
47
48
49////////////////////////////////////////////////////////////////////////////////
50/// Destructor
51
53{
54}
55
56
57
58////////////////////////////////////////////////////////////////////////////////
59/// Print binning name
60
61void RooAbsBinning::printName(ostream& os) const
62{
63 os << GetName() ;
64}
65
66
67
68////////////////////////////////////////////////////////////////////////////////
69/// Print binning title
70
71void RooAbsBinning::printTitle(ostream& os) const
72{
73 os << GetTitle() ;
74}
75
76
77
78////////////////////////////////////////////////////////////////////////////////
79/// Print binning class name
80
81void RooAbsBinning::printClassName(ostream& os) const
82{
83 os << IsA()->GetName() ;
84}
85
86
87
88////////////////////////////////////////////////////////////////////////////////
89/// Print binning arguments (the RooAbsReal objects represening
90/// the variable bin boundaries for parameterized binning implementations
91
92void RooAbsBinning::printArgs(ostream& os) const
93{
94 os << "[ " ;
95 if (lowBoundFunc()) {
96 os << "lowerBound=" << lowBoundFunc()->GetName() ;
97 }
98 if (highBoundFunc()) {
99 if (lowBoundFunc()) {
100 os << " " ;
101 }
102 os << "upperBound=" << highBoundFunc()->GetName() ;
103 }
104 os << " ]" ;
105}
106
107
108
109////////////////////////////////////////////////////////////////////////////////
110/// Print binning value, i.e the bin boundary positions
111
112void RooAbsBinning::printValue(ostream &os) const
113{
114 Int_t n = numBins() ;
115 os << "B(" ;
116
117 Int_t i ;
118 for (i=0 ; i<n ; i++) {
119 if (i>0) {
120 os << " : " ;
121 }
122 os << binLow(i) ;
123 }
124 os << " : " << binHigh(n-1) ;
125 os << ")" ;
126
127}
128
129
130
131////////////////////////////////////////////////////////////////////////////////
132/// Custom streamer implementing schema evolution between V1 and V2 persistent binnings
133
135{
136 UInt_t R__s, R__c;
137 if (R__b.IsReading()) {
138 Version_t R__v = R__b.ReadVersion(&R__s, &R__c); if (R__v) { }
139 if (R__v==1) {
140 TObject::Streamer(R__b);
141 } else {
142 TNamed::Streamer(R__b);
143 }
145 R__b.CheckByteCount(R__s, R__c, RooAbsBinning::IsA());
146 } else {
147 R__c = R__b.WriteVersion(RooAbsBinning::IsA(), kTRUE);
148 TNamed::Streamer(R__b);
150 R__b.SetByteCount(R__c, kTRUE);
151 }
152}
153
short Version_t
Definition: RtypesCore.h:65
const Bool_t kTRUE
Definition: RtypesCore.h:100
#define ClassImp(name)
Definition: Rtypes.h:375
char name[80]
Definition: TGX11.cxx:110
RooAbsBinning is the abstract base class for RooRealVar binning definitions.
Definition: RooAbsBinning.h:26
void printTitle(std::ostream &os) const override
Print binning title.
virtual Double_t binLow(Int_t bin) const =0
~RooAbsBinning() override
Destructor.
Int_t numBins() const
Return number of bins.
Definition: RooAbsBinning.h:38
void Streamer(TBuffer &) override
Custom streamer implementing schema evolution between V1 and V2 persistent binnings.
virtual Double_t binHigh(Int_t bin) const =0
virtual RooAbsReal * highBoundFunc() const
Return pointer to RooAbsReal parameterized upper bound, if any.
Definition: RooAbsBinning.h:88
void printArgs(std::ostream &os) const override
Print binning arguments (the RooAbsReal objects represening the variable bin boundaries for parameter...
RooAbsBinning(const char *name=0)
Constructor.
virtual RooAbsReal * lowBoundFunc() const
Return pointer to RooAbsReal parameterized lower bound, if any.
Definition: RooAbsBinning.h:84
void printClassName(std::ostream &os) const override
Print binning class name.
void printName(std::ostream &os) const override
Print binning name.
TClass * IsA() const override
void printValue(std::ostream &os) const override
Print binning value, i.e the bin boundary positions.
virtual void Streamer(TBuffer &)
Buffer base class used for serializing objects.
Definition: TBuffer.h:43
virtual void SetByteCount(UInt_t cntpos, Bool_t packInVersion=kFALSE)=0
virtual Version_t ReadVersion(UInt_t *start=0, UInt_t *bcnt=0, const TClass *cl=0)=0
virtual Int_t CheckByteCount(UInt_t startpos, UInt_t bcnt, const TClass *clss)=0
Bool_t IsReading() const
Definition: TBuffer.h:86
virtual UInt_t WriteVersion(const TClass *cl, Bool_t useBcnt=kFALSE)=0
The TNamed class is the base class for all named ROOT classes.
Definition: TNamed.h:29
const char * GetName() const override
Returns name of object.
Definition: TNamed.h:47
void Streamer(TBuffer &) override
Stream an object of class TObject.
const char * GetTitle() const override
Returns title of object.
Definition: TNamed.h:48
virtual void Streamer(TBuffer &)
Stream an object of class TObject.
Definition: TObject.cxx:806
const Int_t n
Definition: legend1.C:16