ROOT logo
// @(#)root/hist:$Id: TGraphAsymmErrors.cxx 30393 2009-09-24 08:45:21Z couet $
// Author: Rene Brun   03/03/99

/*************************************************************************
 * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

#include <string.h>

#include "Riostream.h"
#include "TROOT.h"
#include "TGraphAsymmErrors.h"
#include "TStyle.h"
#include "TMath.h"
#include "TArrow.h"
#include "TBox.h"
#include "TVirtualPad.h"
#include "TF1.h"
#include "TH1.h"
#include "TVector.h"
#include "TVectorD.h"
#include "TClass.h"

ClassImp(TGraphAsymmErrors)

namespace {
   unsigned long GLOBAL_k;   // used to pass k[i] into equations
   unsigned long GLOBAL_N;   // used to pass N[i] into equations
   double        CONFLEVEL;  // confidence level for the interval
}


//______________________________________________________________________________
/* Begin_Html
<center><h2>TGraphAsymmErrors class</h2></center>
A TGraphAsymmErrors is a TGraph with assymetric error bars.
<p>
The TGraphAsymmErrors painting is permofed thanks to the
<a href="http://root.cern.ch/root/html/TGraphPainter.html">TGraphPainter</a>
class. All details about the various painting options are given in
<a href="http://root.cern.ch/root/html/TGraphPainter.html">this class</a>.
<p>
The picture below gives an example:
End_Html
Begin_Macro(source)
{
   c1 = new TCanvas("c1","A Simple Graph with assymetric error bars",200,10,700,500);
   c1->SetFillColor(42);
   c1->SetGrid();
   c1->GetFrame()->SetFillColor(21);
   c1->GetFrame()->SetBorderSize(12);
   Int_t n = 10;
   Double_t x[n]   = {-0.22, 0.05, 0.25, 0.35, 0.5, 0.61,0.7,0.85,0.89,0.95};
   Double_t y[n]   = {1,2.9,5.6,7.4,9,9.6,8.7,6.3,4.5,1};
   Double_t exl[n] = {.05,.1,.07,.07,.04,.05,.06,.07,.08,.05};
   Double_t eyl[n] = {.8,.7,.6,.5,.4,.4,.5,.6,.7,.8};
   Double_t exh[n] = {.02,.08,.05,.05,.03,.03,.04,.05,.06,.03};
   Double_t eyh[n] = {.6,.5,.4,.3,.2,.2,.3,.4,.5,.6};
   gr = new TGraphAsymmErrors(n,x,y,exl,exh,eyl,eyh);
   gr->SetTitle("TGraphAsymmErrors Example");
   gr->SetMarkerColor(4);
   gr->SetMarkerStyle(21);
   gr->Draw("ALP");
   return c1;
}
End_Macro */


//______________________________________________________________________________
TGraphAsymmErrors::TGraphAsymmErrors(): TGraph()
{
   // TGraphAsymmErrors default constructor.

   fEXlow       = 0;
   fEYlow       = 0;
   fEXhigh      = 0;
   fEYhigh      = 0;
}


//______________________________________________________________________________
TGraphAsymmErrors::TGraphAsymmErrors(const TGraphAsymmErrors &gr)
       : TGraph(gr)
{
   // TGraphAsymmErrors copy constructor

   if (!CtorAllocate()) return;
   Int_t n = fNpoints*sizeof(Double_t);
   memcpy(fEXlow, gr.fEXlow, n);
   memcpy(fEYlow, gr.fEYlow, n);
   memcpy(fEXhigh, gr.fEXhigh, n);
   memcpy(fEYhigh, gr.fEYhigh, n);
}


//______________________________________________________________________________
TGraphAsymmErrors& TGraphAsymmErrors::operator=(const TGraphAsymmErrors &gr)
{
   // TGraphAsymmErrors assignment operator

   if(this!=&gr) {
      TGraph::operator=(gr);
      if (!CtorAllocate()) return *this;
      Int_t n = fNpoints*sizeof(Double_t);
      memcpy(fEXlow, gr.fEXlow, n);
      memcpy(fEYlow, gr.fEYlow, n);
      memcpy(fEXhigh, gr.fEXhigh, n);
      memcpy(fEYhigh, gr.fEYhigh, n);
   }
   return *this;
}


//______________________________________________________________________________
TGraphAsymmErrors::TGraphAsymmErrors(Int_t n)
       : TGraph(n)
{
   // TGraphAsymmErrors normal constructor.
   //
   // the arrays are preset to zero

   if (!CtorAllocate()) return;
   FillZero(0, fNpoints);
}


//______________________________________________________________________________
TGraphAsymmErrors::TGraphAsymmErrors(Int_t n, const Float_t *x, const Float_t *y, const Float_t *exl, const Float_t *exh, const Float_t *eyl, const Float_t *eyh)
       : TGraph(n,x,y)
{
   // TGraphAsymmErrors normal constructor.
   //
   // if exl,h or eyl,h are null, the corresponding arrays are preset to zero

   if (!CtorAllocate()) return;

   for (Int_t i=0;i<n;i++) {
      if (exl) fEXlow[i]  = exl[i];
      else     fEXlow[i]  = 0;
      if (exh) fEXhigh[i] = exh[i];
      else     fEXhigh[i] = 0;
      if (eyl) fEYlow[i]  = eyl[i];
      else     fEYlow[i]  = 0;
      if (eyh) fEYhigh[i] = eyh[i];
      else     fEYhigh[i] = 0;
   }
}


//______________________________________________________________________________
TGraphAsymmErrors::TGraphAsymmErrors(Int_t n, const Double_t *x, const Double_t *y, const Double_t *exl, const Double_t *exh, const Double_t *eyl, const Double_t *eyh)
       : TGraph(n,x,y)
{
   // TGraphAsymmErrors normal constructor.
   //
   // if exl,h or eyl,h are null, the corresponding arrays are preset to zero

   if (!CtorAllocate()) return;

   n = fNpoints*sizeof(Double_t);
   if(exl) { memcpy(fEXlow, exl, n);
   } else { memset(fEXlow, 0, n); }
   if(exh) { memcpy(fEXhigh, exh, n);
   } else { memset(fEXhigh, 0, n); }
   if(eyl) { memcpy(fEYlow, eyl, n);
   } else { memset(fEYlow, 0, n); }
   if(eyh) { memcpy(fEYhigh, eyh, n);
   } else { memset(fEYhigh, 0, n); }
}


//______________________________________________________________________________
TGraphAsymmErrors::TGraphAsymmErrors(const TVectorF  &vx, const TVectorF  &vy, const TVectorF  &vexl, const TVectorF  &vexh, const TVectorF  &veyl, const TVectorF  &veyh)
                  :TGraph()
{
   // Constructor with six vectors of floats in input
   // A grapherrors is built with the X coordinates taken from vx and Y coord from vy
   // and the errors from vectors vexl/h and veyl/h.
   // The number of points in the graph is the minimum of number of points
   // in vx and vy.

   fNpoints = TMath::Min(vx.GetNrows(), vy.GetNrows());
   if (!TGraph::CtorAllocate()) return;
   if (!CtorAllocate()) return;
   Int_t ivxlow  = vx.GetLwb();
   Int_t ivylow  = vy.GetLwb();
   Int_t ivexllow = vexl.GetLwb();
   Int_t ivexhlow = vexh.GetLwb();
   Int_t iveyllow = veyl.GetLwb();
   Int_t iveyhlow = veyh.GetLwb();
      for (Int_t i=0;i<fNpoints;i++) {
      fX[i]      = vx(i+ivxlow);
      fY[i]      = vy(i+ivylow);
      fEXlow[i]  = vexl(i+ivexllow);
      fEYlow[i]  = veyl(i+iveyllow);
      fEXhigh[i] = vexh(i+ivexhlow);
      fEYhigh[i] = veyh(i+iveyhlow);
   }
}


//______________________________________________________________________________
TGraphAsymmErrors::TGraphAsymmErrors(const TVectorD &vx, const TVectorD &vy, const TVectorD &vexl, const TVectorD &vexh, const TVectorD &veyl, const TVectorD &veyh)
                  :TGraph()
{
   // Constructor with six vectors of doubles in input
   // A grapherrors is built with the X coordinates taken from vx and Y coord from vy
   // and the errors from vectors vexl/h and veyl/h.
   // The number of points in the graph is the minimum of number of points
   // in vx and vy.

   fNpoints = TMath::Min(vx.GetNrows(), vy.GetNrows());
   if (!TGraph::CtorAllocate()) return;
   if (!CtorAllocate()) return;
   Int_t ivxlow  = vx.GetLwb();
   Int_t ivylow  = vy.GetLwb();
   Int_t ivexllow = vexl.GetLwb();
   Int_t ivexhlow = vexh.GetLwb();
   Int_t iveyllow = veyl.GetLwb();
   Int_t iveyhlow = veyh.GetLwb();
      for (Int_t i=0;i<fNpoints;i++) {
      fX[i]      = vx(i+ivxlow);
      fY[i]      = vy(i+ivylow);
      fEXlow[i]  = vexl(i+ivexllow);
      fEYlow[i]  = veyl(i+iveyllow);
      fEXhigh[i] = vexh(i+ivexhlow);
      fEYhigh[i] = veyh(i+iveyhlow);
   }
}


//______________________________________________________________________________
TGraphAsymmErrors::TGraphAsymmErrors(const TH1 *h)
       : TGraph(h)
{
   // TGraphAsymmErrors constructor importing its parameters from the TH1 object passed as argument
   // the low and high errors are set to the bin error of the histogram.

   if (!CtorAllocate()) return;

   for (Int_t i=0;i<fNpoints;i++) {
      fEXlow[i]  = h->GetBinWidth(i+1)*gStyle->GetErrorX();
      fEXhigh[i] = fEXlow[i];
      fEYlow[i]  = h->GetBinError(i+1);
      fEYhigh[i] = fEYlow[i];
   }
}


//______________________________________________________________________________
TGraphAsymmErrors::TGraphAsymmErrors(const TH1 *pass, const TH1 *total, Option_t *option)
       : TGraph()
{
   // Creates a TGraphAsymmErrors by dividing two input TH1 histograms:
   // pass/total. (see TGraphAsymmErrors::BayesDivide)

   CtorAllocate();
   BayesDivide(pass, total, option);
}


//______________________________________________________________________________
TGraphAsymmErrors::~TGraphAsymmErrors()
{
   // TGraphAsymmErrors default destructor.

   delete [] fEXlow;
   delete [] fEXhigh;
   delete [] fEYlow;
   delete [] fEYhigh;
}


//______________________________________________________________________________
void TGraphAsymmErrors::Apply(TF1 *f)
{
   // apply a function to all data points
   // y = f(x,y)
   //
   // Errors are calculated as eyh = f(x,y+eyh)-f(x,y) and
   // eyl = f(x,y)-f(x,y-eyl)
   //
   // Special treatment has to be applied for the functions where the
   // role of "up" and "down" is reversed.
   // function suggested/implemented by Miroslav Helbich <helbich@mail.desy.de>

   Double_t x,y,exl,exh,eyl,eyh,eyl_new,eyh_new,fxy;

   for (Int_t i=0;i<GetN();i++) {
      GetPoint(i,x,y);
      exl=GetErrorXlow(i);
      exh=GetErrorXhigh(i);
      eyl=GetErrorYlow(i);
      eyh=GetErrorYhigh(i);

      fxy = f->Eval(x,y);
      SetPoint(i,x,fxy);

      // in the case of the functions like y-> -1*y the roles of the
      // upper and lower error bars is reversed
      if (f->Eval(x,y-eyl)<f->Eval(x,y+eyh)) {
         eyl_new = TMath::Abs(fxy - f->Eval(x,y-eyl));
         eyh_new = TMath::Abs(f->Eval(x,y+eyh) - fxy);
      }
      else {
         eyh_new = TMath::Abs(fxy - f->Eval(x,y-eyl));
         eyl_new = TMath::Abs(f->Eval(x,y+eyh) - fxy);
      }

      //error on x doesn't change
      SetPointError(i,exl,exh,eyl_new,eyh_new);
   }
}


