This is slight modification of ntuple1.C example.
A canvas with sub-pads is produced, stored to an sql data base and read back To run this macro, you need the hsimple.root file, produced by the hsimple.C macro
const char* dbname = "mysql://host.domain/test";
const char* username = "user";
const char* userpass = "pass";
void sqlcanvas()
{
canvas_write();
canvas_read();
}
void canvas_write()
{
delete gROOT->GetListOfFiles()->FindObject(
"hsimple.root");
delete gROOT->GetListOfCanvases()->FindObject(
"c1");
TPad *pad1 =
new TPad(
"pad1",
"This is pad1",0.02,0.52,0.48,0.98,21);
TPad *pad2 =
new TPad(
"pad2",
"This is pad2",0.52,0.52,0.98,0.98,21);
TPad *pad3 =
new TPad(
"pad3",
"This is pad3",0.02,0.02,0.48,0.48,21);
TPad *pad4 =
new TPad(
"pad4",
"This is pad4",0.52,0.02,0.98,0.48,1);
ntuple->
Draw(
"3*px+2",
"px**2+py**2>1");
ntuple->
Draw(
"2*px+2",
"pz>2",
"same");
ntuple->
Draw(
"1.3*px+2",
"(px^2+py^2>4) && py>0",
"same");
ntuple->
Draw(
"pz:px>>hprofs",
"",
"goffprofs");
ntuple->
Draw(
"py:px",
"pz>1");
ntuple->
Draw(
"py:px",
"pz<1",
"same");
ntuple->
Draw(
"pz:py:px",
"(pz<10 && pz>6)+(pz<4 && pz>3)");
ntuple->
Draw(
"pz:py:px",
"pz<6 && pz>4",
"same");
ntuple->
Draw(
"pz:py:px",
"pz<4 && pz>3",
"same");
l4->
AddText(
"You can interactively rotate this view in 2 ways:");
l4->
AddText(
" - With the RotateCube in clicking in this pad");
l4->
AddText(
" - Selecting View with x3d in the View menu");
if (fsql1->
IsZombie()) {
delete fsql1;
return; }
delete fsql1;
}
void canvas_read()
{
if (f2->
IsZombie()) {
delete f2;
return; }
delete f2;
}
R__EXTERN TBenchmark * gBenchmark
R__EXTERN TStyle * gStyle
virtual void SetFillColor(Color_t fcolor)
Set the fill area color.
virtual void SetFillStyle(Style_t fstyle)
Set the fill area style.
virtual void SetLineWidth(Width_t lwidth)
Set the line width.
virtual void SetLineColor(Color_t lcolor)
Set the line color.
virtual void SetMarkerColor(Color_t mcolor=1)
Set the marker color.
virtual void SetMarkerStyle(Style_t mstyle=1)
Set the marker style.
virtual void SetMarkerSize(Size_t msize=1)
Set the marker size.
virtual void SetTextAlign(Short_t align=11)
Set the text alignment.
virtual void Start(const char *name)
Starts Benchmark with the specified name.
virtual void Show(const char *name)
Stops Benchmark name and Prints results.
void Draw(Option_t *option="") override
Draw a canvas.
TObject * Get(const char *namecycle) override
Return pointer to object identified by namecycle.
A ROOT file is an on-disk file, usually with extension .root, that stores objects in a file-system-li...
void ls(Option_t *option="") const override
List file contents.
virtual TFitResultPtr Fit(const char *formula, Option_t *option="", Option_t *goption="", Double_t xmin=0, Double_t xmax=0)
Fit histogram with function fname.
virtual TF1 * GetFunction(const char *name) const
Return pointer to function with name.
A simple TTree restricted to a list of float variables only.
R__ALWAYS_INLINE Bool_t IsZombie() const
The most important graphics class in the ROOT system.
void SetGrid(Int_t valuex=1, Int_t valuey=1) override
void SetLogy(Int_t value=1) override
Set Lin/Log scale for Y.
void RedrawAxis(Option_t *option="") override
Redraw the frame axis.
TVirtualPad * cd(Int_t subpadnumber=0) override
Set Current pad.
TFrame * GetFrame() override
Get frame.
void Draw(Option_t *option="") override
Draw Pad in Current pad (re-parent pad if necessary).
A Pave (see TPave) with text, lines or/and boxes inside.
virtual TText * AddText(Double_t x1, Double_t y1, const char *label)
Add a new Text line to this pavetext at given coordinates.
void Draw(Option_t *option="") override
Draw this pavetext with its current attributes.
Access an SQL db via the TFile interface.
void SetStatH(Float_t h=0.1)
void SetStatColor(Color_t color=19)
void SetStatW(Float_t w=0.19)
void Draw(Option_t *opt) override
Default Draw method for all objects.
virtual void SetBorderSize(Short_t bordersize)