59using std::ostream, std::list, std::vector, std::min;
 
  129    std::unique_ptr<std::list<double>> 
hint{
f.plotSamplingHint(
x,xlo,xhi)};
 
  130    addPoints(*
funcPtr,xlo,xhi,xbins+1,
prec,
resolution,wmode,
nEvalError,
doEEVal,
eeVal,
hint.get());
 
  132      ccoutP(Plotting) << std::endl ;
 
  138    for(
int i=0; i<
nBinsX; ++i){
 
  139      double xval = 
x.getBinning().binCenter(i);
 
  148  for (
int i=0 ; i<
GetN() ; i++) {
 
 
  174  for (
int i=0 ; i<
GetN() ; i++) {
 
 
  223    if ((point-last)>1
e-10) {
 
 
  256   double minVal = std::numeric_limits<double>::infinity();
 
  257   double maxVal = -std::numeric_limits<double>::infinity();
 
  260   for (
int i = 1; i < 
GetN() - 1; i++) {
 
  262      minVal = std::min(
y, minVal);
 
  263      maxVal = std::max(
y, maxVal);
 
  267   for (
int i = 1; i < 
GetN() - 1; i++) {
 
  269      SetPoint(i, point.x, point.y - minVal);
 
 
  289    coutE(InputArguments) << 
fName << 
"::addPoints: input function is not valid" << std::endl;
 
  293    coutE(InputArguments) << 
fName << 
"::addPoints: bad input (nothing added)" << std::endl;
 
  311  std::vector<double> 
xval;
 
  313    for(
int step= 0; step < 
minPoints; step++) {
 
  314      xval.push_back(xlo + step*
dx) ;
 
  320  for (
unsigned int step=0; step < 
xval.size(); ++step) {
 
  322    if (step == 
static_cast<unsigned int>(
minPoints-1))
 
  333        coutW(Plotting) << 
"At observable [x]=" << 
xx <<  
" " ;
 
  352  if (wmode==Extended) {
 
  378      addRange(func,
x1,
x2,
yval[step-1],
yval[step],
prec*
yrangeEst,
minDx,numee,
doEEVal,
eeVal,epsilon);
 
  384  if (wmode==Extended) {
 
 
  406  if (std::abs(
x2-
x1) <= epsilon) {
 
  420      coutW(Plotting) << 
"At observable [x]=" << 
xmid <<  
" " ;
 
  433    addRange(func,
x1,
xmid,
y1,
ymid,
minDy,
minDx,numee,
doEEVal,
eeVal,epsilon);
 
  434    addRange(func,
xmid,
x2,
ymid,
y2,
minDy,
minDx,numee,
doEEVal,
eeVal,epsilon);
 
 
  518  os << 
indent << 
"--- RooCurve ---" << std::endl ;
 
  520  os << 
indent << 
"  Contains " << 
n << 
" points" << std::endl;
 
  521  os << 
indent << 
"  Graph points:" << std::endl;
 
  522  for(
Int_t i= 0; i < 
n; i++) {
 
  523    os << 
indent << std::setw(3) << i << 
") x = " << 
fX[i] << 
" , y = " << 
fY[i] << std::endl;
 
 
  545  for (
int i=0 ; i<
np ; i++) {
 
 
  584    coutE(InputArguments) << 
"RooCurve::average(" << 
GetName()
 
  585           << 
") invalid range (" << 
xFirst << 
"," << 
xLast << 
")" << std::endl ;
 
 
  639  double delta(std::numeric_limits<double>::max());
 
  642  for (
int i=0 ; i<
n ; i++) {
 
  644    if (std::abs(
xvalue-
x)<delta) {
 
 
  708  band->SetName((std::string(
GetName()) + 
"_errorband").c_str());
 
  709  band->SetLineWidth(1) ;
 
  715  for (
int i=0 ; i<
GetN() ; i++) {
 
  719  for (
int i=0 ; i<
GetN() ; i++) {
 
  722  for (
int i=
GetN()-1 ; i>=0 ; i--) {
 
 
  748  band->SetName((std::string(
GetName()) + 
"_errorband").c_str());
 
  749  band->SetLineWidth(1) ;
 
  755  for (
int i=0 ; i<
GetN() ; i++) {
 
  759  for (
int i=0 ; i<
GetN() ; i++) {
 
  762  for (
int i=
GetN()-1 ; i>=0 ; i--) {
 
 
  801  for (
j=0 ; 
j<
n ; 
j++) {
 
  806  double sum = F*(C*
F) ;
 
 
  820  for (vector<RooCurve*>::const_iterator iter=variations.
begin() ; iter!=variations.
end() ; ++iter) {
 
  821    y[
j++] = (*iter)->interpolate(
GetX()[i]) ;
 
  828    sort(
y.begin(),
y.end()) ;
 
  830    hi = 
y[
y.size()-delta] ;
 
  835    for (
unsigned int k=0 ; k<
y.size() ; k++) {
 
 
  863  for(
Int_t i= 0; i < 
n; i++) {
 
  872  for(
Int_t i= 2; i < 
n-2; i++) {
 
  877      if(!verbose) 
continue;
 
  878      std::cout << 
"RooCurve::isIdentical[" << std::setw(3) << i << 
"] Y tolerance exceeded (" << std::setprecision(5) << std::setw(10) << 
rdy << 
">" << 
tol << 
"),";
 
  879      std::cout << 
"  x,y=(" << std::right << std::setw(10) << 
fX[i] << 
"," << std::setw(10) << 
fY[i] << 
")\tref: y=" 
  880          << std::setw(10) << 
other.interpolate(
fX[i], 1.E-15) << 
". [Nearest point from ref: ";
 
  881      auto j = 
other.findPoint(
fX[i], 1.E10);
 
  882      std::cout << 
"j=" << 
j << 
"\tx,y=(" << std::setw(10) << 
other.fX[
j] << 
"," << std::setw(10) << 
other.fY[
j] << 
") ]" << 
"\trange=" << 
Yrange << std::endl;
 
 
  899   auto hint = 
new std::list<double>;
 
  908   hint->push_back(xlo + delta);
 
  909   hint->push_back(xhi - delta);
 
  913   for (
const double x : boundaries) {
 
  914      if (
x - xlo > delta && xhi - 
x > delta) {
 
  915         hint->push_back(
x - delta);
 
  916         hint->push_back(
x + delta);
 
 
static void indent(ostringstream &buf, int indent_level)
 
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
 
winID h TVirtualViewer3D TVirtualGLPainter p
 
Option_t Option_t SetLineWidth
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t np
 
Option_t Option_t SetLineColor
 
Option_t Option_t TPoint TPoint const char x2
 
Option_t Option_t TPoint TPoint const char x1
 
Option_t Option_t TPoint TPoint const char y2
 
Option_t Option_t TPoint TPoint const char y1
 
The Kahan summation is a compensated summation algorithm, which significantly reduces numerical error...
 
const_iterator begin() const
 
const_iterator end() const
 
Abstract interface for evaluating a real-valued function of one real variable and performing numerica...
 
Abstract base class for objects that represent a real value that may appear on the left hand side of ...
 
Abstract base class for objects that represent a real value and implements functionality common to al...
 
static Int_t numEvalErrors()
Return the number of logged evaluation errors since the last clearing.
 
static void printEvalErrors(std::ostream &os=std::cout, Int_t maxPerNode=10000000)
Print all outstanding logged evaluation error on the given ostream.
 
static void clearEvalErrorLog()
Clear the stack of evaluation error messages.
 
RooArgSet is a container object that can hold multiple RooAbsArg objects.
 
One-dimensional graphical representation of a real-valued function.
 
void addPoints(const RooAbsFunc &func, double xlo, double xhi, Int_t minPoints, double prec, double resolution, WingMode wmode, Int_t numee=0, bool doEEVal=false, double eeVal=0.0, std::list< double > *samplingHint=nullptr)
Add points calculated with the specified function, over the range (xlo,xhi).
 
void printTitle(std::ostream &os) const override
Print the title of this curve.
 
void initialize()
Perform initialization that is common to all curves.
 
double getFitRangeBinW() const override
Get the bin width associated with this plotable object.
 
static constexpr double relativeXEpsilon()
The distance between two points x1 and x2 relative to the full plot range below which two points are ...
 
void addRange(const RooAbsFunc &func, double x1, double x2, double y1, double y2, double minDy, double minDx, int numee, bool doEEVal, double eeVal, double epsilon)
Fill the range (x1,x2) with points calculated using func(&x).
 
void printName(std::ostream &os) const override
Print name of object.
 
void printMultiline(std::ostream &os, Int_t contents, bool verbose=false, TString indent="") const override
Print the details of this curve.
 
double interpolate(double x, double tolerance=1e-10) const
Return linearly interpolated value of curve at xvalue.
 
static std::list< double > * plotSamplingHintForBinBoundaries(std::span< const double > boundaries, double xlo, double xhi)
Returns sampling hints for a histogram with given boundaries.
 
void printClassName(std::ostream &os) const override
Print the class name of this curve.
 
RooCurve()
Default constructor.
 
bool _showProgress
! Show progress indication when adding points
 
RooCurve * makeErrorBand(const std::vector< RooCurve * > &variations, double Z=1) const
Construct filled RooCurve represented error band that captures alpha% of the variations of the curves...
 
double chiSquare(const RooHist &hist, int nFitParam) const
Calculate the chi^2/NDOF of this curve with respect to the histogram 'hist' accounting nFitParam floa...
 
void calcBandInterval(const std::vector< RooCurve * > &variations, Int_t i, double Z, double &lo, double &hi, bool approxGauss) const
 
double getFitRangeNEvt() const override
Return the number of events associated with the plotable object, it is always 1 for curves.
 
void shiftCurveToZero()
Find lowest point in curve and move all points in curve so that lowest point will go exactly through ...
 
void addPoint(double x, double y)
Add a point with the specified coordinates. Update our y-axis limits.
 
bool isIdentical(const RooCurve &other, double tol=1e-6, bool verbose=true) const
Return true if curve is identical to other curve allowing for given absolute tolerance on each point ...
 
Int_t findPoint(double value, double tolerance=1e-10) const
Find the nearest point to xvalue.
 
double average(double lo, double hi) const
Return average curve value in [xFirst,xLast] by integrating curve between points and dividing by xLas...
 
Graphical representation of binned data based on the TGraphAsymmErrors class.
 
static constexpr double infinity()
Return internal infinity representation.
 
void updateYAxisLimits(double y)
 
void setYAxisLimits(double ymin, double ymax)
 
void setYAxisLabel(const char *label)
 
Represents the product of a given set of RooAbsReal objects.
 
Bool_t IsAlphanumeric() const
 
const char * GetBinLabel(Int_t bin) const
Return label for bin.
 
virtual void Set(Int_t nbins, Double_t xmin, Double_t xmax)
Initialize axis with fix bins.
 
Double_t * GetEXlow() const override
 
Double_t * GetEYhigh() const override
 
Double_t * GetEXhigh() const override
 
Double_t * GetEYlow() const override
 
A TGraph is an object made of two arrays X and Y with npoints each.
 
virtual Double_t GetPointX(Int_t i) const
Get x value for point i.
 
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
 
virtual void Sort(Bool_t(*greater)(const TGraph *, Int_t, Int_t)=&TGraph::CompareX, Bool_t ascending=kTRUE, Int_t low=0, Int_t high=-1111)
Sorts the points of this TGraph using in-place quicksort (see e.g.
 
void SetName(const char *name="") override
Set graph name.
 
TAxis * GetXaxis() const
Get x axis of the graph.
 
Double_t * fX
[fNpoints] array of X points
 
virtual Double_t GetPointY(Int_t i) const
Get y value for point i.
 
void SetTitle(const char *title="") override
Change (i.e.
 
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 * GetName() const override
Returns name of object.
 
const char * GetTitle() const override
Returns title of object.
 
virtual const char * ClassName() const
Returns name of class to which the object belongs.
 
const char * Data() const
 
TString & Append(const char *cs)
 
RooConstVar & RooConst(double val)
 
Double_t Erfc(Double_t x)
Computes the complementary error function erfc(x).
 
static uint64_t sum(uint64_t i)