//______________________________________________________________________________
void TGraphAsymmErrors::BayesDivide(const TH1 *pass, const TH1 *total, Option_t *option)
{
   // Fills this TGraphAsymmErrors by dividing two input TH1 histograms pass/total.
   //
   // Andy Haas (haas@fnal.gov)
   // University of Washington
   //
   // Method and code directly taken from:
   // Marc Paterno (paterno@fnal.gov)
   // FNAL/CD
   //
   // The input histograms must be filled with weights of 1.
   // By default the function does not check this assertion.
   // if option "w" is specified, the function will fail if the histograms
   // have been filled with weights not equal to 1.
   //
   // The assumption is that the entries in "pass" are a
   // subset of those in "total". That is, we create an "efficiency"
   // graph, where each entry is between 0 and 1, inclusive.
   // The resulting graph can be fit to functions, using standard methods:
   // graph->Fit("erf")... for instance. (You have to define the erf
   // function for yourself for now, sorry.)
   //
   // The points are assigned an x value at the center of each histogram bin.
   // The y values are #pass/#total, between 0 and 1.
   // The x errors span each histogram bin (lowedge->lowedge+width)
   // The y errors are the fun part. :)
   //
   // The y errors are assigned based on applying Bayes theorem.
   // The model is the Binomial distribution, and the "prior" is
   // the flat distribution from 0 to 1.
   // If there is no data in a bin of the total histogram, no information
   // can be obtained for that bin, so no point is made on the graph.
   //
   // The complete method and a beautiful discussion can be found here:
   // http://home.fnal.gov/~paterno/images/effic.pdf
   // And more information is on these pages:
   // http://home.fnal.gov/~paterno/probability/localresources.html
   // A backup of the main document is here:
   // http://www-clued0.fnal.gov/~haas/documents/paterno_effic.pdf
   //
   // A 68.3% Confidence Level is used to assign the errors.
   // Warning! You should understand, the errors reported are the shortest
   // ranges containing 68.3% of the probability distrubution. The errors are
   // not exactly Gaussian! The Minuit fitting routines will assume that
   // the errors are Gaussian. But this is a reasonable approximation.
   // A fit using the full shape of the error distribution for each point
   // would be far more difficult to perform.

   TString opt = option; opt.ToLower();

   Int_t nbins = pass->GetNbinsX();
   if (nbins != total->GetNbinsX()){
      Error("BayesDivide","Histograms must have the same number of X bins");
      return;
   }

   if (opt.Contains("w")) {
      //compare sum of weights with sum of squares of weights
      Double_t stats[10];
      pass->GetStats(stats);
      if (TMath::Abs(stats[0] -stats[1]) > 1e-6) {
      Error("BayesDivide","Pass histogram has not been filled with weights = 1");
      return;
      }
      total->GetStats(stats);
      if (TMath::Abs(stats[0] -stats[1]) > 1e-6) {
      Error("BayesDivide","Total histogram has not been filled with weights = 1");
      return;
      }
   }

   //Set the graph to have a number of points equal to the number of histogram bins
   Set(nbins);

   // Ok, now set the points for each bin
   // (Note: the TH1 bin content is shifted to the right by one:
   //  bin=0 is underflow, bin=nbins+1 is overflow.)

   double mode, low, high; //these will hold the result of the Bayes calculation
   int npoint=0;//this keeps track of the number of points added to the graph
   for (int b=1; b<=nbins; ++b) { // loop through the bins

      int t = (int)total->GetBinContent(b);
      if (!t) continue;  //don't add points for bins with no information

      int p = (int)pass->GetBinContent(b);
      if (p>t) {
         Warning("BayesDivide","Histogram bin %d in pass has more entries than corresponding bin in total! (%d>%d)",b,p,t);
         continue; //we may as well go on...
      }

      //This is the Bayes calculation...
      Efficiency(p,t,0.683,mode,low,high);

      // exclude the poits where result is less < 0
      if (mode < 0) continue;
      //These are the low and high error bars
      low = mode-low;
      high = high-mode;

      //If either of the errors are 0, set them to 1/10 of the other error
      //so that the fitters don't get confused.
      // LM: what is this ??? The scope of this routine is to have lower error zero for eff = 0
      // and uppper error zero for eff=1
      // remove this code
      //if (low==0.0) low=high/10.;
      //if (high==0.0) high=low/10.;
      //if (high+mode > 1) high = 1-mode;

      //Set the point center and its errors
      SetPoint(npoint,pass->GetBinCenter(b),mode);
      SetPointError(npoint,
      pass->GetBinCenter(b)-pass->GetBinLowEdge(b),
      pass->GetBinLowEdge(b)-pass->GetBinCenter(b)+pass->GetBinWidth(b),
      low,high);
      npoint++;//we have added a point to the graph

   }

   Set(npoint);//tell the graph how many points we've really added

   if (opt.Contains("debug")) {
      printf("BayesDivide: made a graph with %d points from %d bins\n",npoint,nbins);
      Print();//The debug prints out what we get for each point
   }

}


//______________________________________________________________________________
double TGraphAsymmErrors::Beta_ab(double a, double b, int k, int N) const
{
   // Calculates the fraction of the area under the
   // curve x^k*(1-x)^(N-k) between x=a and x=b

   if (a == b) return 0;    // don't bother integrating over zero range
   int c1 = k+1;
   int c2 = N-k+1;
   return Ibetai(c1,c2,b)-Ibetai(c1,c2,a);
}


//______________________________________________________________________________
double TGraphAsymmErrors::Ibetai(double a, double b, double x) const
{
   // Calculates the incomplete beta function  I_x(a,b); this is
   // the incomplete beta function divided by the complete beta function

   double bt;
   if (x < 0.0 || x > 1.0) {
      Error("Ibetai","Illegal x in routine Ibetai: x = %g",x);
      return 0;
   }
   if (x == 0.0 || x == 1.0)
      bt=0.0;
   else
      bt=TMath::Exp(TMath::LnGamma(a+b)-TMath::LnGamma(a)-TMath::LnGamma(b)+a*log(x)+b*log(1.0-x));

   if (x < (a+1.0)/(a+b+2.0))
      return bt*TMath::BetaCf(x,a,b)/a;
   else
      return 1.0-bt*TMath::BetaCf(1-x,b,a)/b;
}


//______________________________________________________________________________
double TGraphAsymmErrors::Betai(double a, double b, double x) const
{
   // Calculates the incomplete beta function B_x(a,b), as defined
   // in Gradshteyn and Ryzhik (4th edition) 8.391

   // calculates the complete beta function
   double beta = TMath::Exp(TMath::LnGamma(a)+TMath::LnGamma(b)-TMath::LnGamma(a+b));
   return Ibetai(a,b,x)*beta;
}


//______________________________________________________________________________
double TGraphAsymmErrors::Brent(double ax, double bx, double cx, double tol, double *xmin) const
{
   // Implementation file for the numerical equation solver library.
   // This includes root finding and minimum finding algorithms.
   // Adapted from Numerical Recipes in C, 2nd edition.
   // Translated to C++ by Marc Paterno

   const int    kITMAX = 100;
   const double kCGOLD = 0.3819660;
   const double kZEPS  = 1.0e-10;

   int iter;
   double a,b,d=0.,etemp,fu,fv,fw,fx,p,q,r,tol1,tol2,u,v,w,x,xm;
   double e=0.0;

   a=(ax < cx ? ax : cx);
   b=(ax > cx ? ax : cx);
   x=w=v=bx;
   fw=fv=fx=Interval(x);
   for (iter=1;iter<=kITMAX;iter++) {
      xm=0.5*(a+b);
      tol2=2.0*(tol1=tol*TMath::Abs(x)+kZEPS);
      if (TMath::Abs(x-xm) <= (tol2-0.5*(b-a))) {
         *xmin=x;
         return fx;
      }
      if (TMath::Abs(e) > tol1) {
         r=(x-w)*(fx-fv);
         q=(x-v)*(fx-fw);
         p=(x-v)*q-(x-w)*r;
         q=2.0*(q-r);
         if (q > 0.0) p = -p;
         q=TMath::Abs(q);
         etemp=e;
         e=d;
         if (TMath::Abs(p) >= TMath::Abs(0.5*q*etemp) || p <= q*(a-x) || p >= q*(b-x)) d=kCGOLD*(e=(x >= xm ? a-x : b-x));
         else {
            d=p/q;
            u=x+d;
            if (u-a < tol2 || b-u < tol2) d=TMath::Sign(tol1,xm-x);
         }
      } else {
         d=kCGOLD*(e=(x >= xm ? a-x : b-x));
      }
      u=(TMath::Abs(d) >= tol1 ? x+d : x+TMath::Sign(tol1,d));
      fu=Interval(u);
      if (fu <= fx) {
         if (u >= x) a=x; else b=x;
         v  = w;
         w  = x;
         x  = u;
         fv = fw;
         fw = fx;
         fx = fu;
      } else {
         if (u < x) a=u; else b=u;
         if (fu <= fw || w == x) {
            v=w;
            w=u;
            fv=fw;
            fw=fu;
         } else if (fu <= fv || v == x || v == w) {
            v=u;
            fv=fu;
         }
      }
   }
   Error("Brent","Too many interations");
   *xmin=x;
   return fx;
}


//______________________________________________________________________________
void TGraphAsymmErrors::ComputeRange(Double_t &xmin, Double_t &ymin, Double_t &xmax, Double_t &ymax) const
{
   // Compute Range

   TGraph::ComputeRange(xmin,ymin,xmax,ymax);

   for (Int_t i=0;i<fNpoints;i++) {
      if (fX[i] -fEXlow[i] < xmin) {
         if (gPad && gPad->GetLogx()) {
            if (fEXlow[i] < fX[i]) xmin = fX[i]-fEXlow[i];
            else                   xmin = TMath::Min(xmin,fX[i]/3);
         } else {
            xmin = fX[i]-fEXlow[i];
         }
      }
      if (fX[i] +fEXhigh[i] > xmax) xmax = fX[i]+fEXhigh[i];
      if (fY[i] -fEYlow[i] < ymin) {
         if (gPad && gPad->GetLogy()) {
            if (fEYlow[i] < fY[i]) ymin = fY[i]-fEYlow[i];
            else                   ymin = TMath::Min(ymin,fY[i]/3);
         } else {
            ymin = fY[i]-fEYlow[i];
         }
      }
      if (fY[i] +fEYhigh[i] > ymax) ymax = fY[i]+fEYhigh[i];
   }
}


//______________________________________________________________________________
void TGraphAsymmErrors::CopyAndRelease(Double_t **newarrays,
                                       Int_t ibegin, Int_t iend, Int_t obegin)
{
   // Copy and release.

   CopyPoints(newarrays, ibegin, iend, obegin);
   if (newarrays) {
      delete[] fEXlow;
      fEXlow = newarrays[0];
      delete[] fEXhigh;
      fEXhigh = newarrays[1];
      delete[] fEYlow;
      fEYlow = newarrays[2];
      delete[] fEYhigh;
      fEYhigh = newarrays[3];
      delete[] fX;
      fX = newarrays[4];
      delete[] fY;
      fY = newarrays[5];
      delete[] newarrays;
   }
}


