ROOT
v6-30
Reference Guide
Loading...
Searching...
No Matches
splines_test.C File Reference
Tutorials
»
Graphs tutorials
Detailed Description
Examples of use of the spline classes.
void
splines_test(
Int_t
np
=23,
Double_t
a
=-0.5,
Double_t
b
=31)
{
// array of points
Double_t
*xx=0, *yy=0;
TSpline3
*spline3=0;
TSpline5
*spline5=0;
TLine
*line5, *line3;
TText
*text5, *text3, *textn;
char
text
[20];
const
Double_t
power=0.75;
// Define the original function
TF1
*
f
=
new
TF1
(
"f"
,
"sin(x)*sin(x/10)"
,
a
-0.05*(
b
-
a
),
b
+0.05*(
b
-
a
));
// Draw function
f
->Draw(
"lc"
);
// Create text and legend
Double_t
xx1, yy1, xx2, yy2, dx, dy;
gPad
->Update();
gPad
->GetRangeAxis(xx1,yy1,xx2,yy2);
dx = xx2-xx1;
dy = yy2-yy1;
line5=
new
TLine
(xx1+dx*0.3,yy1+dy*1.02,
xx1+dx*0.38,yy1+dy*1.02);
line5->
SetLineColor
(
kRed
);
line5->
SetLineWidth
(2);
text5 =
new
TText
(xx1+dx*0.4,
yy1+dy*1.03,
"quintic spline"
);
text5->
SetTextAlign
(12);
text5->
SetTextSize
(0.04);
line3=
new
TLine
(xx1+dx*0.67,yy1+dy*1.02,
xx1+dx*0.75,yy1+dy*1.02);
line3->
SetLineColor
(
kGreen
);
line3->
SetLineWidth
(2);
text3 =
new
TText
(xx1+dx*0.77,
yy1+dy*1.03,
"third spline"
);
text3->
SetTextAlign
(12);
text3->
SetTextSize
(0.04);
textn =
new
TText
(xx1+dx*0.8,yy1+dy*0.91,
" "
);
textn->
SetTextAlign
(12);
textn->
SetTextSize
(0.04);
textn->
Draw
();
// Draw legenda
line5->
Draw
();
text5->
Draw
();
line3->
Draw
();
text3->
Draw
();
for
(
Int_t
nnp=2; nnp<=
np
; ++nnp) {
// Calculate the knots
if
(xx)
delete
[] xx;
xx =
new
Double_t
[nnp];
if
(yy)
delete
[] yy;
yy =
new
Double_t
[nnp];
for
(
Int_t
i=0; i<nnp; ++i) {
xx[i]=
a
+(
b
-
a
)*
TMath::Power
(i/
Double_t
(nnp-1),power);
yy[i]=
f
->Eval(xx[i]);
}
// Evaluate fifth spline coefficients
Double_t
eps=(
b
-
a
)*1.e-5;
if
(spline5)
delete
spline5;
spline5 =
new
TSpline5
(
"Test"
,xx,
f
,nnp,
"b1e1b2e2"
,
f
->Derivative(
a
),
f
->Derivative(
b
),
(
f
->Derivative(
a
+eps)-
f
->Derivative(
a
))/eps,
(
f
->Derivative(
b
)-
f
->Derivative(
b
-eps))/eps);
spline5->
SetLineColor
(
kRed
);
spline5->
SetLineWidth
(3);
// Draw the quintic spline
spline5->
Draw
(
"lcsame"
);
// Evaluate third spline coefficients
if
(spline3)
delete
spline3;
spline3 =
new
TSpline3
(
"Test"
,xx,yy,nnp,
"b1e1"
,
f
->Derivative(
a
),
f
->Derivative(
b
));
spline3->
SetLineColor
(
kGreen
);
spline3->
SetLineWidth
(3);
spline3->
SetMarkerColor
(
kBlue
);
spline3->
SetMarkerStyle
(20);
spline3->
SetMarkerSize
(1.5);
// Draw the third spline
spline3->
Draw
(
"lcpsame"
);
sprintf(
text
,
"%3d knots"
,nnp);
textn->
SetTitle
(
text
);
gPad
->Update();
//
gSystem
->
Sleep
(500);
}
}
b
#define b(i)
Definition
RSha256.hxx:100
f
#define f(i)
Definition
RSha256.hxx:104
a
#define a(i)
Definition
RSha256.hxx:99
Int_t
int Int_t
Definition
RtypesCore.h:45
Double_t
double Double_t
Definition
RtypesCore.h:59
kRed
@ kRed
Definition
Rtypes.h:66
kGreen
@ kGreen
Definition
Rtypes.h:66
kBlue
@ kBlue
Definition
Rtypes.h:66
np
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
Definition
TGWin32VirtualXProxy.cxx:222
text
Option_t Option_t TPoint TPoint const char text
Definition
TGWin32VirtualXProxy.cxx:68
gSystem
R__EXTERN TSystem * gSystem
Definition
TSystem.h:560
gPad
#define gPad
Definition
TVirtualPad.h:305
TAttLine::SetLineWidth
virtual void SetLineWidth(Width_t lwidth)
Set the line width.
Definition
TAttLine.h:43
TAttLine::SetLineColor
virtual void SetLineColor(Color_t lcolor)
Set the line color.
Definition
TAttLine.h:40
TAttMarker::SetMarkerColor
virtual void SetMarkerColor(Color_t mcolor=1)
Set the marker color.
Definition
TAttMarker.h:38
TAttMarker::SetMarkerStyle
virtual void SetMarkerStyle(Style_t mstyle=1)
Set the marker style.
Definition
TAttMarker.h:40
TAttMarker::SetMarkerSize
virtual void SetMarkerSize(Size_t msize=1)
Set the marker size.
Definition
TAttMarker.h:45
TAttText::SetTextAlign
virtual void SetTextAlign(Short_t align=11)
Set the text alignment.
Definition
TAttText.h:42
TAttText::SetTextSize
virtual void SetTextSize(Float_t tsize=1)
Set the text size.
Definition
TAttText.h:47
TF1
1-Dim function class
Definition
TF1.h:214
TLine
Use the TLine constructor to create a simple line.
Definition
TLine.h:22
TNamed::SetTitle
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
Definition
TNamed.cxx:164
TObject::Draw
virtual void Draw(Option_t *option="")
Default Draw method for all objects.
Definition
TObject.cxx:274
TSpline3
Class to create third splines to interpolate knots Arbitrary conditions can be introduced for first a...
Definition
TSpline.h:201
TSpline5
Class to create quintic natural splines to interpolate knots Arbitrary conditions can be introduced f...
Definition
TSpline.h:258
TSpline::Draw
void Draw(Option_t *option="") override
Draw this function with its current attributes.
Definition
TSpline.cxx:101
TSystem::Sleep
virtual void Sleep(UInt_t milliSec)
Sleep milliSec milli seconds.
Definition
TSystem.cxx:424
TText
Base class for several text objects.
Definition
TText.h:22
TMath::Power
LongDouble_t Power(LongDouble_t x, LongDouble_t y)
Returns x raised to the power y.
Definition
TMath.h:721
Author
Federico Carminati
Definition in file
splines_test.C
.
tutorials
graphs
splines_test.C
ROOT v6-30 - Reference Guide Generated on Thu Dec 12 2024 06:13:02 (GVA Time) using Doxygen 1.9.8