97 const TAxis *axis= ((
TH1&)data).GetXaxis();
104 for(
Int_t bin= 1; bin <= nbin; bin++) {
144 const TAxis *axis= ((
TH1&)data1).GetXaxis();
158 coutE(
InputArguments) <<
"RooHist::RooHist: histograms have different number of bins" << endl;
161 for(
Int_t bin= 1; bin <= nbin; bin++) {
164 coutW(
InputArguments) <<
"RooHist::RooHist: histograms have different centers for bin " << bin << endl;
221 coutE(
InputArguments) <<
"RooHist::RooHist input histograms have incompatible binning, combined histogram will remain empty" << endl ;
229 if (wgt1!=1.0 || wgt2 != 1.0) {
230 coutW(
InputArguments) <<
"RooHist::RooHist: WARNING: Poisson errors of weighted sum of two histograms is not well defined! " << endl
231 <<
" Summed histogram bins will rounded to nearest integer for Poisson confidence interval calculation" << endl ;
236 for(i=0 ; i<
n ; i++) {
238 #if ROOT_VERSION_CODE >= ROOT_VERSION(4,0,1) 244 #if ROOT_VERSION_CODE >= ROOT_VERSION(4,0,1) 249 addBin(x1,
roundBin(wgt1*y1+wgt2*y2),2*dx1/xErrorFrac,xErrorFrac) ;
257 for(i=0 ; i<
n ; i++) {
259 #if ROOT_VERSION_CODE >= ROOT_VERSION(4,0,1) 267 #if ROOT_VERSION_CODE >= ROOT_VERSION(4,0,1) 272 Double_t dy =
sqrt(wgt1*wgt1*dy1*dy1+wgt2*wgt2*dy2*dy2) ;
273 addBinWithError(x1,wgt1*y1+wgt2*y2,dy,dy,2*dx1/xErrorFrac,xErrorFrac) ;
307 for (
int i=0 ; i<
GetN() ; i++) {
310 #if ROOT_VERSION_CODE >= ROOT_VERSION(4,0,1) 316 if (x>=xlo && x<=xhi) {
322 coutW(
Plotting) <<
"RooHist::getFitRangeNEvt() WARNING: Number of normalization events associated to histogram is not equal to number of events in histogram" << endl
323 <<
" due cut made in RooAbsData::plotOn() call. Automatic normalization over sub-range of plot variable assumes" << endl
324 <<
" that the effect of that cut is uniform across the plot, which may be an incorrect assumption. To be sure of" << endl
325 <<
" correct normalization explicit pass normalization information to RooAbsPdf::plotOn() call using Normalization()" << endl ;
351 coutW(
Plotting) <<
fName <<
"::roundBin: rounding negative bin contents to zero: " << y << endl;
356 coutW(
Plotting) <<
fName <<
"::roundBin: rounding non-integer bin contents: " << y << endl;
371 coutW(
Plotting) <<
"RooHist::addBin(" <<
GetName() <<
") WARNING: negative entry set to zero when Poisson error bars are requested" << endl ;
386 Double_t ym1(0),yp1(0),ym2(0),yp2(0) ;
391 coutE(
Plotting) <<
"RooHist::addBin: unable to add bin with " << n <<
" events" << endl;
393 ym = ym1 + (n-n1)*(ym2-ym1) ;
394 yp = yp1 + (n-n1)*(yp2-yp1) ;
396 <<
") WARNING: non-integer bin entry " << n <<
" with Poisson errors, interpolating between Poisson errors of adjacent integer" << endl ;
400 coutE(
Plotting) <<
"RooHist::addBin: unable to add bin with " << n <<
" events" << endl;
405 SetPoint(index,binCenter,n*scale*scaleFactor);
406 SetPointError(index,dx*xErrorFrac,dx*xErrorFrac,scale*(n-ym)*scaleFactor,scale*(yp-n)*scaleFactor);
422 if(binWidth > 0 && correctForBinWidth) {
429 SetPoint(index,binCenter,n*scale*scaleFactor);
430 SetPointError(index,dx*xErrorFrac,dx*xErrorFrac,elow*scale*scaleFactor,ehigh*scale*scaleFactor);
449 SetPoint(index,binCenter,n*scaleFactor);
450 SetPointError(index,exlow,exhigh,eylow*scaleFactor,eyhigh*scaleFactor);
472 coutE(
Plotting) <<
"RooHist::addAsymmetryBin: unable to calculate binomial error for bin with " << n1 <<
"," << n2 <<
" events" << endl;
477 SetPoint(index,binCenter,a*scaleFactor);
478 SetPointError(index,dx*xErrorFrac,dx*xErrorFrac,(a-ym)*scaleFactor,(yp-a)*scaleFactor);
503 SetPoint(index,binCenter,a*scaleFactor);
504 SetPointError(index,dx*xErrorFrac,dx*xErrorFrac,(a-ym)*scaleFactor,(yp-a)*scaleFactor);
526 coutE(
Plotting) <<
"RooHist::addEfficiencyBin: unable to calculate binomial error for bin with " << n1 <<
"," << n2 <<
" events" << endl;
530 SetPoint(index,binCenter,a*scaleFactor);
531 SetPointError(index,dx*xErrorFrac,dx*xErrorFrac,(a-ym)*scaleFactor,(yp-a)*scaleFactor);
558 SetPoint(index,binCenter,a*scaleFactor);
559 SetPointError(index,dx*xErrorFrac,dx*xErrorFrac,(a-ym)*scaleFactor,(yp-a)*scaleFactor);
587 for (i=0 ; i<
GetN() ; i++) {
590 #if ROOT_VERSION_CODE >= ROOT_VERSION(4,0,1) 598 if (
fabs(x1-x2)>1
e-10) {
617 TH1F h_self(
"h_self",
"h_self",
GetN(),0,1) ;
618 TH1F h_other(
"h_other",
"h_other",
GetN(),0,1) ;
629 cout <<
"RooHist::isIdentical() tolerance exceeded M=" << M <<
" (tol=" << tol <<
"), corresponding prob = " << kprob << endl ;
648 os << indent <<
"--- RooHist ---" << endl;
650 os << indent <<
" Contains " << n <<
" bins" << endl;
652 os << indent <<
" Errors calculated at" <<
_nSigma <<
"-sigma CL" << endl;
653 os << indent <<
" Bin Contents:" << endl;
654 for(
Int_t i= 0; i <
n; i++) {
655 os << indent << setw(3) << i <<
") x= " <<
fX[i];
659 os <<
" , y = " <<
fY[i] <<
" +" <<
fEYhigh[i] <<
" -" <<
fEYlow[i] << endl;
691 os << IsA()->GetName() ;
716 #if ROOT_VERSION_CODE >= ROOT_VERSION(4,0,1) 727 #if ROOT_VERSION_CODE >= ROOT_VERSION(4,0,1) 734 if (x<xstart || x>xstop) continue ;
744 yy = point - curve.
average(x-exl,x+exh) ;
754 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
virtual void SetName(const char *name)
Set the name of the TNamed.
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.
tomato 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...
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 norm(double *x, double *p)
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.