//______________________________________________________________________________
Bool_t TGraphAsymmErrors::CopyPoints(Double_t **arrays,
                                     Int_t ibegin, Int_t iend, Int_t obegin)
{
   // Copy errors from fE*** to arrays[***]
   // or to f*** Copy points.

   if (TGraph::CopyPoints(arrays ? arrays+4 : 0, ibegin, iend, obegin)) {
      Int_t n = (iend - ibegin)*sizeof(Double_t);
      if (arrays) {
         memmove(&arrays[0][obegin], &fEXlow[ibegin], n);
         memmove(&arrays[1][obegin], &fEXhigh[ibegin], n);
         memmove(&arrays[2][obegin], &fEYlow[ibegin], n);
         memmove(&arrays[3][obegin], &fEYhigh[ibegin], n);
      } else {
         memmove(&fEXlow[obegin], &fEXlow[ibegin], n);
         memmove(&fEXhigh[obegin], &fEXhigh[ibegin], n);
         memmove(&fEYlow[obegin], &fEYlow[ibegin], n);
         memmove(&fEYhigh[obegin], &fEYhigh[ibegin], n);
      }
      return kTRUE;
   } else {
      return kFALSE;
   }
}


//______________________________________________________________________________
Bool_t TGraphAsymmErrors::CtorAllocate(void)
{
   // Should be called from ctors after fNpoints has been set

   if (!fNpoints) {
      fEXlow = fEYlow = fEXhigh = fEYhigh = 0;
      return kFALSE;
   }
   fEXlow = new Double_t[fMaxSize];
   fEYlow = new Double_t[fMaxSize];
   fEXhigh = new Double_t[fMaxSize];
   fEYhigh = new Double_t[fMaxSize];
   return kTRUE;
}


//______________________________________________________________________________
void TGraphAsymmErrors::Efficiency(int k, int N, double conflevel,
      double& mode, double& low, double& high) const
{
   // Calculate the shortest central confidence interval containing the required
   // probability content.
   // Interval(low) returns the length of the interval starting at low
   // that contains CONFLEVEL probability. We use Brent's method,
   // except in two special cases: when k=0, or when k=N
   // Main driver routine
   // Author: Marc Paterno

   //If there are no entries, then we know nothing, thus return the prior...
   if (0==N) {
      mode = .5; low = 0.0; high = 1.0;
      return;
   }

   // Calculate the most probable value for the posterior cross section.
   // This is easy, 'cause it is just k/N
   double efficiency = (double)k/N;

   double low_edge;
   double high_edge;

   if (k == 0) {
      low_edge = 0.0;
      high_edge = SearchUpper(low_edge, k, N, conflevel);
   } else if (k == N) {
      high_edge = 1.0;
      low_edge = SearchLower(high_edge, k, N, conflevel);
   } else {
      GLOBAL_k = k;
      GLOBAL_N = N;
      CONFLEVEL = conflevel;
      Brent(0.0, 0.5, 1.0, 1.0e-9, &low_edge);
      high_edge = low_edge + Interval(low_edge);
   }

   // return output
   mode = efficiency;
   low = low_edge;
   high = high_edge;
}


//______________________________________________________________________________
void TGraphAsymmErrors::FillZero(Int_t begin, Int_t end,
                                 Bool_t from_ctor)
{
   // Set zero values for point arrays in the range [begin, end)

   if (!from_ctor) {
      TGraph::FillZero(begin, end, from_ctor);
   }
   Int_t n = (end - begin)*sizeof(Double_t);
   memset(fEXlow + begin, 0, n);
   memset(fEXhigh + begin, 0, n);
   memset(fEYlow + begin, 0, n);
   memset(fEYhigh + begin, 0, n);
}


//______________________________________________________________________________
Double_t TGraphAsymmErrors::GetErrorX(Int_t i) const
{
   // This function is called by GraphFitChisquare.
   // It returns the error along X at point i.

   if (i < 0 || i >= fNpoints) return -1;
   if (!fEXlow && !fEXhigh) return -1;
   Double_t elow=0, ehigh=0;
   if (fEXlow)  elow  = fEXlow[i];
   if (fEXhigh) ehigh = fEXhigh[i];
   return TMath::Sqrt(0.5*(elow*elow + ehigh*ehigh));
}


//______________________________________________________________________________
Double_t TGraphAsymmErrors::GetErrorY(Int_t i) const
{
   // This function is called by GraphFitChisquare.
   // It returns the error along Y at point i.

   if (i < 0 || i >= fNpoints) return -1;
   if (!fEYlow && !fEYhigh) return -1;
   Double_t elow=0, ehigh=0;
   if (fEYlow)  elow  = fEYlow[i];
   if (fEYhigh) ehigh = fEYhigh[i];
   return TMath::Sqrt(0.5*(elow*elow + ehigh*ehigh));
}


//______________________________________________________________________________
Double_t TGraphAsymmErrors::GetErrorXhigh(Int_t i) const
{
   // Get high error on X.

   if (i<0 || i>fNpoints) return -1;
   if (fEXhigh) return fEXhigh[i];
   return -1;
}


//______________________________________________________________________________
Double_t TGraphAsymmErrors::GetErrorXlow(Int_t i) const
{
   // Get low error on X.

   if (i<0 || i>fNpoints) return -1;
   if (fEXlow) return fEXlow[i];
   return -1;
}


//______________________________________________________________________________
Double_t TGraphAsymmErrors::GetErrorYhigh(Int_t i) const
{
   // Get high error on Y.

   if (i<0 || i>fNpoints) return -1;
   if (fEYhigh) return fEYhigh[i];
   return -1;
}


//______________________________________________________________________________
Double_t TGraphAsymmErrors::GetErrorYlow(Int_t i) const
{
   // Get low error on Y.

   if (i<0 || i>fNpoints) return -1;
   if (fEYlow) return fEYlow[i];
   return -1;
}


//______________________________________________________________________________
double TGraphAsymmErrors::Interval(double low) const
{
   // Return the length of the interval starting at low
   // that contains CONFLEVEL of the x^GLOBAL_k*(1-x)^(GLOBAL_N-GLOBAL_k)
   // distribution.
   // If there is no sufficient interval starting at low, we return 2.0

   double high = SearchUpper(low, GLOBAL_k, GLOBAL_N, CONFLEVEL);
   if (high == -1.0) return 2.0; //  so that this won't be the shortest interval
   return (high - low);
}


//______________________________________________________________________________
void TGraphAsymmErrors::Print(Option_t *) const
{
   // Print graph and errors values.

   for (Int_t i=0;i<fNpoints;i++) {
      printf("x[%d]=%g, y[%d]=%g, exl[%d]=%g, exh[%d]=%g, eyl[%d]=%g, eyh[%d]=%g\n"
         ,i,fX[i],i,fY[i],i,fEXlow[i],i,fEXhigh[i],i,fEYlow[i],i,fEYhigh[i]);
   }
}


//______________________________________________________________________________
void TGraphAsymmErrors::SavePrimitive(ostream &out, Option_t *option /*= ""*/)
{
    // Save primitive as a C++ statement(s) on output stream out

   char quote = '"';
   out<<"   "<<endl;
   if (gROOT->ClassSaved(TGraphAsymmErrors::Class())) {
      out<<"   ";
   } else {
      out<<"   TGraphAsymmErrors *";
   }
   out<<"grae = new TGraphAsymmErrors("<<fNpoints<<");"<<endl;
   out<<"   grae->SetName("<<quote<<GetName()<<quote<<");"<<endl;
   out<<"   grae->SetTitle("<<quote<<GetTitle()<<quote<<");"<<endl;

   SaveFillAttributes(out,"grae",0,1001);
   SaveLineAttributes(out,"grae",1,1,1);
   SaveMarkerAttributes(out,"grae",1,1,1);

   for (Int_t i=0;i<fNpoints;i++) {
      out<<"   grae->SetPoint("<<i<<","<<fX[i]<<","<<fY[i]<<");"<<endl;
      out<<"   grae->SetPointError("<<i<<","<<fEXlow[i]<<","<<fEXhigh[i]<<","<<fEYlow[i]<<","<<fEYhigh[i]<<");"<<endl;
   }

   static Int_t frameNumber = 0;
   if (fHistogram) {
      frameNumber++;
      TString hname = fHistogram->GetName();
      hname += frameNumber;
      fHistogram->SetName(hname.Data());
      fHistogram->SavePrimitive(out,"nodraw");
      out<<"   grae->SetHistogram("<<fHistogram->GetName()<<");"<<endl;
      out<<"   "<<endl;
   }

   // save list of functions
   TIter next(fFunctions);
   TObject *obj;
   while ((obj=next())) {
      obj->SavePrimitive(out,"nodraw");
      if (obj->InheritsFrom("TPaveStats")) {
         out<<"   grae->GetListOfFunctions()->Add(ptstats);"<<endl;
         out<<"   ptstats->SetParent(grae->GetListOfFunctions());"<<endl;
      } else {
         out<<"   grae->GetListOfFunctions()->Add("<<obj->GetName()<<");"<<endl;
      }
   }

   const char *l = strstr(option,"multigraph");
   if (l) {
      out<<"   multigraph->Add(grae,"<<quote<<l+10<<quote<<");"<<endl;
   } else {
      out<<"   grae->Draw("<<quote<<option<<quote<<");"<<endl;
   }
}


//______________________________________________________________________________
double TGraphAsymmErrors::SearchLower(double high, int k, int N, double c) const
{
   // Integrates the binomial distribution with
   // parameters k,N, and determines what is the lower edge of the
   // integration region which ends at high, and which contains
   // probability content c. If a lower limit is found, the value is
   // returned. If no solution is found, the -1 is returned.
   // check to see if there is any solution by verifying that the integral down
   // to the minimum lower limit (0) is greater than c

   double integral = Beta_ab(0.0, high, k, N);
   if (integral == c) return 0.0;      // lucky -- this is the solution
   if (integral < c) return -1.0;      // no solution exists
   double too_low = 0.0;               // lower edge estimate
   double too_high = high;
   double test;

   // use a bracket-and-bisect search
   // LM: looping 20 times might be not enough to get an accurate precision.
   // see for example bug https://savannah.cern.ch/bugs/?30246
   // now break loop when difference is less than 1E-15
   // t.b.d: use directly the beta distribution quantile

   for (int loop=0; loop<50; loop++) {
      test = 0.5*(too_high + too_low);
      integral = Beta_ab(test, high, k, N);
      if (integral > c)  too_low = test;
      else too_high = test;
      if ( TMath::Abs(integral - c) <= 1.E-15) break;
   }
   return test;
}


//______________________________________________________________________________
double TGraphAsymmErrors::SearchUpper(double low, int k, int N, double c) const
{
   // Integrates the binomial distribution with
   // parameters k,N, and determines what is the upper edge of the
   // integration region which starts at low which contains probability
   // content c. If an upper limit is found, the value is returned. If no
   // solution is found, -1 is returned.
   // check to see if there is any solution by verifying that the integral up
   // to the maximum upper limit (1) is greater than c

   double integral = Beta_ab(low, 1.0, k, N);
   if (integral == c) return 1.0;    // lucky -- this is the solution
   if (integral < c) return -1.0;    // no solution exists
   double too_high = 1.0;            // upper edge estimate
   double too_low = low;
   double test;

   // use a bracket-and-bisect search
   // LM: looping 20 times might be not enough to get an accurate precision.
   // see for example bug https://savannah.cern.ch/bugs/?30246
   // now break loop when difference is less than 1E-15
   // t.b.d: use directly the beta distribution quantile

   for (int loop=0; loop<50; loop++) {
      test = 0.5*(too_low + too_high);
      integral = Beta_ab(low, test, k, N);
      if (integral > c)  too_high = test;
      else too_low = test;
      if ( TMath::Abs(integral - c) <= 1.E-15) break;
   }
   return test;
}


