ROOT
master
Reference Guide
Loading...
Searching...
No Matches
splines_test.C File Reference
Tutorials
»
Visualisation 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:561
gPad
#define gPad
Definition
TVirtualPad.h:308
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:233
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:292
TSpline3
Class to create third splines to interpolate knots Arbitrary conditions can be introduced for first a...
Definition
TSpline.h:182
TSpline5
Class to create quintic natural splines to interpolate knots Arbitrary conditions can be introduced f...
Definition
TSpline.h:238
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:437
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:725
Author
Federico Carminati
Definition in file
splines_test.C
.
tutorials
visualisation
graphs
splines_test.C
ROOT master - Reference Guide Generated on Wed Dec 18 2024 10:11:03 (GVA Time) using Doxygen 1.9.8