73      TAttLine::operator=(sp);
 
   74      TAttFill::operator=(sp);
 
   75      TAttMarker::operator=(sp);
 
  139   pmin = 
gPad->PadtoX(
gPad->GetUxmin());
 
  140   pmax = 
gPad->PadtoX(
gPad->GetUxmax());
 
  144      if (
xmax < pmin) 
return;  
 
  145      if (
xmin > pmax) 
return;
 
  169         for (i=0;i<=
fNpx;i++) {
 
  170            xbins[i] = 
gPad->PadtoX(xlogmin+ i*dlogx);
 
  181   for (i=1;i<=
fNpx;i++) {
 
  199   char *o = (
char *) opt.
Data();
 
  231void TSpline::Streamer(
TBuffer &R__b)
 
  241      TNamed::Streamer(R__b);
 
  242      TAttLine::Streamer(R__b);
 
  243      TAttFill::Streamer(R__b);
 
  244      TAttMarker::Streamer(R__b);
 
  362  fValBeg(valbeg), fValEnd(valend), fBegCond(0), fEndCond(0)
 
  372   for (
Int_t i=0; i<
n; ++i) {
 
  391  fValBeg(valbeg), fValEnd(valend),
 
  392  fBegCond(0), fEndCond(0)
 
  402   for (
Int_t i=0; i<
n; ++i) {
 
  420  fValBeg(valbeg), fValEnd(valend),
 
  421  fBegCond(0), fEndCond(0)
 
  431   for (
Int_t i=0; i<
n; ++i) {
 
  447                   const TF1 *func, 
Int_t n, 
const char *opt,
 
  450  fValBeg(valbeg), fValEnd(valend),
 
  451  fBegCond(0), fEndCond(0)
 
  464   for (
Int_t i=0; i<
n; ++i) {
 
  480                   const TGraph *
g, 
const char *opt,
 
  483  fValBeg(valbeg), fValEnd(valend),
 
  484  fBegCond(0), fEndCond(0)
 
  496      g->GetPoint(i,xx,yy);
 
  513  fValBeg(valbeg), fValEnd(valend),
 
  514  fBegCond(0), fEndCond(0)
 
  525      fPoly[i].
X()=
h->GetXaxis()->GetBinCenter(i+1);
 
  526      fPoly[i].
Y()=
h->GetBinContent(i+1);
 
  541  fValBeg(sp3.fValBeg),
 
  542  fValEnd(sp3.fValEnd),
 
  543  fBegCond(sp3.fBegCond),
 
  544  fEndCond(sp3.fEndCond)
 
  576   const char *b1 = strstr(opt,
"b1");
 
  577   const char *e1 = strstr(opt,
"e1");
 
  578   const char *b2 = strstr(opt,
"b2");
 
  579   const char *e2 = strstr(opt,
"e2");
 
  581      Error(
"SetCond",
"Cannot specify first and second derivative at first point");
 
  583      Error(
"SetCond",
"Cannot specify first and second derivative at last point");
 
  623   printf(
"1         TEST OF TSpline3 WITH NONEQUIDISTANT KNOTS\n");
 
  638   printf(
"\n-N = %3d    M =%2d\n",
n,
m);
 
  640   for (i = 0; i < 
n; ++i)
 
  641      spline->
GetCoeff(i,hx, 
a[i],
a[i+200],
a[i+400],
a[i+600]);
 
  643   for (i = 0; i < mm1; ++i) diff[i] = com[i] = 0;
 
  644   for (k = 0; k < 
n; ++k) {
 
  645      for (i = 0; i < mm; ++i) 
c[i] = 
a[k+i*200];
 
  646      printf(
" ---------------------------------------%3d --------------------------------------------\n",k+1);
 
  647      printf(
"%12.8f\n",
x[k]);
 
  649         printf(
"%16.8f\n",
c[0]);
 
  651         for (i = 0; i < mm; ++i) printf(
"%16.8f",
c[i]);
 
  653         for (i = 0; i < mm1; ++i)
 
  654            if ((z=
TMath::Abs(
a[k+i*200])) > com[i]) com[i] = z;
 
  656         for (i = 1; i < mm; ++i)
 
  657            for (jj = i; jj < mm; ++jj) {
 
  659               c[j-2] = 
c[j-1]*z+
c[j-2];
 
  661         for (i = 0; i < mm; ++i) printf(
"%16.8f",
c[i]);
 
  663         for (i = 0; i < mm1; ++i)
 
  664            if (!(k >= 
n-2 && i != 0))
 
  666                  > diff[i]) diff[i] = z;
 
  669   printf(
"  MAXIMUM ABSOLUTE VALUES OF DIFFERENCES \n");
 
  670   for (i = 0; i < mm1; ++i) printf(
"%18.9E",diff[i]);
 
  672   printf(
"  MAXIMUM ABSOLUTE VALUES OF COEFFICIENTS \n");
 
  675   for (i = 0; i < mm1; ++i) printf(
"%16.8f",com[i]);
 
  678   for (
n = 10; 
n <= 100; 
n += 10) {
 
  682      for (i = 0; i < nm1; i += 2) {
 
  692      printf(
"\n-N = %3d    M =%2d\n",
n,
m);
 
  694      for (i = 0; i < 
n; ++i)
 
  697      for (i = 0; i < mm1; ++i)
 
  698         diff[i] = com[i] = 0;
 
  699      for (k = 0; k < 
n; ++k) {
 
  700         for (i = 0; i < mm; ++i)
 
  703            printf(
" ---------------------------------------%3d --------------------------------------------\n",k+1);
 
  704            printf(
"%12.8f\n",
x[k]);
 
  705            if (k == 
n-1) printf(
"%16.8f\n",
c[0]);
 
  709            for (i = 0; i < mm; ++i) printf(
"%16.8f",
c[i]);
 
  712         for (i = 0; i < mm1; ++i)
 
  716         for (i = 1; i < mm; ++i)
 
  717            for (jj = i; jj < mm; ++jj) {
 
  719               c[j-2] = 
c[j-1]*z+
c[j-2];
 
  722            for (i = 0; i < mm; ++i) printf(
"%16.8f",
c[i]);
 
  725         for (i = 0; i < mm1; ++i)
 
  726         if (!(k >= 
n-2 && i != 0))
 
  728               > diff[i]) diff[i] = z;
 
  730      printf(
"  MAXIMUM ABSOLUTE VALUES OF DIFFERENCES \n");
 
  731      for (i = 0; i < mm1; ++i) printf(
"%18.9E",diff[i]);
 
  733      printf(
"  MAXIMUM ABSOLUTE VALUES OF COEFFICIENTS \n");
 
  736      for (i = 0; i < mm1; ++i) printf(
"%16.8E",com[i]);
 
  751   else if(
x>=
fXmax) klow=khig;
 
  760         else if (klow < khig) {
 
  761            if (
x > 
fPoly[klow+1].X()) ++klow;
 
  768            if(
x>
fPoly[khalf=(klow+khig)/2].X())
 
  776                  "Binary search failed x(%d) = %f < x= %f < x(%d) = %f\n",
 
  789   if (klow >= 
fNp-1 && 
fNp > 1) klow = 
fNp-2; 
 
  799   if (klow >= 
fNp-1) klow = 
fNp-2; 
 
  810   std::ofstream *
f = 
new std::ofstream(filename,std::ios::out);
 
  812      Error(
"SaveAs",
"Cannot open file:%s\n",filename);
 
  818   Int_t nch = strlen(filename);
 
  819   snprintf(buffer,512,
"double %s",filename);
 
  820   char *dot = strstr(buffer,
".");
 
  822   strlcat(buffer,
"(double x) {\n",512);
 
  823   nch = strlen(buffer); 
f->write(buffer,nch);
 
  825   nch = strlen(buffer); 
f->write(buffer,nch);
 
  827   nch = strlen(buffer); 
f->write(buffer,nch);
 
  831   snprintf(buffer,512,
"   const double fX[%d] = {",
fNp);
 
  832   nch = strlen(buffer); 
f->write(buffer,nch);
 
  836   for (i=0;i<
fNp;i++) {
 
  839      if (i == 
fNp-1) numb[nch-1]=0;
 
  840      strlcat(buffer,numb,512);
 
  841      if (i%5 == 4 || i == 
fNp-1) {
 
  842         nch = strlen(buffer); 
f->write(buffer,nch);
 
  847   nch = strlen(buffer); 
f->write(buffer,nch);
 
  849   snprintf(buffer,512,
"   const double fY[%d] = {",
fNp);
 
  850   nch = strlen(buffer); 
f->write(buffer,nch);
 
  852   for (i=0;i<
fNp;i++) {
 
  855      if (i == 
fNp-1) numb[nch-1]=0;
 
  856      strlcat(buffer,numb,512);
 
  857      if (i%5 == 4 || i == 
fNp-1) {
 
  858         nch = strlen(buffer); 
f->write(buffer,nch);
 
  863   nch = strlen(buffer); 
f->write(buffer,nch);
 
  865   snprintf(buffer,512,
"   const double fB[%d] = {",
fNp);
 
  866   nch = strlen(buffer); 
f->write(buffer,nch);
 
  868   for (i=0;i<
fNp;i++) {
 
  871      if (i == 
fNp-1) numb[nch-1]=0;
 
  872      strlcat(buffer,numb,512);
 
  873      if (i%5 == 4 || i == 
fNp-1) {
 
  874         nch = strlen(buffer); 
f->write(buffer,nch);
 
  879   nch = strlen(buffer); 
f->write(buffer,nch);
 
  881   snprintf(buffer,512,
"   const double fC[%d] = {",
fNp);
 
  882   nch = strlen(buffer); 
f->write(buffer,nch);
 
  884   for (i=0;i<
fNp;i++) {
 
  887      if (i == 
fNp-1) numb[nch-1]=0;
 
  888      strlcat(buffer,numb,512);
 
  889      if (i%5 == 4 || i == 
fNp-1) {
 
  890         nch = strlen(buffer); 
f->write(buffer,nch);
 
  895   nch = strlen(buffer); 
f->write(buffer,nch);
 
  897   snprintf(buffer,512,
"   const double fD[%d] = {",
fNp);
 
  898   nch = strlen(buffer); 
f->write(buffer,nch);
 
  900   for (i=0;i<
fNp;i++) {
 
  903      if (i == 
fNp-1) numb[nch-1]=0;
 
  904      strlcat(buffer,numb,512);
 
  905      if (i%5 == 4 || i == 
fNp-1) {
 
  906         nch = strlen(buffer); 
f->write(buffer,nch);
 
  911   nch = strlen(buffer); 
f->write(buffer,nch);
 
  914   snprintf(buffer,512,
"   int klow=0;\n");
 
  915   nch = strlen(buffer); 
f->write(buffer,nch);
 
  917   snprintf(buffer,512,
"   // If out of boundaries, extrapolate. It may be badly wrong\n");
 
  918   snprintf(buffer,512,
"   if(x<=fXmin) klow=0;\n");
 
  919   nch = strlen(buffer); 
f->write(buffer,nch);
 
  920   snprintf(buffer,512,
"   else if(x>=fXmax) klow=fNp-1;\n");
 
  921   nch = strlen(buffer); 
f->write(buffer,nch);
 
  923   nch = strlen(buffer); 
f->write(buffer,nch);
 
  924   snprintf(buffer,512,
"     if(fKstep) {\n");
 
  925   nch = strlen(buffer); 
f->write(buffer,nch);
 
  927   snprintf(buffer,512,
"       // Equidistant knots, use histogramming\n");
 
  928   nch = strlen(buffer); 
f->write(buffer,nch);
 
  929   snprintf(buffer,512,
"       klow = int((x-fXmin)/fDelta);\n");
 
  930   nch = strlen(buffer); 
f->write(buffer,nch);
 
  931   snprintf(buffer,512,
"       if (klow < fNp-1) klow = fNp-1;\n");
 
  932   nch = strlen(buffer); 
f->write(buffer,nch);
 
  934   nch = strlen(buffer); 
f->write(buffer,nch);
 
  935   snprintf(buffer,512,
"       int khig=fNp-1, khalf;\n");
 
  936   nch = strlen(buffer); 
f->write(buffer,nch);
 
  938   snprintf(buffer,512,
"       // Non equidistant knots, binary search\n");
 
  939   nch = strlen(buffer); 
f->write(buffer,nch);
 
  940   snprintf(buffer,512,
"       while(khig-klow>1)\n");
 
  941   nch = strlen(buffer); 
f->write(buffer,nch);
 
  942   snprintf(buffer,512,
"         if(x>fX[khalf=(klow+khig)/2]) klow=khalf;\n");
 
  943   nch = strlen(buffer); 
f->write(buffer,nch);
 
  944   snprintf(buffer,512,
"         else khig=khalf;\n");
 
  945   nch = strlen(buffer); 
f->write(buffer,nch);
 
  947   nch = strlen(buffer); 
f->write(buffer,nch);
 
  949   nch = strlen(buffer); 
f->write(buffer,nch);
 
  950   snprintf(buffer,512,
"   // Evaluate now\n");
 
  951   nch = strlen(buffer); 
f->write(buffer,nch);
 
  952   snprintf(buffer,512,
"   double dx=x-fX[klow];\n");
 
  953   nch = strlen(buffer); 
f->write(buffer,nch);
 
  954   snprintf(buffer,512,
"   return (fY[klow]+dx*(fB[klow]+dx*(fC[klow]+dx*fD[klow])));\n");
 
  955   nch = strlen(buffer); 
f->write(buffer,nch);
 
  960   if (
f) { 
f->close(); 
delete f;}
 
  970   if (
gROOT->ClassSaved(TSpline3::Class())) {
 
  975   out<<
"spline3 = new TSpline3("<<quote<<
GetTitle()<<quote<<
"," 
  976      <<
fXmin<<
","<<
fXmax<<
",(TF1*)0,"<<
fNp<<
","<<quote<<quote<<
"," 
  978   out<<
"   spline3->SetName("<<quote<<
GetName()<<quote<<
");"<<std::endl;
 
  983   if (
fNpx != 100) out<<
"   spline3->SetNpx("<<
fNpx<<
");"<<std::endl;
 
  986      out<<
"   spline3->SetPoint("<<i<<
","<<
fPoly[i].
X()<<
","<<
fPoly[i].
Y()<<
");"<<std::endl;
 
  987      out<<
"   spline3->SetPointCoeff("<<i<<
","<<
fPoly[i].
B()<<
","<<
fPoly[i].
C()<<
","<<
fPoly[i].
D()<<
");"<<std::endl;
 
  989   out<<
"   spline3->Draw("<<quote<<option<<quote<<
");"<<std::endl;
 
  997   if (i < 0 || i >= 
fNp) 
return;
 
 1007   if (i < 0 || i >= 
fNp) 
return;
 
 1092      for (
m=1; 
m<
l; ++
m) {
 
 1161   for (i=1; i<
fNp; ++i) {
 
 1165      fPoly[i-1].
C() = (divdf1 - 
fPoly[i-1].
B() - divdf3)/dtau;
 
 1166      fPoly[i-1].
D() = (divdf3/dtau)/dtau;
 
 1173void TSpline3::Streamer(
TBuffer &R__b)
 
 1183      TSpline::Streamer(R__b);
 
 1187            fPoly[i].Streamer(R__b);
 
 1220   const char *cb1, *ce1, *cb2, *ce2;
 
 1229   for (
Int_t i=0; i<
n; ++i) {
 
 1254   const char *cb1, *ce1, *cb2, *ce2;
 
 1263   for (
Int_t i=0; i<
n; ++i) {
 
 1287   const char *cb1, *ce1, *cb2, *ce2;
 
 1296   for (
Int_t i=0; i<
n; i++) {
 
 1321   const char *cb1, *ce1, *cb2, *ce2;
 
 1330   for (
Int_t i=0; i<
n; ++i) {
 
 1333      if (func) 
fPoly[i+beg].
Y() = ((
TF1*)func)->Eval(
x);
 
 1356   const char *cb1, *ce1, *cb2, *ce2;
 
 1367      g->GetPoint(i,xx,yy);
 
 1390   const char *cb1, *ce1, *cb2, *ce2;
 
 1400      fPoly[i+beg].
X()=
h->GetXaxis()->GetBinCenter(i+1);
 
 1401      fPoly[i+beg].
Y()=
h->GetBinContent(i+1);
 
 1447                                  const char *&cb1,
const char *&ce1,
 
 1448                                  const char *&cb2,
const char *&ce2)
 
 1453      cb1 = strstr(opt,
"b1");
 
 1454      ce1 = strstr(opt,
"e1");
 
 1455      cb2 = strstr(opt,
"b2");
 
 1456      ce2 = strstr(opt,
"e2");
 
 1478                             const char *cb1, 
const char *ce1, 
const char *cb2,
 
 1544            if(
x>
fPoly[khalf=(klow+khig)/2].X())
 
 1553               "Binary search failed x(%d) = %f < x(%d) = %f\n",
 
 1554                klow,
fPoly[klow].X(),klow+1,
fPoly[klow+1].X());
 
 1584   std::ofstream *
f = 
new std::ofstream(filename,std::ios::out);
 
 1586      Error(
"SaveAs",
"Cannot open file:%s\n",filename);
 
 1592   Int_t nch = strlen(filename);
 
 1593   snprintf(buffer,512,
"double %s",filename);
 
 1594   char *dot = strstr(buffer,
".");
 
 1596   strlcat(buffer,
"(double x) {\n",512);
 
 1597   nch = strlen(buffer); 
f->write(buffer,nch);
 
 1599   nch = strlen(buffer); 
f->write(buffer,nch);
 
 1601   nch = strlen(buffer); 
f->write(buffer,nch);
 
 1605   snprintf(buffer,512,
"   const double fX[%d] = {",
fNp);
 
 1606   nch = strlen(buffer); 
f->write(buffer,nch);
 
 1610   for (i=0;i<
fNp;i++) {
 
 1613      if (i == 
fNp-1) numb[nch-1]=0;
 
 1614      strlcat(buffer,numb,512);
 
 1615      if (i%5 == 4 || i == 
fNp-1) {
 
 1616         nch = strlen(buffer); 
f->write(buffer,nch);
 
 1621   nch = strlen(buffer); 
f->write(buffer,nch);
 
 1623   snprintf(buffer,512,
"   const double fY[%d] = {",
fNp);
 
 1624   nch = strlen(buffer); 
f->write(buffer,nch);
 
 1626   for (i=0;i<
fNp;i++) {
 
 1629      if (i == 
fNp-1) numb[nch-1]=0;
 
 1630      strlcat(buffer,numb,512);
 
 1631      if (i%5 == 4 || i == 
fNp-1) {
 
 1632         nch = strlen(buffer); 
f->write(buffer,nch);
 
 1637   nch = strlen(buffer); 
f->write(buffer,nch);
 
 1639   snprintf(buffer,512,
"   const double fB[%d] = {",
fNp);
 
 1640   nch = strlen(buffer); 
f->write(buffer,nch);
 
 1642   for (i=0;i<
fNp;i++) {
 
 1645      if (i == 
fNp-1) numb[nch-1]=0;
 
 1646      strlcat(buffer,numb,512);
 
 1647      if (i%5 == 4 || i == 
fNp-1) {
 
 1648         nch = strlen(buffer); 
f->write(buffer,nch);
 
 1653   nch = strlen(buffer); 
f->write(buffer,nch);
 
 1655   snprintf(buffer,512,
"   const double fC[%d] = {",
fNp);
 
 1656   nch = strlen(buffer); 
f->write(buffer,nch);
 
 1658   for (i=0;i<
fNp;i++) {
 
 1661      if (i == 
fNp-1) numb[nch-1]=0;
 
 1662      strlcat(buffer,numb,512);
 
 1663      if (i%5 == 4 || i == 
fNp-1) {
 
 1664         nch = strlen(buffer); 
f->write(buffer,nch);
 
 1669   nch = strlen(buffer); 
f->write(buffer,nch);
 
 1671   snprintf(buffer,512,
"   const double fD[%d] = {",
fNp);
 
 1672   nch = strlen(buffer); 
f->write(buffer,nch);
 
 1674   for (i=0;i<
fNp;i++) {
 
 1677      if (i == 
fNp-1) numb[nch-1]=0;
 
 1678      strlcat(buffer,numb,512);
 
 1679      if (i%5 == 4 || i == 
fNp-1) {
 
 1680         nch = strlen(buffer); 
f->write(buffer,nch);
 
 1685   nch = strlen(buffer); 
f->write(buffer,nch);
 
 1687   snprintf(buffer,512,
"   const double fE[%d] = {",
fNp);
 
 1688   nch = strlen(buffer); 
f->write(buffer,nch);
 
 1690   for (i=0;i<
fNp;i++) {
 
 1693      if (i == 
fNp-1) numb[nch-1]=0;
 
 1694      strlcat(buffer,numb,512);
 
 1695      if (i%5 == 4 || i == 
fNp-1) {
 
 1696         nch = strlen(buffer); 
f->write(buffer,nch);
 
 1701   nch = strlen(buffer); 
f->write(buffer,nch);
 
 1703   snprintf(buffer,512,
"   const double fF[%d] = {",
fNp);
 
 1704   nch = strlen(buffer); 
f->write(buffer,nch);
 
 1706   for (i=0;i<
fNp;i++) {
 
 1709      if (i == 
fNp-1) numb[nch-1]=0;
 
 1710      strlcat(buffer,numb,512);
 
 1711      if (i%5 == 4 || i == 
fNp-1) {
 
 1712         nch = strlen(buffer); 
f->write(buffer,nch);
 
 1717   nch = strlen(buffer); 
f->write(buffer,nch);
 
 1720   snprintf(buffer,512,
"   int klow=0;\n");
 
 1721   nch = strlen(buffer); 
f->write(buffer,nch);
 
 1723   snprintf(buffer,512,
"   // If out of boundaries, extrapolate. It may be badly wrong\n");
 
 1724   snprintf(buffer,512,
"   if(x<=fXmin) klow=0;\n");
 
 1725   nch = strlen(buffer); 
f->write(buffer,nch);
 
 1726   snprintf(buffer,512,
"   else if(x>=fXmax) klow=fNp-1;\n");
 
 1727   nch = strlen(buffer); 
f->write(buffer,nch);
 
 1729   nch = strlen(buffer); 
f->write(buffer,nch);
 
 1730   snprintf(buffer,512,
"     if(fKstep) {\n");
 
 1731   nch = strlen(buffer); 
f->write(buffer,nch);
 
 1733   snprintf(buffer,512,
"       // Equidistant knots, use histogramming\n");
 
 1734   nch = strlen(buffer); 
f->write(buffer,nch);
 
 1735   snprintf(buffer,512,
"       klow = int((x-fXmin)/fDelta);\n");
 
 1736   nch = strlen(buffer); 
f->write(buffer,nch);
 
 1737   snprintf(buffer,512,
"       if (klow < fNp-1) klow = fNp-1;\n");
 
 1738   nch = strlen(buffer); 
f->write(buffer,nch);
 
 1739   snprintf(buffer,512,
"     } else {\n");
 
 1740   nch = strlen(buffer); 
f->write(buffer,nch);
 
 1741   snprintf(buffer,512,
"       int khig=fNp-1, khalf;\n");
 
 1742   nch = strlen(buffer); 
f->write(buffer,nch);
 
 1744   snprintf(buffer,512,
"       // Non equidistant knots, binary search\n");
 
 1745   nch = strlen(buffer); 
f->write(buffer,nch);
 
 1746   snprintf(buffer,512,
"       while(khig-klow>1)\n");
 
 1747   nch = strlen(buffer); 
f->write(buffer,nch);
 
 1748   snprintf(buffer,512,
"         if(x>fX[khalf=(klow+khig)/2]) klow=khalf;\n");
 
 1749   nch = strlen(buffer); 
f->write(buffer,nch);
 
 1750   snprintf(buffer,512,
"         else khig=khalf;\n");
 
 1751   nch = strlen(buffer); 
f->write(buffer,nch);
 
 1753   nch = strlen(buffer); 
f->write(buffer,nch);
 
 1755   nch = strlen(buffer); 
f->write(buffer,nch);
 
 1756   snprintf(buffer,512,
"   // Evaluate now\n");
 
 1757   nch = strlen(buffer); 
f->write(buffer,nch);
 
 1758   snprintf(buffer,512,
"   double dx=x-fX[klow];\n");
 
 1759   nch = strlen(buffer); 
f->write(buffer,nch);
 
 1760   snprintf(buffer,512,
"   return (fY[klow]+dx*(fB[klow]+dx*(fC[klow]+dx*(fD[klow]+dx*(fE[klow]+dx*fF[klow])))));\n");
 
 1761   nch = strlen(buffer); 
f->write(buffer,nch);
 
 1766   if (
f) { 
f->close(); 
delete f;}
 
 1775   out<<
"   "<<std::endl;
 
 1776   if (
gROOT->ClassSaved(TSpline5::Class())) {
 
 1785   out<<
"spline5 = new TSpline5("<<quote<<
GetTitle()<<quote<<
"," 
 1786      <<
fXmin<<
","<<
fXmax<<
",(TF1*)0,"<<
fNp<<
","<<quote<<quote<<
"," 
 1787      <<b1<<
","<<e1<<
","<<b2<<
","<<e2<<
");"<<std::endl;
 
 1788   out<<
"   spline5->SetName("<<quote<<
GetName()<<quote<<
");"<<std::endl;
 
 1793   if (
fNpx != 100) out<<
"   spline5->SetNpx("<<
fNpx<<
");"<<std::endl;
 
 1796      out<<
"   spline5->SetPoint("<<i<<
","<<
fPoly[i].
X()<<
","<<
fPoly[i].
Y()<<
");"<<std::endl;
 
 1797      out<<
"   spline5->SetPointCoeff("<<i<<
","<<
fPoly[i].
B()<<
","<<
fPoly[i].
C()<<
","<<
fPoly[i].
D()<<
","<<
fPoly[i].
E()<<
","<<
fPoly[i].
F()<<
");"<<std::endl;
 
 1799   out<<
"   spline5->Draw("<<quote<<option<<quote<<
");"<<std::endl;
 
 1808   if (i < 0 || i >= 
fNp) 
return;
 
 1819   if (i < 0 || i >= 
fNp) 
return;
 
 1908      b1, p2, p3, q2, q3, r2, pq, pr, qr;
 
 1923   if (
q) 
fPoly[1].
D() = 
q*6.*q2/(qr*qr);
 
 1927      for (i = 1; i < 
m; ++i) {
 
 1940            fPoly[i+1].
D() = q3*6./(qr*qr);
 
 1942                                 *(pr* 20.+q2*7.)+q2*
 
 1943                                 ((p2+r2)*8.+pr*21.+q2+q2))/(pqqr*pqqr);
 
 1944            fPoly[i-1].
D() += q3*6./(pq*pq);
 
 1945            fPoly[i].
E() = q2*(p*qr+pq*3.*(qr+
r+
r))/(pqqr*qr);
 
 1946            fPoly[i-1].
E() += q2*(
r*pq+qr*3.*(pq+p+p))/(pqqr*pq);
 
 1947            fPoly[i-1].
F() = q3/pqqr;
 
 1952   if (
r) 
fPoly[
m-1].
D() += 
r*6.*r2/(qr*qr);
 
 1957   for (i = 1; i < 
fNp; ++i) {
 
 1966   for (i = 2; i < 
fNp; ++i) {
 
 1984         for (i = 2; i < 
m; ++i) {
 
 1997      for (i=
fNp-3; i > 0; --i)
 
 2015   for (i = 1; i < 
m; ++i) {
 
 2036                            p3-(
v+
fPoly[i].E())*q3)/pq;
 
 2093   printf(
"1         TEST OF TSpline5 WITH NONEQUIDISTANT KNOTS\n");
 
 2108   printf(
"\n-N = %3d    M =%2d\n",
n,
m);
 
 2110   for (i = 0; i < 
n; ++i)
 
 2112                       a[i+600],
a[i+800],
a[i+1000]);
 
 2114   for (i = 0; i < mm1; ++i) diff[i] = com[i] = 0;
 
 2115   for (k = 0; k < 
n; ++k) {
 
 2116      for (i = 0; i < mm; ++i) 
c[i] = 
a[k+i*200];
 
 2117      printf(
" ---------------------------------------%3d --------------------------------------------\n",k+1);
 
 2118      printf(
"%12.8f\n",
x[k]);
 
 2120         printf(
"%16.8f\n",
c[0]);
 
 2122         for (i = 0; i < mm; ++i) printf(
"%16.8f",
c[i]);
 
 2124         for (i = 0; i < mm1; ++i)
 
 2125            if ((z=
TMath::Abs(
a[k+i*200])) > com[i]) com[i] = z;
 
 2127         for (i = 1; i < mm; ++i)
 
 2128            for (jj = i; jj < mm; ++jj) {
 
 2130               c[j-2] = 
c[j-1]*z+
c[j-2];
 
 2132         for (i = 0; i < mm; ++i) printf(
"%16.8f",
c[i]);
 
 2134         for (i = 0; i < mm1; ++i)
 
 2135            if (!(k >= 
n-2 && i != 0))
 
 2137                  > diff[i]) diff[i] = z;
 
 2140   printf(
"  MAXIMUM ABSOLUTE VALUES OF DIFFERENCES \n");
 
 2141   for (i = 0; i < mm1; ++i) printf(
"%18.9E",diff[i]);
 
 2143   printf(
"  MAXIMUM ABSOLUTE VALUES OF COEFFICIENTS \n");
 
 2146   for (i = 0; i < mm1; ++i) printf(
"%16.8f",com[i]);
 
 2149   for (
n = 10; 
n <= 100; 
n += 10) {
 
 2153      for (i = 0; i < nm1; i += 2) {
 
 2163      printf(
"\n-N = %3d    M =%2d\n",
n,
m);
 
 2165      for (i = 0; i < 
n; ++i)
 
 2167                          a[i+600],
a[i+800],
a[i+1000]);
 
 2169      for (i = 0; i < mm1; ++i)
 
 2170         diff[i] = com[i] = 0;
 
 2171      for (k = 0; k < 
n; ++k) {
 
 2172         for (i = 0; i < mm; ++i)
 
 2175            printf(
" ---------------------------------------%3d --------------------------------------------\n",k+1);
 
 2176            printf(
"%12.8f\n",
x[k]);
 
 2177            if (k == 
n-1) printf(
"%16.8f\n",
c[0]);
 
 2179         if (k == 
n-1) 
break;
 
 2181            for (i = 0; i < mm; ++i) printf(
"%16.8f",
c[i]);
 
 2184         for (i = 0; i < mm1; ++i)
 
 2188         for (i = 1; i < mm; ++i)
 
 2189            for (jj = i; jj < mm; ++jj) {
 
 2191               c[j-2] = 
c[j-1]*z+
c[j-2];
 
 2194            for (i = 0; i < mm; ++i) printf(
"%16.8f",
c[i]);
 
 2197         for (i = 0; i < mm1; ++i)
 
 2198            if (!(k >= 
n-2 && i != 0))
 
 2200                  > diff[i]) diff[i] = z;
 
 2202      printf(
"  MAXIMUM ABSOLUTE VALUES OF DIFFERENCES \n");
 
 2203      for (i = 0; i < mm1; ++i) printf(
"%18.9E",diff[i]);
 
 2205      printf(
"  MAXIMUM ABSOLUTE VALUES OF COEFFICIENTS \n");
 
 2208      for (i = 0; i < mm1; ++i) printf(
"%16.8E",com[i]);
 
 2213   printf(
"1  TEST OF TSpline5 WITH NONEQUIDISTANT DOUBLE KNOTS\n");
 
 2239   printf(
"-N = %3d    M =%2d\n",
n,
m);
 
 2241   for (i = 0; i < nn; ++i)
 
 2243                       a[i+600],
a[i+800],
a[i+1000]);
 
 2245   for (i = 0; i < mm1; ++i)
 
 2246      diff[i] = com[i] = 0;
 
 2247   for (k = 0; k < nn; ++k) {
 
 2248      for (i = 0; i < mm; ++i)
 
 2250      printf(
" ---------------------------------------%3d --------------------------------------------\n",k+1);
 
 2251      printf(
"%12.8f\n",
x[k]);
 
 2253         printf(
"%16.8f\n",
c[0]);
 
 2256      for (i = 0; i < mm; ++i) printf(
"%16.8f",
c[i]);
 
 2258      for (i = 0; i < mm1; ++i)
 
 2259         if ((z=
TMath::Abs(
a[k+i*200])) > com[i]) com[i] = z;
 
 2261      for (i = 1; i < mm; ++i)
 
 2262         for (jj = i; jj < mm; ++jj) {
 
 2264            c[j-2] = 
c[j-1]*z+
c[j-2];
 
 2266      for (i = 0; i < mm; ++i) printf(
"%16.8f",
c[i]);
 
 2268      for (i = 0; i < mm1; ++i)
 
 2269         if (!(k >= nn-2 && i != 0))
 
 2271               > diff[i]) diff[i] = z;
 
 2273   printf(
"  MAXIMUM ABSOLUTE VALUES OF DIFFERENCES \n");
 
 2274   for (i = 1; i <= mm1; ++i) {
 
 2275      printf(
"%18.9E",diff[i-1]);
 
 2280   printf(
"  MAXIMUM ABSOLUTE VALUES OF COEFFICIENTS \n");
 
 2281   for (i = 0; i < mm1; ++i) printf(
"%16.8f",com[i]);
 
 2284   for (
n = 10; 
n <= 100; 
n += 10) {
 
 2289      for (i = 0; i < 
n; ++i) {
 
 2296      printf(
"-N = %3d    M =%2d\n",
n,
m);
 
 2298      for (i = 0; i < nn; ++i)
 
 2300                          a[i+600],
a[i+800],
a[i+1000]);
 
 2302      for (i = 0; i < mm1; ++i)
 
 2303         diff[i] = com[i] = 0;
 
 2304      for (k = 0; k < nn; ++k) {
 
 2305         for (i = 0; i < mm; ++i)
 
 2308            printf(
" ---------------------------------------%3d --------------------------------------------\n",k+1);
 
 2309            printf(
"%12.8f\n",
x[k]);
 
 2310            if (k == nn-1) printf(
"%16.8f\n",
c[0]);
 
 2312         if (k == nn-1) 
break;
 
 2314            for (i = 0; i < mm; ++i) printf(
"%16.8f",
c[i]);
 
 2317         for (i = 0; i < mm1; ++i)
 
 2318            if ((z=
TMath::Abs(
a[k+i*200])) > com[i]) com[i] = z;
 
 2320         for (i = 1; i < mm; ++i) {
 
 2321            for (jj = i; jj < mm; ++jj) {
 
 2323               c[j-2] = 
c[j-1]*z+
c[j-2];
 
 2327            for (i = 0; i < mm; ++i) printf(
"%16.8f",
c[i]);
 
 2330         for (i = 0; i < mm1; ++i)
 
 2331            if (!(k >= nn-2 && i != 0))
 
 2333                  > diff[i]) diff[i] = z;
 
 2335      printf(
"  MAXIMUM ABSOLUTE VALUES OF DIFFERENCES \n");
 
 2336      for (i = 0; i < mm1; ++i) printf(
"%18.9E",diff[i]);
 
 2338      printf(
"  MAXIMUM ABSOLUTE VALUES OF COEFFICIENTS \n");
 
 2341      for (i = 0; i < mm1; ++i) printf(
"%18.9E",com[i]);
 
 2347   printf(
"1         TEST OF TSpline5 WITH NONEQUIDISTANT KNOTS,\n");
 
 2348   printf(
"             ONE DOUBLE, ONE TRIPLE KNOT\n");
 
 2369   printf(
"-N = %3d    M =%2d\n",
n,
m);
 
 2371   for (i = 0; i < 
n; ++i)
 
 2373                       a[i+600],
a[i+800],
a[i+1000]);
 
 2375   for (i = 0; i < mm1; ++i)
 
 2376      diff[i] = com[i] = 0;
 
 2377   for (k = 0; k < 
n; ++k) {
 
 2378      for (i = 0; i < mm; ++i)
 
 2380      printf(
" ---------------------------------------%3d --------------------------------------------\n",k+1);
 
 2381      printf(
"%12.8f\n",
x[k]);
 
 2383         printf(
"%16.8f\n",
c[0]);
 
 2386      for (i = 0; i < mm; ++i) printf(
"%16.8f",
c[i]);
 
 2388      for (i = 0; i < mm1; ++i)
 
 2389         if ((z=
TMath::Abs(
a[k+i*200])) > com[i]) com[i] = z;
 
 2391      for (i = 1; i < mm; ++i)
 
 2392         for (jj = i; jj < mm; ++jj) {
 
 2394            c[j-2] = 
c[j-1]*z+
c[j-2];
 
 2396      for (i = 0; i < mm; ++i) printf(
"%16.8f",
c[i]);
 
 2398      for (i = 0; i < mm1; ++i)
 
 2399         if (!(k >= 
n-2 && i != 0))
 
 2401               > diff[i]) diff[i] = z;
 
 2403   printf(
"  MAXIMUM ABSOLUTE VALUES OF DIFFERENCES \n");
 
 2404   for (i = 0; i < mm1; ++i) printf(
"%18.9E",diff[i]);
 
 2406   printf(
"  MAXIMUM ABSOLUTE VALUES OF COEFFICIENTS \n");
 
 2409   for (i = 0; i < mm1; ++i) printf(
"%16.8f",com[i]);
 
 2414   printf(
"1         TEST OF TSpline5 WITH NONEQUIDISTANT KNOTS,\n");
 
 2415   printf(
"             TWO DOUBLE, ONE TRIPLE KNOT\n");
 
 2440   printf(
"-N = %3d    M =%2d\n",
n,
m);
 
 2442   for (i = 0; i < 
n; ++i)
 
 2444                       a[i+600],
a[i+800],
a[i+1000]);
 
 2446   for (i = 0; i < mm1; ++i)
 
 2447      diff[i] = com[i] = 0;
 
 2448   for (k = 0; k < 
n; ++k) {
 
 2449      for (i = 0; i < mm; ++i)
 
 2451      printf(
" ---------------------------------------%3d --------------------------------------------\n",k+1);
 
 2452      printf(
"%12.8f\n",
x[k]);
 
 2454         printf(
"%16.8f\n",
c[0]);
 
 2457      for (i = 0; i < mm; ++i) printf(
"%16.8f",
c[i]);
 
 2459      for (i = 0; i < mm1; ++i)
 
 2460         if ((z=
TMath::Abs(
a[k+i*200])) > com[i]) com[i] = z;
 
 2462      for (i = 1; i < mm; ++i)
 
 2463         for (jj = i; jj < mm; ++jj) {
 
 2465            c[j-2] = 
c[j-1]*z+
c[j-2];
 
 2467      for (i = 0; i < mm; ++i) printf(
"%16.8f",
c[i]);
 
 2469      for (i = 0; i < mm1; ++i)
 
 2470         if (!(k >= 
n-2 && i != 0))
 
 2472               > diff[i]) diff[i] = z;
 
 2474   printf(
"  MAXIMUM ABSOLUTE VALUES OF DIFFERENCES \n");
 
 2475   for (i = 0; i < mm1; ++i) printf(
"%18.9E",diff[i]);
 
 2477   printf(
"  MAXIMUM ABSOLUTE VALUES OF COEFFICIENTS \n");
 
 2480   for (i = 0; i < mm1; ++i) printf(
"%16.8f",com[i]);
 
 2487void TSpline5::Streamer(
TBuffer &R__b)
 
 2497      TSpline::Streamer(R__b);
 
 2501            fPoly[i].Streamer(R__b);
 
R__EXTERN TSystem * gSystem
 
Fill Area Attributes class.
 
virtual Color_t GetFillColor() const
Return the fill area color.
 
virtual Style_t GetFillStyle() const
Return the fill area style.
 
virtual void SetFillColor(Color_t fcolor)
Set the fill area color.
 
virtual void SetFillStyle(Style_t fstyle)
Set the fill area style.
 
virtual void SaveFillAttributes(std::ostream &out, const char *name, Int_t coldef=1, Int_t stydef=1001)
Save fill attributes as C++ statement(s) on output stream out.
 
virtual Color_t GetLineColor() const
Return the line color.
 
virtual void SetLineStyle(Style_t lstyle)
Set the line style.
 
virtual Width_t GetLineWidth() const
Return the line width.
 
virtual void SetLineWidth(Width_t lwidth)
Set the line width.
 
virtual void SetLineColor(Color_t lcolor)
Set the line color.
 
virtual Style_t GetLineStyle() const
Return the line style.
 
virtual void SaveLineAttributes(std::ostream &out, const char *name, Int_t coldef=1, Int_t stydef=1, Int_t widdef=1)
Save line attributes as C++ statement(s) on output stream out.
 
virtual void SaveMarkerAttributes(std::ostream &out, const char *name, Int_t coldef=1, Int_t stydef=1, Int_t sizdef=1)
Save line attributes as C++ statement(s) on output stream out.
 
virtual Style_t GetMarkerStyle() const
Return the marker style.
 
virtual void SetMarkerColor(Color_t mcolor=1)
Set the marker color.
 
virtual Color_t GetMarkerColor() const
Return the marker color.
 
virtual Size_t GetMarkerSize() const
Return the marker size.
 
virtual void SetMarkerStyle(Style_t mstyle=1)
Set the marker style.
 
virtual void SetMarkerSize(Size_t msize=1)
Set the marker size.
 
virtual void SetLimits(Double_t xmin, Double_t xmax)
 
Buffer base class used for serializing objects.
 
virtual Int_t ReadClassBuffer(const TClass *cl, void *pointer, const TClass *onfile_class=0)=0
 
virtual Version_t ReadVersion(UInt_t *start=0, UInt_t *bcnt=0, const TClass *cl=0)=0
 
virtual Int_t CheckByteCount(UInt_t startpos, UInt_t bcnt, const TClass *clss)=0
 
virtual Int_t WriteClassBuffer(const TClass *cl, void *pointer)=0
 
A TGraph is an object made of two arrays X and Y with npoints each.
 
virtual void Paint(Option_t *chopt="")
Draw this graph with its current attributes.
 
1-D histogram with a float per channel (see TH1 documentation)}
 
TH1 is the base class of all histogram classes in ROOT.
 
virtual void SetDirectory(TDirectory *dir)
By default when an histogram is created, it is added to the list of histogram objects in the current ...
 
virtual Double_t GetBinCenter(Int_t bin) const
Return bin center for 1D histogram.
 
@ kLogX
X-axis in log scale.
 
@ kNoStats
don't draw stats box
 
TAxis * GetXaxis()
Get the behaviour adopted by the object about the statoverflows. See EStatOverflows for more informat...
 
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...
 
virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py)
Execute action corresponding to one event.
 
virtual void Paint(Option_t *option="")
Control routine to paint any kind of histograms.
 
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
Compute distance from point px,py to a line.
 
The TNamed class is the base class for all named ROOT classes.
 
virtual const char * GetTitle() const
Returns title of object.
 
TNamed & operator=(const TNamed &rhs)
TNamed assignment operator.
 
virtual const char * GetName() const
Returns name of object.
 
TObject & operator=(const TObject &rhs)
TObject assignment operator.
 
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
 
virtual void AppendPad(Option_t *option="")
Append graphics object to current pad.
 
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
 
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
 
Class to create third splines to interpolate knots Arbitrary conditions can be introduced for first a...
 
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save primitive as a C++ statement(s) on output stream out.
 
Int_t FindX(Double_t x) const
Find X.
 
static void Test()
Test method for TSpline5.
 
virtual void SaveAs(const char *filename, Option_t *option="") const
Write this spline as a C++ function that can be executed without ROOT the name of the function is the...
 
void SetCond(const char *opt)
Check the boundary conditions.
 
Double_t Derivative(Double_t x) const
Derivative.
 
TSpline3 & operator=(const TSpline3 &)
Assignment operator.
 
Double_t Eval(Double_t x) const
Eval this spline at x.
 
virtual void SetPoint(Int_t i, Double_t x, Double_t y)
Set point number i.
 
void BuildCoeff()
Build coefficients.
 
void GetCoeff(Int_t i, Double_t &x, Double_t &y, Double_t &b, Double_t &c, Double_t &d)
 
virtual void SetPointCoeff(Int_t i, Double_t b, Double_t c, Double_t d)
Set point coefficient number i.
 
Class to create quintic natural splines to interpolate knots Arbitrary conditions can be introduced f...
 
static void Test()
Test method for TSpline5.
 
void GetCoeff(Int_t i, Double_t &x, Double_t &y, Double_t &b, Double_t &c, Double_t &d, Double_t &e, Double_t &f)
 
virtual void SaveAs(const char *filename, Option_t *option="") const
Write this spline as a C++ function that can be executed without ROOT the name of the function is the...
 
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save primitive as a C++ statement(s) on output stream out.
 
virtual void SetPointCoeff(Int_t i, Double_t b, Double_t c, Double_t d, Double_t e, Double_t f)
Set point coefficient number i.
 
Double_t Derivative(Double_t x) const
Derivative.
 
Double_t Eval(Double_t x) const
Eval this spline at x.
 
void BoundaryConditions(const char *opt, Int_t &beg, Int_t &end, const char *&cb1, const char *&ce1, const char *&cb2, const char *&ce2)
Check the boundary conditions and the amount of extra double knots needed.
 
void BuildCoeff()
Algorithm 600, collected algorithms from acm.
 
void SetBoundaries(Double_t b1, Double_t e1, Double_t b2, Double_t e2, const char *cb1, const char *ce1, const char *cb2, const char *ce2)
Set the boundary conditions at double/triple knots.
 
Int_t FindX(Double_t x) const
Find X.
 
virtual void SetPoint(Int_t i, Double_t x, Double_t y)
Set point number i.
 
TSpline5 & operator=(const TSpline5 &)
Assignment operator.
 
Double_t Derivative(Double_t x) const
 
Double_t Eval(Double_t x) const
 
void CopyPoly(TSplinePoly3 const &other)
Utility called by the copy constructors and = operator.
 
TSplinePoly3 & operator=(TSplinePoly3 const &other)
Assignment operator.
 
void CopyPoly(TSplinePoly5 const &other)
Utility called by the copy constructors and = operator.
 
TSplinePoly5 & operator=(TSplinePoly5 const &other)
Assignment operator.
 
Double_t Derivative(Double_t x) const
 
Double_t Eval(Double_t x) const
 
Base class for TSpline knot.
 
void CopyPoly(TSplinePoly const &other)
Utility called by the copy constructors and = operator.
 
TSplinePoly & operator=(TSplinePoly const &other)
Assignment operator.
 
Base class for spline implementation containing the Draw/Paint methods.
 
virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py)
Execute action corresponding to one event.
 
virtual Double_t Eval(Double_t x) const =0
 
virtual void Draw(Option_t *option="")
Draw this function with its current attributes.
 
virtual void GetKnot(Int_t i, Double_t &x, Double_t &y) const =0
 
TSpline & operator=(const TSpline &)
Assignment operator.
 
virtual void Paint(Option_t *option="")
Paint this function with its current attributes.
 
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
Compute distance from point px,py to a spline.
 
virtual ~TSpline()
Destructor.
 
void ToLower()
Change string to lower-case.
 
const char * Data() const
 
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
 
virtual Bool_t AccessPathName(const char *path, EAccessMode mode=kFileExists)
Returns FALSE if one can access a file using the specified access mode.
 
Short_t Max(Short_t a, Short_t b)
 
Int_t FloorNint(Double_t x)
 
Short_t Min(Short_t a, Short_t b)
 
Double_t Log10(Double_t x)