//______________________________________________________________________________
void TGraphAsymmErrors::SetPointError(Double_t exl, Double_t exh, Double_t eyl, Double_t eyh)
{
   // Set ex and ey values for point pointed by the mouse.

   Int_t px = gPad->GetEventX();
   Int_t py = gPad->GetEventY();

   //localize point to be deleted
   Int_t ipoint = -2;
   Int_t i;
   // start with a small window (in case the mouse is very close to one point)
   for (i=0;i<fNpoints;i++) {
      Int_t dpx = px - gPad->XtoAbsPixel(gPad->XtoPad(fX[i]));
      Int_t dpy = py - gPad->YtoAbsPixel(gPad->YtoPad(fY[i]));
      if (dpx*dpx+dpy*dpy < 25) {ipoint = i; break;}
   }
   if (ipoint == -2) return;

   fEXlow[ipoint]  = exl;
   fEYlow[ipoint]  = eyl;
   fEXhigh[ipoint] = exh;
   fEYhigh[ipoint] = eyh;
   gPad->Modified();
}


//______________________________________________________________________________
void TGraphAsymmErrors::SetPointError(Int_t i, Double_t exl, Double_t exh, Double_t eyl, Double_t eyh)
{
   // Set ex and ey values for point number i.

   if (i < 0) return;
   if (i >= fNpoints) {
   // re-allocate the object
      TGraphAsymmErrors::SetPoint(i,0,0);
   }
   fEXlow[i]  = exl;
   fEYlow[i]  = eyl;
   fEXhigh[i] = exh;
   fEYhigh[i] = eyh;
}


//______________________________________________________________________________
void TGraphAsymmErrors::SetPointEXlow(Int_t i, Double_t exl)
{
   // Set EXlow for point i

   if (i < 0) return;
   if (i >= fNpoints) {
   // re-allocate the object
      TGraphAsymmErrors::SetPoint(i,0,0);
   }
   fEXlow[i]  = exl;
}


//______________________________________________________________________________
void TGraphAsymmErrors::SetPointEXhigh(Int_t i, Double_t exh)
{
   // Set EXhigh for point i

   if (i < 0) return;
   if (i >= fNpoints) {
   // re-allocate the object
      TGraphAsymmErrors::SetPoint(i,0,0);
   }
   fEXhigh[i]  = exh;
}


//______________________________________________________________________________
void TGraphAsymmErrors::SetPointEYlow(Int_t i, Double_t eyl)
{
   // Set EYlow for point i

   if (i < 0) return;
   if (i >= fNpoints) {
   // re-allocate the object
      TGraphAsymmErrors::SetPoint(i,0,0);
   }
   fEYlow[i]  = eyl;
}


//______________________________________________________________________________
void TGraphAsymmErrors::SetPointEYhigh(Int_t i, Double_t eyh)
{
   // Set EYhigh for point i

   if (i < 0) return;
   if (i >= fNpoints) {
   // re-allocate the object
      TGraphAsymmErrors::SetPoint(i,0,0);
   }
   fEYhigh[i]  = eyh;
}


//______________________________________________________________________________
void TGraphAsymmErrors::Streamer(TBuffer &b)
{
   // Stream an object of class TGraphAsymmErrors.

   if (b.IsReading()) {
      UInt_t R__s, R__c;
      Version_t R__v = b.ReadVersion(&R__s, &R__c);
      if (R__v > 2) {
         b.ReadClassBuffer(TGraphAsymmErrors::Class(), this, R__v, R__s, R__c);
         return;
      }
      //====process old versions before automatic schema evolution
      TGraph::Streamer(b);
      fEXlow  = new Double_t[fNpoints];
      fEYlow  = new Double_t[fNpoints];
      fEXhigh = new Double_t[fNpoints];
      fEYhigh = new Double_t[fNpoints];
      if (R__v < 2) {
         Float_t *exlow  = new Float_t[fNpoints];
         Float_t *eylow  = new Float_t[fNpoints];
         Float_t *exhigh = new Float_t[fNpoints];
         Float_t *eyhigh = new Float_t[fNpoints];
         b.ReadFastArray(exlow,fNpoints);
         b.ReadFastArray(eylow,fNpoints);
         b.ReadFastArray(exhigh,fNpoints);
         b.ReadFastArray(eyhigh,fNpoints);
         for (Int_t i=0;i<fNpoints;i++) {
            fEXlow[i]  = exlow[i];
            fEYlow[i]  = eylow[i];
            fEXhigh[i] = exhigh[i];
            fEYhigh[i] = eyhigh[i];
         }
         delete [] eylow;
         delete [] exlow;
         delete [] eyhigh;
         delete [] exhigh;
      } else {
         b.ReadFastArray(fEXlow,fNpoints);
         b.ReadFastArray(fEYlow,fNpoints);
         b.ReadFastArray(fEXhigh,fNpoints);
         b.ReadFastArray(fEYhigh,fNpoints);
      }
      b.CheckByteCount(R__s, R__c, TGraphAsymmErrors::IsA());
      //====end of old versions

   } else {
      b.WriteClassBuffer(TGraphAsymmErrors::Class(),this);
   }
}


