96 const TAxis *axis= ((
TH1&)data).GetXaxis();
103 for(
Int_t bin= 1; bin <= nbin; bin++) {
143 const TAxis *axis= ((
TH1&)data1).GetXaxis();
157 coutE(
InputArguments) <<
"RooHist::RooHist: histograms have different number of bins" << endl;
160 for(
Int_t bin= 1; bin <= nbin; bin++) {
163 coutW(
InputArguments) <<
"RooHist::RooHist: histograms have different centers for bin " << bin << endl;
220 coutE(
InputArguments) <<
"RooHist::RooHist input histograms have incompatible binning, combined histogram will remain empty" << endl ;
228 if (wgt1!=1.0 || wgt2 != 1.0) {
229 coutW(
InputArguments) <<
"RooHist::RooHist: WARNING: Poisson errors of weighted sum of two histograms is not well defined! " << endl
230 <<
" Summed histogram bins will rounded to nearest integer for Poisson confidence interval calculation" << endl ;
235 for(i=0 ; i<
n ; i++) {
237 #if ROOT_VERSION_CODE >= ROOT_VERSION(4,0,1) 243 #if ROOT_VERSION_CODE >= ROOT_VERSION(4,0,1) 248 addBin(x1,
roundBin(wgt1*y1+wgt2*y2),2*dx1/xErrorFrac,xErrorFrac) ;
256 for(i=0 ; i<
n ; i++) {
258 #if ROOT_VERSION_CODE >= ROOT_VERSION(4,0,1) 266 #if ROOT_VERSION_CODE >= ROOT_VERSION(4,0,1) 271 Double_t dy =
sqrt(wgt1*wgt1*dy1*dy1+wgt2*wgt2*dy2*dy2) ;
272 addBinWithError(x1,wgt1*y1+wgt2*y2,dy,dy,2*dx1/xErrorFrac,xErrorFrac) ;
306 for (
int i=0 ; i<
GetN() ; i++) {
309 #if ROOT_VERSION_CODE >= ROOT_VERSION(4,0,1) 315 if (x>=xlo && x<=xhi) {
321 coutW(
Plotting) <<
"RooHist::getFitRangeNEvt() WARNING: Number of normalization events associated to histogram is not equal to number of events in histogram" << endl
322 <<
" due cut made in RooAbsData::plotOn() call. Automatic normalization over sub-range of plot variable assumes" << endl
323 <<
" that the effect of that cut is uniform across the plot, which may be an incorrect assumption. To be sure of" << endl
324 <<
" correct normalization explicit pass normalization information to RooAbsPdf::plotOn() call using Normalization()" << endl ;
350 coutW(
Plotting) <<
fName <<
"::roundBin: rounding negative bin contents to zero: " << y << endl;
355 coutW(
Plotting) <<
fName <<
"::roundBin: rounding non-integer bin contents: " << y << endl;
370 coutW(
Plotting) <<
"RooHist::addBin(" <<
GetName() <<
") WARNING: negative entry set to zero when Poisson error bars are requested" << endl ;
385 Double_t ym1(0),yp1(0),ym2(0),yp2(0) ;
390 coutE(
Plotting) <<
"RooHist::addBin: unable to add bin with " << n <<
" events" << endl;
392 ym = ym1 + (n-n1)*(ym2-ym1) ;
393 yp = yp1 + (n-n1)*(yp2-yp1) ;
395 <<
") WARNING: non-integer bin entry " << n <<
" with Poisson errors, interpolating between Poisson errors of adjacent integer" << endl ;
399 coutE(
Plotting) <<
"RooHist::addBin: unable to add bin with " << n <<
" events" << endl;
404 SetPoint(index,binCenter,n*scale*scaleFactor);
405 SetPointError(index,dx*xErrorFrac,dx*xErrorFrac,scale*(n-ym)*scaleFactor,scale*(yp-n)*scaleFactor);
421 if(binWidth > 0 && correctForBinWidth) {
428 SetPoint(index,binCenter,n*scale*scaleFactor);
429 SetPointError(index,dx*xErrorFrac,dx*xErrorFrac,elow*scale*scaleFactor,ehigh*scale*scaleFactor);
448 SetPoint(index,binCenter,n*scaleFactor);
449 SetPointError(index,exlow,exhigh,eylow*scaleFactor,eyhigh*scaleFactor);
471 coutE(
Plotting) <<
"RooHist::addAsymmetryBin: unable to calculate binomial error for bin with " << n1 <<
"," << n2 <<
" events" << endl;
476 SetPoint(index,binCenter,a*scaleFactor);
477 SetPointError(index,dx*xErrorFrac,dx*xErrorFrac,(a-ym)*scaleFactor,(yp-a)*scaleFactor);
502 SetPoint(index,binCenter,a*scaleFactor);
503 SetPointError(index,dx*xErrorFrac,dx*xErrorFrac,(a-ym)*scaleFactor,(yp-a)*scaleFactor);
525 coutE(
Plotting) <<
"RooHist::addEfficiencyBin: unable to calculate binomial error for bin with " << n1 <<
"," << n2 <<
" events" << endl;
529 SetPoint(index,binCenter,a*scaleFactor);
530 SetPointError(index,dx*xErrorFrac,dx*xErrorFrac,(a-ym)*scaleFactor,(yp-a)*scaleFactor);
557 SetPoint(index,binCenter,a*scaleFactor);
558 SetPointError(index,dx*xErrorFrac,dx*xErrorFrac,(a-ym)*scaleFactor,(yp-a)*scaleFactor);
586 for (i=0 ; i<
GetN() ; i++) {
589 #if ROOT_VERSION_CODE >= ROOT_VERSION(4,0,1) 597 if (
fabs(x1-x2)>1
e-10) {
616 TH1F h_self(
"h_self",
"h_self",
GetN(),0,1) ;
617 TH1F h_other(
"h_other",
"h_other",
GetN(),0,1) ;
628 cout <<
"RooHist::isIdentical() tolerance exceeded M=" << M <<
" (tol=" << tol <<
"), corresponding prob = " << kprob << endl ;
647 os << indent <<
"--- RooHist ---" << endl;
649 os << indent <<
" Contains " << n <<
" bins" << endl;
651 os << indent <<
" Errors calculated at" <<
_nSigma <<
"-sigma CL" << endl;
652 os << indent <<
" Bin Contents:" << endl;
653 for(
Int_t i= 0; i <
n; i++) {
654 os << indent << setw(3) << i <<
") x= " <<
fX[i];
658 os <<
" , y = " <<
fY[i] <<
" +" <<
fEYhigh[i] <<
" -" <<
fEYlow[i] << endl;
690 os << IsA()->GetName() ;
715 #if ROOT_VERSION_CODE >= ROOT_VERSION(4,0,1) 726 #if ROOT_VERSION_CODE >= ROOT_VERSION(4,0,1) 733 if (x<xstart || x>xstop) continue ;
743 yy = point - curve.
average(x-exl,x+exh) ;
753 coutW(
Plotting) <<
"RooHist::makeResisHist(" <<
GetName() <<
") WARNING: point " << i <<
" has zero error, setting residual to zero" << endl ;
virtual const char * GetName() const
Returns name of object.
Double_t getNominalBinWidth() const
static long int sum(long int i)
Double_t * fX
[fNpoints] array of X points
virtual void printTitle(std::ostream &os) const
Print title of RooHist.
virtual Double_t GetBinCenter(Int_t bin) const
Return bin center for 1D histogram.
A RooCurve is a one-dimensional graphical representation of a real-valued function.
Double_t GetErrorY(Int_t bin) const
This function is called by GraphFitChisquare.
Double_t GetErrorX(Int_t bin) const
This function is called by GraphFitChisquare.
Double_t GetErrorYlow(Int_t i) const
Get low error on Y.
Double_t * fEXhigh
[fNpoints] array of X high errors
Double_t _nominalBinWidth
virtual Double_t GetBinContent(Int_t bin) const
Return content of bin number bin.
Double_t GetErrorYhigh(Int_t i) const
Get high error on Y.
virtual void printMultiline(std::ostream &os, Int_t contents, Bool_t verbose=kFALSE, TString indent="") const
Print detailed information.
1-D histogram with a float per channel (see TH1 documentation)}
virtual void SetTitle(const char *title="")
Set graph title.
static void AddDirectory(Bool_t add=kTRUE)
Sets the flag controlling the automatic add of histograms in memory.
void addAsymmetryBinWithError(Axis_t binCenter, Double_t n1, Double_t n2, Double_t en1, Double_t en2, Double_t binWidth=0, Double_t xErrorFrac=1.0, Double_t scaleFactor=1.0)
Add a bin to this histogram with the value (n1-n2)/(n1+n2) using an error bar calculated with Binomia...
Double_t GetErrorXhigh(Int_t i) const
Get high error on X.
TGraph with asymmetric error bars.
Int_t roundBin(Double_t y)
Return the nearest positive integer to the input value and print a warning if an adjustment is requir...
static const double x2[5]
A RooHist is a graphical representation of binned data based on the TGraphAsymmErrors class...
void addEfficiencyBinWithError(Axis_t binCenter, Double_t n1, Double_t n2, Double_t en1, Double_t en2, Double_t binWidth=0, Double_t xErrorFrac=1.0, Double_t scaleFactor=1.0)
Add a bin to this histogram with the value n1/(n1+n2) using an error bar calculated with Binomial sta...
virtual void SetName(const char *name="")
Set graph name.
double pow(double, double)
void addAsymmetryBin(Axis_t binCenter, Int_t n1, Int_t n2, Double_t binWidth=0, Double_t xErrorFrac=1.0, Double_t scaleFactor=1.0)
Add a bin to this histogram with the value (n1-n2)/(n1+n2) using an error bar calculated with Binomia...
Double_t getFitRangeBinW() const
Return (average) bin width of this RooHist.
void initialize()
Perform common initialization for all constructors.
RooHist()
Default constructor.
virtual Double_t KolmogorovTest(const TH1 *h2, Option_t *option="") const
Statistical test of compatibility in shape between this histogram and h2, using Kolmogorov test...
VecExpr< UnaryOp< Fabs< T >, VecExpr< A, T, D >, T >, T, D > fabs(const VecExpr< A, T, D > &rhs)
virtual Int_t GetPoint(Int_t i, Double_t &x, Double_t &y) const
Get x and y values for point number i.
const char * GetTitle() const
Returns title of object.
Class to manage histogram axis.
RooHist * makeResidHist(const RooCurve &curve, bool normalize=false, bool useAverage=false) const
Create and return RooHist containing residuals w.r.t to given curve.
virtual void SetBinContent(Int_t bin, Double_t content)
Set bin content see convention for numbering bins in TH1::GetBin In case the bin number is greater th...
Double_t interpolate(Double_t x, Double_t tolerance=1e-10) const
Return linearly interpolated value of curve at xvalue.
Double_t getFitRangeNEvt() const
Return the number of events of the dataset associated with this RooHist.
char * Form(const char *fmt,...)
void updateYAxisLimits(Double_t y)
static const RooHistError & instance()
Return a reference to a singleton object that is created the first time this method is called...
Double_t * fEYlow
[fNpoints] array of Y low errors
void addBin(Axis_t binCenter, Double_t n, Double_t binWidth=0, Double_t xErrorFrac=1.0, Double_t scaleFactor=1.0)
Add a bin to this histogram with the specified integer bin contents and using an error bar calculated...
Bool_t hasIdenticalBinning(const RooHist &other) const
Return kTRUE if binning of this RooHist is identical to that of 'other'.
virtual void SetMarkerStyle(Style_t mstyle=1)
Set the marker style.
const char * getYAxisLabel() const
Double_t GetErrorXlow(Int_t i) const
Get low error on X.
virtual Double_t GetBinWidth(Int_t bin) const
Return bin width for 1D histogram.
static const double x1[5]
virtual void printName(std::ostream &os) const
Print name of RooHist.
you should not use this method at all Int_t Int_t Double_t Double_t Double_t e
Bool_t isIdentical(const RooHist &other, Double_t tol=1e-6) const
Return kTRUE if contents of this RooHist is identical within given relative tolerance to that of 'oth...
virtual ~RooHist()
Destructor.
void addBinWithError(Axis_t binCenter, Double_t n, Double_t elow, Double_t ehigh, Double_t binWidth=0, Double_t xErrorFrac=1.0, Bool_t correctForBinWidth=kTRUE, Double_t scaleFactor=1.0)
Add a bin to this histogram with the specified bin contents and error.
virtual void printClassName(std::ostream &os) const
Print class name of RooHist.
virtual void SetPoint(Int_t i, Double_t x, Double_t y)
Set x and y values for point number i.
Double_t * fY
[fNpoints] array of Y points
Double_t average(Double_t lo, Double_t hi) const
Return average curve value in [xFirst,xLast] by integrating curve between points and dividing by xLas...
void addBinWithXYError(Axis_t binCenter, Double_t n, Double_t exlow, Double_t exhigh, Double_t eylow, Double_t eyhigh, Double_t scaleFactor=1.0)
Add a bin to this histogram with the specified bin contents and error.
void setYAxisLabel(const char *label)
virtual Int_t GetNbinsX() const
virtual void printMultiline(std::ostream &os, Int_t content, Bool_t verbose=kFALSE, TString indent="") const
Print info about this histogram to the specified output stream.
void addEfficiencyBin(Axis_t binCenter, Int_t n1, Int_t n2, Double_t binWidth=0, Double_t xErrorFrac=1.0, Double_t scaleFactor=1.0)
Add a bin to this histogram with the value n1/(n1+n2) using an error bar calculated with Binomial sta...
Double_t * fEXlow
[fNpoints] array of X low errors
Double_t * fEYhigh
[fNpoints] array of Y high errors
virtual const char * GetTitle() const
Returns title of object.
virtual Double_t GetBinError(Int_t bin) const
Return value of error associated to bin number bin.
virtual void SetPointError(Double_t exl, Double_t exh, Double_t eyl, Double_t eyh)
Set ex and ey values for point pointed by the mouse.