//______________________________________________________________________________
void TGraphAsymmErrors::SwapPoints(Int_t pos1, Int_t pos2)
{
   // Swap points.

   SwapValues(fEXlow,  pos1, pos2);
   SwapValues(fEXhigh, pos1, pos2);
   SwapValues(fEYlow,  pos1, pos2);
   SwapValues(fEYhigh, pos1, pos2);
   TGraph::SwapPoints(pos1, pos2);
}
 TGraphAsymmErrors.cxx:1
 TGraphAsymmErrors.cxx:2
 TGraphAsymmErrors.cxx:3
 TGraphAsymmErrors.cxx:4
 TGraphAsymmErrors.cxx:5
 TGraphAsymmErrors.cxx:6
 TGraphAsymmErrors.cxx:7
 TGraphAsymmErrors.cxx:8
 TGraphAsymmErrors.cxx:9
 TGraphAsymmErrors.cxx:10
 TGraphAsymmErrors.cxx:11
 TGraphAsymmErrors.cxx:12
 TGraphAsymmErrors.cxx:13
 TGraphAsymmErrors.cxx:14
 TGraphAsymmErrors.cxx:15
 TGraphAsymmErrors.cxx:16
 TGraphAsymmErrors.cxx:17
 TGraphAsymmErrors.cxx:18
 TGraphAsymmErrors.cxx:19
 TGraphAsymmErrors.cxx:20
 TGraphAsymmErrors.cxx:21
 TGraphAsymmErrors.cxx:22
 TGraphAsymmErrors.cxx:23
 TGraphAsymmErrors.cxx:24
 TGraphAsymmErrors.cxx:25
 TGraphAsymmErrors.cxx:26
 TGraphAsymmErrors.cxx:27
 TGraphAsymmErrors.cxx:28
 TGraphAsymmErrors.cxx:29
 TGraphAsymmErrors.cxx:30
 TGraphAsymmErrors.cxx:31
 TGraphAsymmErrors.cxx:32
 TGraphAsymmErrors.cxx:33
 TGraphAsymmErrors.cxx:34
 TGraphAsymmErrors.cxx:35
 TGraphAsymmErrors.cxx:36
 TGraphAsymmErrors.cxx:37
 TGraphAsymmErrors.cxx:38
 TGraphAsymmErrors.cxx:39
 TGraphAsymmErrors.cxx:40
 TGraphAsymmErrors.cxx:41
 TGraphAsymmErrors.cxx:42
 TGraphAsymmErrors.cxx:43
 TGraphAsymmErrors.cxx:44
 TGraphAsymmErrors.cxx:45
 TGraphAsymmErrors.cxx:46
 TGraphAsymmErrors.cxx:47
 TGraphAsymmErrors.cxx:48
 TGraphAsymmErrors.cxx:49
 TGraphAsymmErrors.cxx:50
 TGraphAsymmErrors.cxx:51
 TGraphAsymmErrors.cxx:52
 TGraphAsymmErrors.cxx:53
 TGraphAsymmErrors.cxx:54
 TGraphAsymmErrors.cxx:55
 TGraphAsymmErrors.cxx:56
 TGraphAsymmErrors.cxx:57
 TGraphAsymmErrors.cxx:58
 TGraphAsymmErrors.cxx:59
 TGraphAsymmErrors.cxx:60
 TGraphAsymmErrors.cxx:61
 TGraphAsymmErrors.cxx:62
 TGraphAsymmErrors.cxx:63
 TGraphAsymmErrors.cxx:64
 TGraphAsymmErrors.cxx:65
 TGraphAsymmErrors.cxx:66
 TGraphAsymmErrors.cxx:67
 TGraphAsymmErrors.cxx:68
 TGraphAsymmErrors.cxx:69
 TGraphAsymmErrors.cxx:70
 TGraphAsymmErrors.cxx:71
 TGraphAsymmErrors.cxx:72
 TGraphAsymmErrors.cxx:73
 TGraphAsymmErrors.cxx:74
 TGraphAsymmErrors.cxx:75
 TGraphAsymmErrors.cxx:76
 TGraphAsymmErrors.cxx:77
 TGraphAsymmErrors.cxx:78
 TGraphAsymmErrors.cxx:79
 TGraphAsymmErrors.cxx:80
 TGraphAsymmErrors.cxx:81
 TGraphAsymmErrors.cxx:82
 TGraphAsymmErrors.cxx:83
 TGraphAsymmErrors.cxx:84
 TGraphAsymmErrors.cxx:85
 TGraphAsymmErrors.cxx:86
 TGraphAsymmErrors.cxx:87
 TGraphAsymmErrors.cxx:88
 TGraphAsymmErrors.cxx:89
 TGraphAsymmErrors.cxx:90
 TGraphAsymmErrors.cxx:91
 TGraphAsymmErrors.cxx:92
 TGraphAsymmErrors.cxx:93
 TGraphAsymmErrors.cxx:94
 TGraphAsymmErrors.cxx:95
 TGraphAsymmErrors.cxx:96
 TGraphAsymmErrors.cxx:97
 TGraphAsymmErrors.cxx:98
 TGraphAsymmErrors.cxx:99
 TGraphAsymmErrors.cxx:100
 TGraphAsymmErrors.cxx:101
 TGraphAsymmErrors.cxx:102
 TGraphAsymmErrors.cxx:103
 TGraphAsymmErrors.cxx:104
 TGraphAsymmErrors.cxx:105
 TGraphAsymmErrors.cxx:106
 TGraphAsymmErrors.cxx:107
 TGraphAsymmErrors.cxx:108
 TGraphAsymmErrors.cxx:109
 TGraphAsymmErrors.cxx:110
 TGraphAsymmErrors.cxx:111
 TGraphAsymmErrors.cxx:112
 TGraphAsymmErrors.cxx:113
 TGraphAsymmErrors.cxx:114
 TGraphAsymmErrors.cxx:115
 TGraphAsymmErrors.cxx:116
 TGraphAsymmErrors.cxx:117
 TGraphAsymmErrors.cxx:118
 TGraphAsymmErrors.cxx:119
 TGraphAsymmErrors.cxx:120
 TGraphAsymmErrors.cxx:121
 TGraphAsymmErrors.cxx:122
 TGraphAsymmErrors.cxx:123
 TGraphAsymmErrors.cxx:124
 TGraphAsymmErrors.cxx:125
 TGraphAsymmErrors.cxx:126
 TGraphAsymmErrors.cxx:127
 TGraphAsymmErrors.cxx:128
 TGraphAsymmErrors.cxx:129
 TGraphAsymmErrors.cxx:130
 TGraphAsymmErrors.cxx:131
 TGraphAsymmErrors.cxx:132
 TGraphAsymmErrors.cxx:133
 TGraphAsymmErrors.cxx:134
 TGraphAsymmErrors.cxx:135
 TGraphAsymmErrors.cxx:136
 TGraphAsymmErrors.cxx:137
 TGraphAsymmErrors.cxx:138
 TGraphAsymmErrors.cxx:139
 TGraphAsymmErrors.cxx:140
 TGraphAsymmErrors.cxx:141
 TGraphAsymmErrors.cxx:142
 TGraphAsymmErrors.cxx:143
 TGraphAsymmErrors.cxx:144
 TGraphAsymmErrors.cxx:145
 TGraphAsymmErrors.cxx:146
 TGraphAsymmErrors.cxx:147
 TGraphAsymmErrors.cxx:148
 TGraphAsymmErrors.cxx:149
 TGraphAsymmErrors.cxx:150
 TGraphAsymmErrors.cxx:151
 TGraphAsymmErrors.cxx:152
 TGraphAsymmErrors.cxx:153
 TGraphAsymmErrors.cxx:154
 TGraphAsymmErrors.cxx:155
 TGraphAsymmErrors.cxx:156
 TGraphAsymmErrors.cxx:157
 TGraphAsymmErrors.cxx:158
 TGraphAsymmErrors.cxx:159
 TGraphAsymmErrors.cxx:160
 TGraphAsymmErrors.cxx:161
 TGraphAsymmErrors.cxx:162
 TGraphAsymmErrors.cxx:163
 TGraphAsymmErrors.cxx:164
 TGraphAsymmErrors.cxx:165
 TGraphAsymmErrors.cxx:166
 TGraphAsymmErrors.cxx:167
 TGraphAsymmErrors.cxx:168
 TGraphAsymmErrors.cxx:169
 TGraphAsymmErrors.cxx:170
 TGraphAsymmErrors.cxx:171
 TGraphAsymmErrors.cxx:172
 TGraphAsymmErrors.cxx:173
 TGraphAsymmErrors.cxx:174
 TGraphAsymmErrors.cxx:175
 TGraphAsymmErrors.cxx:176
 TGraphAsymmErrors.cxx:177
 TGraphAsymmErrors.cxx:178
 TGraphAsymmErrors.cxx:179
 TGraphAsymmErrors.cxx:180
 TGraphAsymmErrors.cxx:181
 TGraphAsymmErrors.cxx:182
 TGraphAsymmErrors.cxx:183
 TGraphAsymmErrors.cxx:184
 TGraphAsymmErrors.cxx:185
 TGraphAsymmErrors.cxx:186
 TGraphAsymmErrors.cxx:187
 TGraphAsymmErrors.cxx:188
 TGraphAsymmErrors.cxx:189
 TGraphAsymmErrors.cxx:190
 TGraphAsymmErrors.cxx:191
 TGraphAsymmErrors.cxx:192
 TGraphAsymmErrors.cxx:193
 TGraphAsymmErrors.cxx:194
 TGraphAsymmErrors.cxx:195
 TGraphAsymmErrors.cxx:196
 TGraphAsymmErrors.cxx:197
 TGraphAsymmErrors.cxx:198
 TGraphAsymmErrors.cxx:199
 TGraphAsymmErrors.cxx:200
 TGraphAsymmErrors.cxx:201
 TGraphAsymmErrors.cxx:202
 TGraphAsymmErrors.cxx:203
 TGraphAsymmErrors.cxx:204
 TGraphAsymmErrors.cxx:205
 TGraphAsymmErrors.cxx:206
 TGraphAsymmErrors.cxx:207
 TGraphAsymmErrors.cxx:208
 TGraphAsymmErrors.cxx:209
 TGraphAsymmErrors.cxx:210
 TGraphAsymmErrors.cxx:211
 TGraphAsymmErrors.cxx:212
 TGraphAsymmErrors.cxx:213
 TGraphAsymmErrors.cxx:214
 TGraphAsymmErrors.cxx:215
 TGraphAsymmErrors.cxx:216
 TGraphAsymmErrors.cxx:217
 TGraphAsymmErrors.cxx:218
 TGraphAsymmErrors.cxx:219
 TGraphAsymmErrors.cxx:220
 TGraphAsymmErrors.cxx:221
 TGraphAsymmErrors.cxx:222
 TGraphAsymmErrors.cxx:223
 TGraphAsymmErrors.cxx:224
 TGraphAsymmErrors.cxx:225
 TGraphAsymmErrors.cxx:226
 TGraphAsymmErrors.cxx:227
 TGraphAsymmErrors.cxx:228
 TGraphAsymmErrors.cxx:229
 TGraphAsymmErrors.cxx:230
 TGraphAsymmErrors.cxx:231
 TGraphAsymmErrors.cxx:232
 TGraphAsymmErrors.cxx:233
 TGraphAsymmErrors.cxx:234
 TGraphAsymmErrors.cxx:235
 TGraphAsymmErrors.cxx:236
 TGraphAsymmErrors.cxx:237
 TGraphAsymmErrors.cxx:238
 TGraphAsymmErrors.cxx:239
 TGraphAsymmErrors.cxx:240
 TGraphAsymmErrors.cxx:241
 TGraphAsymmErrors.cxx:242
 TGraphAsymmErrors.cxx:243
 TGraphAsymmErrors.cxx:244
 TGraphAsymmErrors.cxx:245
 TGraphAsymmErrors.cxx:246
 TGraphAsymmErrors.cxx:247
 TGraphAsymmErrors.cxx:248
 TGraphAsymmErrors.cxx:249
 TGraphAsymmErrors.cxx:250
 TGraphAsymmErrors.cxx:251
 TGraphAsymmErrors.cxx:252
 TGraphAsymmErrors.cxx:253
 TGraphAsymmErrors.cxx:254
 TGraphAsymmErrors.cxx:255
 TGraphAsymmErrors.cxx:256
 TGraphAsymmErrors.cxx:257
 TGraphAsymmErrors.cxx:258
 TGraphAsymmErrors.cxx:259
 TGraphAsymmErrors.cxx:260
 TGraphAsymmErrors.cxx:261
 TGraphAsymmErrors.cxx:262
 TGraphAsymmErrors.cxx:263
 TGraphAsymmErrors.cxx:264
 TGraphAsymmErrors.cxx:265
 TGraphAsymmErrors.cxx:266
 TGraphAsymmErrors.cxx:267
 TGraphAsymmErrors.cxx:268
 TGraphAsymmErrors.cxx:269
 TGraphAsymmErrors.cxx:270
 TGraphAsymmErrors.cxx:271
 TGraphAsymmErrors.cxx:272
 TGraphAsymmErrors.cxx:273
 TGraphAsymmErrors.cxx:274
 TGraphAsymmErrors.cxx:275
 TGraphAsymmErrors.cxx:276
 TGraphAsymmErrors.cxx:277
 TGraphAsymmErrors.cxx:278
 TGraphAsymmErrors.cxx:279
 TGraphAsymmErrors.cxx:280
 TGraphAsymmErrors.cxx:281
 TGraphAsymmErrors.cxx:282
 TGraphAsymmErrors.cxx:283
 TGraphAsymmErrors.cxx:284
 TGraphAsymmErrors.cxx:285
 TGraphAsymmErrors.cxx:286
 TGraphAsymmErrors.cxx:287
 TGraphAsymmErrors.cxx:288
 TGraphAsymmErrors.cxx:289
 TGraphAsymmErrors.cxx:290
 TGraphAsymmErrors.cxx:291
 TGraphAsymmErrors.cxx:292
 TGraphAsymmErrors.cxx:293
 TGraphAsymmErrors.cxx:294
 TGraphAsymmErrors.cxx:295
 TGraphAsymmErrors.cxx:296
 TGraphAsymmErrors.cxx:297
 TGraphAsymmErrors.cxx:298
 TGraphAsymmErrors.cxx:299
 TGraphAsymmErrors.cxx:300
 TGraphAsymmErrors.cxx:301
 TGraphAsymmErrors.cxx:302
 TGraphAsymmErrors.cxx:303
 TGraphAsymmErrors.cxx:304
 TGraphAsymmErrors.cxx:305
 TGraphAsymmErrors.cxx:306
 TGraphAsymmErrors.cxx:307
 TGraphAsymmErrors.cxx:308
 TGraphAsymmErrors.cxx:309
 TGraphAsymmErrors.cxx:310
 TGraphAsymmErrors.cxx:311
 TGraphAsymmErrors.cxx:312
 TGraphAsymmErrors.cxx:313
 TGraphAsymmErrors.cxx:314
 TGraphAsymmErrors.cxx:315
 TGraphAsymmErrors.cxx:316
 TGraphAsymmErrors.cxx:317
 TGraphAsymmErrors.cxx:318
 TGraphAsymmErrors.cxx:319
 TGraphAsymmErrors.cxx:320
 TGraphAsymmErrors.cxx:321
 TGraphAsymmErrors.cxx:322
 TGraphAsymmErrors.cxx:323
 TGraphAsymmErrors.cxx:324
 TGraphAsymmErrors.cxx:325
 TGraphAsymmErrors.cxx:326
 TGraphAsymmErrors.cxx:327
 TGraphAsymmErrors.cxx:328
 TGraphAsymmErrors.cxx:329
 TGraphAsymmErrors.cxx:330
 TGraphAsymmErrors.cxx:331
 TGraphAsymmErrors.cxx:332
 TGraphAsymmErrors.cxx:333
 TGraphAsymmErrors.cxx:334
 TGraphAsymmErrors.cxx:335
 TGraphAsymmErrors.cxx:336
 TGraphAsymmErrors.cxx:337
 TGraphAsymmErrors.cxx:338
 TGraphAsymmErrors.cxx:339
 TGraphAsymmErrors.cxx:340
 TGraphAsymmErrors.cxx:341
 TGraphAsymmErrors.cxx:342
 TGraphAsymmErrors.cxx:343
 TGraphAsymmErrors.cxx:344
 TGraphAsymmErrors.cxx:345
 TGraphAsymmErrors.cxx:346
 TGraphAsymmErrors.cxx:347
 TGraphAsymmErrors.cxx:348
 TGraphAsymmErrors.cxx:349
 TGraphAsymmErrors.cxx:350
 TGraphAsymmErrors.cxx:351
 TGraphAsymmErrors.cxx:352
 TGraphAsymmErrors.cxx:353
 TGraphAsymmErrors.cxx:354
 TGraphAsymmErrors.cxx:355
 TGraphAsymmErrors.cxx:356
 TGraphAsymmErrors.cxx:357
 TGraphAsymmErrors.cxx:358
 TGraphAsymmErrors.cxx:359
 TGraphAsymmErrors.cxx:360
 TGraphAsymmErrors.cxx:361
 TGraphAsymmErrors.cxx:362
 TGraphAsymmErrors.cxx:363
 TGraphAsymmErrors.cxx:364
 TGraphAsymmErrors.cxx:365
 TGraphAsymmErrors.cxx:366
 TGraphAsymmErrors.cxx:367
 TGraphAsymmErrors.cxx:368
 TGraphAsymmErrors.cxx:369
 TGraphAsymmErrors.cxx:370
 TGraphAsymmErrors.cxx:371
 TGraphAsymmErrors.cxx:372
 TGraphAsymmErrors.cxx:373
 TGraphAsymmErrors.cxx:374
 TGraphAsymmErrors.cxx:375
 TGraphAsymmErrors.cxx:376
 TGraphAsymmErrors.cxx:377
 TGraphAsymmErrors.cxx:378
 TGraphAsymmErrors.cxx:379
 TGraphAsymmErrors.cxx:380
 TGraphAsymmErrors.cxx:381
 TGraphAsymmErrors.cxx:382
 TGraphAsymmErrors.cxx:383
 TGraphAsymmErrors.cxx:384
 TGraphAsymmErrors.cxx:385
 TGraphAsymmErrors.cxx:386
 TGraphAsymmErrors.cxx:387
 TGraphAsymmErrors.cxx:388
 TGraphAsymmErrors.cxx:389
 TGraphAsymmErrors.cxx:390
 TGraphAsymmErrors.cxx:391
 TGraphAsymmErrors.cxx:392
 TGraphAsymmErrors.cxx:393
 TGraphAsymmErrors.cxx:394
 TGraphAsymmErrors.cxx:395
 TGraphAsymmErrors.cxx:396
 TGraphAsymmErrors.cxx:397
 TGraphAsymmErrors.cxx:398
 TGraphAsymmErrors.cxx:399
 TGraphAsymmErrors.cxx:400
 TGraphAsymmErrors.cxx:401
 TGraphAsymmErrors.cxx:402
 TGraphAsymmErrors.cxx:403
 TGraphAsymmErrors.cxx:404
 TGraphAsymmErrors.cxx:405
 TGraphAsymmErrors.cxx:406
 TGraphAsymmErrors.cxx:407
 TGraphAsymmErrors.cxx:408
 TGraphAsymmErrors.cxx:409
 TGraphAsymmErrors.cxx:410
 TGraphAsymmErrors.cxx:411
 TGraphAsymmErrors.cxx:412
 TGraphAsymmErrors.cxx:413
 TGraphAsymmErrors.cxx:414
 TGraphAsymmErrors.cxx:415
 TGraphAsymmErrors.cxx:416
 TGraphAsymmErrors.cxx:417
 TGraphAsymmErrors.cxx:418
 TGraphAsymmErrors.cxx:419
 TGraphAsymmErrors.cxx:420
 TGraphAsymmErrors.cxx:421
 TGraphAsymmErrors.cxx:422
 TGraphAsymmErrors.cxx:423
 TGraphAsymmErrors.cxx:424
 TGraphAsymmErrors.cxx:425
 TGraphAsymmErrors.cxx:426
 TGraphAsymmErrors.cxx:427
 TGraphAsymmErrors.cxx:428
 TGraphAsymmErrors.cxx:429
 TGraphAsymmErrors.cxx:430
 TGraphAsymmErrors.cxx:431
 TGraphAsymmErrors.cxx:432
 TGraphAsymmErrors.cxx:433
 TGraphAsymmErrors.cxx:434
 TGraphAsymmErrors.cxx:435
 TGraphAsymmErrors.cxx:436
 TGraphAsymmErrors.cxx:437
 TGraphAsymmErrors.cxx:438
 TGraphAsymmErrors.cxx:439
 TGraphAsymmErrors.cxx:440
 TGraphAsymmErrors.cxx:441
 TGraphAsymmErrors.cxx:442
 TGraphAsymmErrors.cxx:443
 TGraphAsymmErrors.cxx:444
 TGraphAsymmErrors.cxx:445
 TGraphAsymmErrors.cxx:446
 TGraphAsymmErrors.cxx:447
 TGraphAsymmErrors.cxx:448
 TGraphAsymmErrors.cxx:449
 TGraphAsymmErrors.cxx:450
 TGraphAsymmErrors.cxx:451
 TGraphAsymmErrors.cxx:452
 TGraphAsymmErrors.cxx:453
 TGraphAsymmErrors.cxx:454
 TGraphAsymmErrors.cxx:455
 TGraphAsymmErrors.cxx:456
 TGraphAsymmErrors.cxx:457
 TGraphAsymmErrors.cxx:458
 TGraphAsymmErrors.cxx:459
 TGraphAsymmErrors.cxx:460
 TGraphAsymmErrors.cxx:461
 TGraphAsymmErrors.cxx:462
 TGraphAsymmErrors.cxx:463
 TGraphAsymmErrors.cxx:464
 TGraphAsymmErrors.cxx:465
 TGraphAsymmErrors.cxx:466
 TGraphAsymmErrors.cxx:467
 TGraphAsymmErrors.cxx:468
 TGraphAsymmErrors.cxx:469
 TGraphAsymmErrors.cxx:470
 TGraphAsymmErrors.cxx:471
 TGraphAsymmErrors.cxx:472
 TGraphAsymmErrors.cxx:473
 TGraphAsymmErrors.cxx:474
 TGraphAsymmErrors.cxx:475
 TGraphAsymmErrors.cxx:476
 TGraphAsymmErrors.cxx:477
 TGraphAsymmErrors.cxx:478
 TGraphAsymmErrors.cxx:479
 TGraphAsymmErrors.cxx:480
 TGraphAsymmErrors.cxx:481
 TGraphAsymmErrors.cxx:482
 TGraphAsymmErrors.cxx:483
 TGraphAsymmErrors.cxx:484
 TGraphAsymmErrors.cxx:485
 TGraphAsymmErrors.cxx:486
 TGraphAsymmErrors.cxx:487
 TGraphAsymmErrors.cxx:488
 TGraphAsymmErrors.cxx:489
 TGraphAsymmErrors.cxx:490
 TGraphAsymmErrors.cxx:491
 TGraphAsymmErrors.cxx:492
 TGraphAsymmErrors.cxx:493
 TGraphAsymmErrors.cxx:494
 TGraphAsymmErrors.cxx:495
 TGraphAsymmErrors.cxx:496
 TGraphAsymmErrors.cxx:497
 TGraphAsymmErrors.cxx:498
 TGraphAsymmErrors.cxx:499
 TGraphAsymmErrors.cxx:500
 TGraphAsymmErrors.cxx:501
 TGraphAsymmErrors.cxx:502
 TGraphAsymmErrors.cxx:503
 TGraphAsymmErrors.cxx:504
 TGraphAsymmErrors.cxx:505
 TGraphAsymmErrors.cxx:506
 TGraphAsymmErrors.cxx:507
 TGraphAsymmErrors.cxx:508
 TGraphAsymmErrors.cxx:509
 TGraphAsymmErrors.cxx:510
 TGraphAsymmErrors.cxx:511
 TGraphAsymmErrors.cxx:512
 TGraphAsymmErrors.cxx:513
 TGraphAsymmErrors.cxx:514
 TGraphAsymmErrors.cxx:515
 TGraphAsymmErrors.cxx:516
 TGraphAsymmErrors.cxx:517
 TGraphAsymmErrors.cxx:518
 TGraphAsymmErrors.cxx:519
 TGraphAsymmErrors.cxx:520
 TGraphAsymmErrors.cxx:521
 TGraphAsymmErrors.cxx:522
 TGraphAsymmErrors.cxx:523
 TGraphAsymmErrors.cxx:524
 TGraphAsymmErrors.cxx:525
 TGraphAsymmErrors.cxx:526
 TGraphAsymmErrors.cxx:527
 TGraphAsymmErrors.cxx:528
 TGraphAsymmErrors.cxx:529
 TGraphAsymmErrors.cxx:530
 TGraphAsymmErrors.cxx:531
 TGraphAsymmErrors.cxx:532
 TGraphAsymmErrors.cxx:533
 TGraphAsymmErrors.cxx:534
 TGraphAsymmErrors.cxx:535
 TGraphAsymmErrors.cxx:536
 TGraphAsymmErrors.cxx:537
 TGraphAsymmErrors.cxx:538
 TGraphAsymmErrors.cxx:539
 TGraphAsymmErrors.cxx:540
 TGraphAsymmErrors.cxx:541
 TGraphAsymmErrors.cxx:542
 TGraphAsymmErrors.cxx:543
 TGraphAsymmErrors.cxx:544
 TGraphAsymmErrors.cxx:545
 TGraphAsymmErrors.cxx:546
 TGraphAsymmErrors.cxx:547
 TGraphAsymmErrors.cxx:548
 TGraphAsymmErrors.cxx:549
 TGraphAsymmErrors.cxx:550
 TGraphAsymmErrors.cxx:551
 TGraphAsymmErrors.cxx:552
 TGraphAsymmErrors.cxx:553
 TGraphAsymmErrors.cxx:554
 TGraphAsymmErrors.cxx:555
 TGraphAsymmErrors.cxx:556
 TGraphAsymmErrors.cxx:557
 TGraphAsymmErrors.cxx:558
 TGraphAsymmErrors.cxx:559
 TGraphAsymmErrors.cxx:560
 TGraphAsymmErrors.cxx:561
 TGraphAsymmErrors.cxx:562
 TGraphAsymmErrors.cxx:563
 TGraphAsymmErrors.cxx:564
 TGraphAsymmErrors.cxx:565
 TGraphAsymmErrors.cxx:566
 TGraphAsymmErrors.cxx:567
 TGraphAsymmErrors.cxx:568
 TGraphAsymmErrors.cxx:569
 TGraphAsymmErrors.cxx:570
 TGraphAsymmErrors.cxx:571
 TGraphAsymmErrors.cxx:572
 TGraphAsymmErrors.cxx:573
 TGraphAsymmErrors.cxx:574
 TGraphAsymmErrors.cxx:575
 TGraphAsymmErrors.cxx:576
 TGraphAsymmErrors.cxx:577
 TGraphAsymmErrors.cxx:578
 TGraphAsymmErrors.cxx:579
 TGraphAsymmErrors.cxx:580
 TGraphAsymmErrors.cxx:581
 TGraphAsymmErrors.cxx:582
 TGraphAsymmErrors.cxx:583
 TGraphAsymmErrors.cxx:584
 TGraphAsymmErrors.cxx:585
 TGraphAsymmErrors.cxx:586
 TGraphAsymmErrors.cxx:587
 TGraphAsymmErrors.cxx:588
 TGraphAsymmErrors.cxx:589
 TGraphAsymmErrors.cxx:590
 TGraphAsymmErrors.cxx:591
 TGraphAsymmErrors.cxx:592
 TGraphAsymmErrors.cxx:593
 TGraphAsymmErrors.cxx:594
 TGraphAsymmErrors.cxx:595
 TGraphAsymmErrors.cxx:596
 TGraphAsymmErrors.cxx:597
 TGraphAsymmErrors.cxx:598
 TGraphAsymmErrors.cxx:599
 TGraphAsymmErrors.cxx:600
 TGraphAsymmErrors.cxx:601
 TGraphAsymmErrors.cxx:602
 TGraphAsymmErrors.cxx:603
 TGraphAsymmErrors.cxx:604
 TGraphAsymmErrors.cxx:605
 TGraphAsymmErrors.cxx:606
 TGraphAsymmErrors.cxx:607
 TGraphAsymmErrors.cxx:608
 TGraphAsymmErrors.cxx:609
 TGraphAsymmErrors.cxx:610
 TGraphAsymmErrors.cxx:611
 TGraphAsymmErrors.cxx:612
 TGraphAsymmErrors.cxx:613
 TGraphAsymmErrors.cxx:614
 TGraphAsymmErrors.cxx:615
 TGraphAsymmErrors.cxx:616
 TGraphAsymmErrors.cxx:617
 TGraphAsymmErrors.cxx:618
 TGraphAsymmErrors.cxx:619
 TGraphAsymmErrors.cxx:620
 TGraphAsymmErrors.cxx:621
 TGraphAsymmErrors.cxx:622
 TGraphAsymmErrors.cxx:623
 TGraphAsymmErrors.cxx:624
 TGraphAsymmErrors.cxx:625
 TGraphAsymmErrors.cxx:626
 TGraphAsymmErrors.cxx:627
 TGraphAsymmErrors.cxx:628
 TGraphAsymmErrors.cxx:629
 TGraphAsymmErrors.cxx:630
 TGraphAsymmErrors.cxx:631
 TGraphAsymmErrors.cxx:632
 TGraphAsymmErrors.cxx:633
 TGraphAsymmErrors.cxx:634
 TGraphAsymmErrors.cxx:635
 TGraphAsymmErrors.cxx:636
 TGraphAsymmErrors.cxx:637
 TGraphAsymmErrors.cxx:638
 TGraphAsymmErrors.cxx:639
 TGraphAsymmErrors.cxx:640
 TGraphAsymmErrors.cxx:641
 TGraphAsymmErrors.cxx:642
 TGraphAsymmErrors.cxx:643
 TGraphAsymmErrors.cxx:644
 TGraphAsymmErrors.cxx:645
 TGraphAsymmErrors.cxx:646
 TGraphAsymmErrors.cxx:647
 TGraphAsymmErrors.cxx:648
 TGraphAsymmErrors.cxx:649
 TGraphAsymmErrors.cxx:650
 TGraphAsymmErrors.cxx:651
 TGraphAsymmErrors.cxx:652
 TGraphAsymmErrors.cxx:653
 TGraphAsymmErrors.cxx:654
 TGraphAsymmErrors.cxx:655
 TGraphAsymmErrors.cxx:656
 TGraphAsymmErrors.cxx:657
 TGraphAsymmErrors.cxx:658
 TGraphAsymmErrors.cxx:659
 TGraphAsymmErrors.cxx:660
 TGraphAsymmErrors.cxx:661
 TGraphAsymmErrors.cxx:662
 TGraphAsymmErrors.cxx:663
 TGraphAsymmErrors.cxx:664
 TGraphAsymmErrors.cxx:665
 TGraphAsymmErrors.cxx:666
 TGraphAsymmErrors.cxx:667
 TGraphAsymmErrors.cxx:668
 TGraphAsymmErrors.cxx:669
 TGraphAsymmErrors.cxx:670
 TGraphAsymmErrors.cxx:671
 TGraphAsymmErrors.cxx:672
 TGraphAsymmErrors.cxx:673
 TGraphAsymmErrors.cxx:674
 TGraphAsymmErrors.cxx:675
 TGraphAsymmErrors.cxx:676
 TGraphAsymmErrors.cxx:677
 TGraphAsymmErrors.cxx:678
 TGraphAsymmErrors.cxx:679
 TGraphAsymmErrors.cxx:680
 TGraphAsymmErrors.cxx:681
 TGraphAsymmErrors.cxx:682
 TGraphAsymmErrors.cxx:683
 TGraphAsymmErrors.cxx:684
 TGraphAsymmErrors.cxx:685
 TGraphAsymmErrors.cxx:686
 TGraphAsymmErrors.cxx:687
 TGraphAsymmErrors.cxx:688
 TGraphAsymmErrors.cxx:689
 TGraphAsymmErrors.cxx:690
 TGraphAsymmErrors.cxx:691
 TGraphAsymmErrors.cxx:692
 TGraphAsymmErrors.cxx:693
 TGraphAsymmErrors.cxx:694
 TGraphAsymmErrors.cxx:695
 TGraphAsymmErrors.cxx:696
 TGraphAsymmErrors.cxx:697
 TGraphAsymmErrors.cxx:698
 TGraphAsymmErrors.cxx:699
 TGraphAsymmErrors.cxx:700
 TGraphAsymmErrors.cxx:701
 TGraphAsymmErrors.cxx:702
 TGraphAsymmErrors.cxx:703
 TGraphAsymmErrors.cxx:704
 TGraphAsymmErrors.cxx:705
 TGraphAsymmErrors.cxx:706
 TGraphAsymmErrors.cxx:707
 TGraphAsymmErrors.cxx:708
 TGraphAsymmErrors.cxx:709
 TGraphAsymmErrors.cxx:710
 TGraphAsymmErrors.cxx:711
 TGraphAsymmErrors.cxx:712
 TGraphAsymmErrors.cxx:713
 TGraphAsymmErrors.cxx:714
 TGraphAsymmErrors.cxx:715
 TGraphAsymmErrors.cxx:716
 TGraphAsymmErrors.cxx:717
 TGraphAsymmErrors.cxx:718
 TGraphAsymmErrors.cxx:719
 TGraphAsymmErrors.cxx:720
 TGraphAsymmErrors.cxx:721
 TGraphAsymmErrors.cxx:722
 TGraphAsymmErrors.cxx:723
 TGraphAsymmErrors.cxx:724
 TGraphAsymmErrors.cxx:725
 TGraphAsymmErrors.cxx:726
 TGraphAsymmErrors.cxx:727
 TGraphAsymmErrors.cxx:728
 TGraphAsymmErrors.cxx:729
 TGraphAsymmErrors.cxx:730
 TGraphAsymmErrors.cxx:731
 TGraphAsymmErrors.cxx:732
 TGraphAsymmErrors.cxx:733
 TGraphAsymmErrors.cxx:734
 TGraphAsymmErrors.cxx:735
 TGraphAsymmErrors.cxx:736
 TGraphAsymmErrors.cxx:737
 TGraphAsymmErrors.cxx:738
 TGraphAsymmErrors.cxx:739
 TGraphAsymmErrors.cxx:740
 TGraphAsymmErrors.cxx:741
 TGraphAsymmErrors.cxx:742
 TGraphAsymmErrors.cxx:743
 TGraphAsymmErrors.cxx:744
 TGraphAsymmErrors.cxx:745
 TGraphAsymmErrors.cxx:746
 TGraphAsymmErrors.cxx:747
 TGraphAsymmErrors.cxx:748
 TGraphAsymmErrors.cxx:749
 TGraphAsymmErrors.cxx:750
 TGraphAsymmErrors.cxx:751
 TGraphAsymmErrors.cxx:752
 TGraphAsymmErrors.cxx:753
 TGraphAsymmErrors.cxx:754
 TGraphAsymmErrors.cxx:755
 TGraphAsymmErrors.cxx:756
 TGraphAsymmErrors.cxx:757
 TGraphAsymmErrors.cxx:758
 TGraphAsymmErrors.cxx:759
 TGraphAsymmErrors.cxx:760
 TGraphAsymmErrors.cxx:761
 TGraphAsymmErrors.cxx:762
 TGraphAsymmErrors.cxx:763
 TGraphAsymmErrors.cxx:764
 TGraphAsymmErrors.cxx:765
 TGraphAsymmErrors.cxx:766
 TGraphAsymmErrors.cxx:767
 TGraphAsymmErrors.cxx:768
 TGraphAsymmErrors.cxx:769
 TGraphAsymmErrors.cxx:770
 TGraphAsymmErrors.cxx:771
 TGraphAsymmErrors.cxx:772
 TGraphAsymmErrors.cxx:773
 TGraphAsymmErrors.cxx:774
 TGraphAsymmErrors.cxx:775
 TGraphAsymmErrors.cxx:776
 TGraphAsymmErrors.cxx:777
 TGraphAsymmErrors.cxx:778
 TGraphAsymmErrors.cxx:779
 TGraphAsymmErrors.cxx:780
 TGraphAsymmErrors.cxx:781
 TGraphAsymmErrors.cxx:782
 TGraphAsymmErrors.cxx:783
 TGraphAsymmErrors.cxx:784
 TGraphAsymmErrors.cxx:785
 TGraphAsymmErrors.cxx:786
 TGraphAsymmErrors.cxx:787
 TGraphAsymmErrors.cxx:788
 TGraphAsymmErrors.cxx:789
 TGraphAsymmErrors.cxx:790
 TGraphAsymmErrors.cxx:791
 TGraphAsymmErrors.cxx:792
 TGraphAsymmErrors.cxx:793
 TGraphAsymmErrors.cxx:794
 TGraphAsymmErrors.cxx:795
 TGraphAsymmErrors.cxx:796
 TGraphAsymmErrors.cxx:797
 TGraphAsymmErrors.cxx:798
 TGraphAsymmErrors.cxx:799
 TGraphAsymmErrors.cxx:800
 TGraphAsymmErrors.cxx:801
 TGraphAsymmErrors.cxx:802
 TGraphAsymmErrors.cxx:803
 TGraphAsymmErrors.cxx:804
 TGraphAsymmErrors.cxx:805
 TGraphAsymmErrors.cxx:806
 TGraphAsymmErrors.cxx:807
 TGraphAsymmErrors.cxx:808
 TGraphAsymmErrors.cxx:809
 TGraphAsymmErrors.cxx:810
 TGraphAsymmErrors.cxx:811
 TGraphAsymmErrors.cxx:812
 TGraphAsymmErrors.cxx:813
 TGraphAsymmErrors.cxx:814
 TGraphAsymmErrors.cxx:815
 TGraphAsymmErrors.cxx:816
 TGraphAsymmErrors.cxx:817
 TGraphAsymmErrors.cxx:818
 TGraphAsymmErrors.cxx:819
 TGraphAsymmErrors.cxx:820
 TGraphAsymmErrors.cxx:821
 TGraphAsymmErrors.cxx:822
 TGraphAsymmErrors.cxx:823
 TGraphAsymmErrors.cxx:824
 TGraphAsymmErrors.cxx:825
 TGraphAsymmErrors.cxx:826
 TGraphAsymmErrors.cxx:827
 TGraphAsymmErrors.cxx:828
 TGraphAsymmErrors.cxx:829
 TGraphAsymmErrors.cxx:830
 TGraphAsymmErrors.cxx:831
 TGraphAsymmErrors.cxx:832
 TGraphAsymmErrors.cxx:833
 TGraphAsymmErrors.cxx:834
 TGraphAsymmErrors.cxx:835
 TGraphAsymmErrors.cxx:836
 TGraphAsymmErrors.cxx:837
 TGraphAsymmErrors.cxx:838
 TGraphAsymmErrors.cxx:839
 TGraphAsymmErrors.cxx:840
 TGraphAsymmErrors.cxx:841
 TGraphAsymmErrors.cxx:842
 TGraphAsymmErrors.cxx:843
 TGraphAsymmErrors.cxx:844
 TGraphAsymmErrors.cxx:845
 TGraphAsymmErrors.cxx:846
 TGraphAsymmErrors.cxx:847
 TGraphAsymmErrors.cxx:848
 TGraphAsymmErrors.cxx:849
 TGraphAsymmErrors.cxx:850
 TGraphAsymmErrors.cxx:851
 TGraphAsymmErrors.cxx:852
 TGraphAsymmErrors.cxx:853
 TGraphAsymmErrors.cxx:854
 TGraphAsymmErrors.cxx:855
 TGraphAsymmErrors.cxx:856
 TGraphAsymmErrors.cxx:857
 TGraphAsymmErrors.cxx:858
 TGraphAsymmErrors.cxx:859
 TGraphAsymmErrors.cxx:860
 TGraphAsymmErrors.cxx:861
 TGraphAsymmErrors.cxx:862
 TGraphAsymmErrors.cxx:863
 TGraphAsymmErrors.cxx:864
 TGraphAsymmErrors.cxx:865
 TGraphAsymmErrors.cxx:866
 TGraphAsymmErrors.cxx:867
 TGraphAsymmErrors.cxx:868
 TGraphAsymmErrors.cxx:869
 TGraphAsymmErrors.cxx:870
 TGraphAsymmErrors.cxx:871
 TGraphAsymmErrors.cxx:872
 TGraphAsymmErrors.cxx:873
 TGraphAsymmErrors.cxx:874
 TGraphAsymmErrors.cxx:875
 TGraphAsymmErrors.cxx:876
 TGraphAsymmErrors.cxx:877
 TGraphAsymmErrors.cxx:878
 TGraphAsymmErrors.cxx:879
 TGraphAsymmErrors.cxx:880
 TGraphAsymmErrors.cxx:881
 TGraphAsymmErrors.cxx:882
 TGraphAsymmErrors.cxx:883
 TGraphAsymmErrors.cxx:884
 TGraphAsymmErrors.cxx:885
 TGraphAsymmErrors.cxx:886
 TGraphAsymmErrors.cxx:887
 TGraphAsymmErrors.cxx:888
 TGraphAsymmErrors.cxx:889
 TGraphAsymmErrors.cxx:890
 TGraphAsymmErrors.cxx:891
 TGraphAsymmErrors.cxx:892
 TGraphAsymmErrors.cxx:893
 TGraphAsymmErrors.cxx:894
 TGraphAsymmErrors.cxx:895
 TGraphAsymmErrors.cxx:896
 TGraphAsymmErrors.cxx:897
 TGraphAsymmErrors.cxx:898
 TGraphAsymmErrors.cxx:899
 TGraphAsymmErrors.cxx:900
 TGraphAsymmErrors.cxx:901
 TGraphAsymmErrors.cxx:902
 TGraphAsymmErrors.cxx:903
 TGraphAsymmErrors.cxx:904
 TGraphAsymmErrors.cxx:905
 TGraphAsymmErrors.cxx:906
 TGraphAsymmErrors.cxx:907
 TGraphAsymmErrors.cxx:908
 TGraphAsymmErrors.cxx:909
 TGraphAsymmErrors.cxx:910
 TGraphAsymmErrors.cxx:911
 TGraphAsymmErrors.cxx:912
 TGraphAsymmErrors.cxx:913
 TGraphAsymmErrors.cxx:914
 TGraphAsymmErrors.cxx:915
 TGraphAsymmErrors.cxx:916
 TGraphAsymmErrors.cxx:917
 TGraphAsymmErrors.cxx:918
 TGraphAsymmErrors.cxx:919
 TGraphAsymmErrors.cxx:920
 TGraphAsymmErrors.cxx:921
 TGraphAsymmErrors.cxx:922
 TGraphAsymmErrors.cxx:923
 TGraphAsymmErrors.cxx:924
 TGraphAsymmErrors.cxx:925
 TGraphAsymmErrors.cxx:926
 TGraphAsymmErrors.cxx:927
 TGraphAsymmErrors.cxx:928
 TGraphAsymmErrors.cxx:929
 TGraphAsymmErrors.cxx:930
 TGraphAsymmErrors.cxx:931
 TGraphAsymmErrors.cxx:932
 TGraphAsymmErrors.cxx:933
 TGraphAsymmErrors.cxx:934
 TGraphAsymmErrors.cxx:935
 TGraphAsymmErrors.cxx:936
 TGraphAsymmErrors.cxx:937
 TGraphAsymmErrors.cxx:938
 TGraphAsymmErrors.cxx:939
 TGraphAsymmErrors.cxx:940
 TGraphAsymmErrors.cxx:941
 TGraphAsymmErrors.cxx:942
 TGraphAsymmErrors.cxx:943
 TGraphAsymmErrors.cxx:944
 TGraphAsymmErrors.cxx:945
 TGraphAsymmErrors.cxx:946
 TGraphAsymmErrors.cxx:947
 TGraphAsymmErrors.cxx:948
 TGraphAsymmErrors.cxx:949
 TGraphAsymmErrors.cxx:950
 TGraphAsymmErrors.cxx:951
 TGraphAsymmErrors.cxx:952
 TGraphAsymmErrors.cxx:953
 TGraphAsymmErrors.cxx:954
 TGraphAsymmErrors.cxx:955
 TGraphAsymmErrors.cxx:956
 TGraphAsymmErrors.cxx:957
 TGraphAsymmErrors.cxx:958
 TGraphAsymmErrors.cxx:959
 TGraphAsymmErrors.cxx:960
 TGraphAsymmErrors.cxx:961
 TGraphAsymmErrors.cxx:962
 TGraphAsymmErrors.cxx:963
 TGraphAsymmErrors.cxx:964
 TGraphAsymmErrors.cxx:965
 TGraphAsymmErrors.cxx:966
 TGraphAsymmErrors.cxx:967
 TGraphAsymmErrors.cxx:968
 TGraphAsymmErrors.cxx:969
 TGraphAsymmErrors.cxx:970
 TGraphAsymmErrors.cxx:971
 TGraphAsymmErrors.cxx:972
 TGraphAsymmErrors.cxx:973
 TGraphAsymmErrors.cxx:974
 TGraphAsymmErrors.cxx:975
 TGraphAsymmErrors.cxx:976
 TGraphAsymmErrors.cxx:977
 TGraphAsymmErrors.cxx:978
 TGraphAsymmErrors.cxx:979
 TGraphAsymmErrors.cxx:980
 TGraphAsymmErrors.cxx:981
 TGraphAsymmErrors.cxx:982
 TGraphAsymmErrors.cxx:983
 TGraphAsymmErrors.cxx:984
 TGraphAsymmErrors.cxx:985
 TGraphAsymmErrors.cxx:986
 TGraphAsymmErrors.cxx:987
 TGraphAsymmErrors.cxx:988
 TGraphAsymmErrors.cxx:989
 TGraphAsymmErrors.cxx:990
 TGraphAsymmErrors.cxx:991
 TGraphAsymmErrors.cxx:992
 TGraphAsymmErrors.cxx:993
 TGraphAsymmErrors.cxx:994
 TGraphAsymmErrors.cxx:995
 TGraphAsymmErrors.cxx:996
 TGraphAsymmErrors.cxx:997
 TGraphAsymmErrors.cxx:998
 TGraphAsymmErrors.cxx:999
 TGraphAsymmErrors.cxx:1000
 TGraphAsymmErrors.cxx:1001
 TGraphAsymmErrors.cxx:1002
 TGraphAsymmErrors.cxx:1003
 TGraphAsymmErrors.cxx:1004
 TGraphAsymmErrors.cxx:1005
 TGraphAsymmErrors.cxx:1006
 TGraphAsymmErrors.cxx:1007
 TGraphAsymmErrors.cxx:1008
 TGraphAsymmErrors.cxx:1009
 TGraphAsymmErrors.cxx:1010
 TGraphAsymmErrors.cxx:1011
 TGraphAsymmErrors.cxx:1012
 TGraphAsymmErrors.cxx:1013
 TGraphAsymmErrors.cxx:1014
 TGraphAsymmErrors.cxx:1015
 TGraphAsymmErrors.cxx:1016
 TGraphAsymmErrors.cxx:1017
 TGraphAsymmErrors.cxx:1018
 TGraphAsymmErrors.cxx:1019
 TGraphAsymmErrors.cxx:1020
 TGraphAsymmErrors.cxx:1021
 TGraphAsymmErrors.cxx:1022
 TGraphAsymmErrors.cxx:1023
 TGraphAsymmErrors.cxx:1024
 TGraphAsymmErrors.cxx:1025
 TGraphAsymmErrors.cxx:1026
 TGraphAsymmErrors.cxx:1027
 TGraphAsymmErrors.cxx:1028
 TGraphAsymmErrors.cxx:1029
 TGraphAsymmErrors.cxx:1030
 TGraphAsymmErrors.cxx:1031
 TGraphAsymmErrors.cxx:1032
 TGraphAsymmErrors.cxx:1033
 TGraphAsymmErrors.cxx:1034
 TGraphAsymmErrors.cxx:1035
 TGraphAsymmErrors.cxx:1036
 TGraphAsymmErrors.cxx:1037
 TGraphAsymmErrors.cxx:1038
 TGraphAsymmErrors.cxx:1039
 TGraphAsymmErrors.cxx:1040
 TGraphAsymmErrors.cxx:1041
 TGraphAsymmErrors.cxx:1042
 TGraphAsymmErrors.cxx:1043
 TGraphAsymmErrors.cxx:1044
 TGraphAsymmErrors.cxx:1045
 TGraphAsymmErrors.cxx:1046
 TGraphAsymmErrors.cxx:1047
 TGraphAsymmErrors.cxx:1048
 TGraphAsymmErrors.cxx:1049
 TGraphAsymmErrors.cxx:1050
 TGraphAsymmErrors.cxx:1051
 TGraphAsymmErrors.cxx:1052
 TGraphAsymmErrors.cxx:1053
 TGraphAsymmErrors.cxx:1054
 TGraphAsymmErrors.cxx:1055
 TGraphAsymmErrors.cxx:1056
 TGraphAsymmErrors.cxx:1057
 TGraphAsymmErrors.cxx:1058
 TGraphAsymmErrors.cxx:1059
 TGraphAsymmErrors.cxx:1060
 TGraphAsymmErrors.cxx:1061
 TGraphAsymmErrors.cxx:1062
 TGraphAsymmErrors.cxx:1063
 TGraphAsymmErrors.cxx:1064
 TGraphAsymmErrors.cxx:1065
 TGraphAsymmErrors.cxx:1066
 TGraphAsymmErrors.cxx:1067
 TGraphAsymmErrors.cxx:1068
 TGraphAsymmErrors.cxx:1069
 TGraphAsymmErrors.cxx:1070
 TGraphAsymmErrors.cxx:1071
 TGraphAsymmErrors.cxx:1072
 TGraphAsymmErrors.cxx:1073
 TGraphAsymmErrors.cxx:1074
 TGraphAsymmErrors.cxx:1075
 TGraphAsymmErrors.cxx:1076
 TGraphAsymmErrors.cxx:1077
 TGraphAsymmErrors.cxx:1078
 TGraphAsymmErrors.cxx:1079
 TGraphAsymmErrors.cxx:1080
 TGraphAsymmErrors.cxx:1081
 TGraphAsymmErrors.cxx:1082
 TGraphAsymmErrors.cxx:1083
 TGraphAsymmErrors.cxx:1084
 TGraphAsymmErrors.cxx:1085
 TGraphAsymmErrors.cxx:1086
 TGraphAsymmErrors.cxx:1087
 TGraphAsymmErrors.cxx:1088
 TGraphAsymmErrors.cxx:1089
 TGraphAsymmErrors.cxx:1090
 TGraphAsymmErrors.cxx:1091
 TGraphAsymmErrors.cxx:1092
 TGraphAsymmErrors.cxx:1093
 TGraphAsymmErrors.cxx:1094
 TGraphAsymmErrors.cxx:1095
 TGraphAsymmErrors.cxx:1096
 TGraphAsymmErrors.cxx:1097
 TGraphAsymmErrors.cxx:1098
 TGraphAsymmErrors.cxx:1099
 TGraphAsymmErrors.cxx:1100
 TGraphAsymmErrors.cxx:1101
 TGraphAsymmErrors.cxx:1102
 TGraphAsymmErrors.cxx:1103
 TGraphAsymmErrors.cxx:1104
 TGraphAsymmErrors.cxx:1105
 TGraphAsymmErrors.cxx:1106
 TGraphAsymmErrors.cxx:1107
 TGraphAsymmErrors.cxx:1108
 TGraphAsymmErrors.cxx:1109
 TGraphAsymmErrors.cxx:1110
 TGraphAsymmErrors.cxx:1111
 TGraphAsymmErrors.cxx:1112
 TGraphAsymmErrors.cxx:1113
 TGraphAsymmErrors.cxx:1114
 TGraphAsymmErrors.cxx:1115
 TGraphAsymmErrors.cxx:1116
 TGraphAsymmErrors.cxx:1117
 TGraphAsymmErrors.cxx:1118
 TGraphAsymmErrors.cxx:1119
 TGraphAsymmErrors.cxx:1120
 TGraphAsymmErrors.cxx:1121
 TGraphAsymmErrors.cxx:1122
 TGraphAsymmErrors.cxx:1123
 TGraphAsymmErrors.cxx:1124
 TGraphAsymmErrors.cxx:1125