Logo ROOT  
Reference Guide
Loading...
Searching...
No Matches
timeonaxis3.C File Reference

Detailed Description

View in nbviewer Open in SWAN
This example compares what the system time function gmtime and localtime give with what gives TGaxis.

It can be used as referenced test to check if TGaxis is working properly. The original code was developed by Philippe Gras (CEA Saclay. IRFU/SEDI)

#include "TAxis.h"
#include "TGaxis.h"
#include "TCanvas.h"
#include "TString.h"
#include "TLine.h"
#include "TLatex.h"
#include <ctime>
#include <cstdio>
TString stime(time_t *t, bool utc = false, bool display_time_zone = true)
{
struct tm *tt;
if (utc)
tt = gmtime(t);
else
tt = localtime(t);
char buf[256];
if (display_time_zone)
strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S %Z", tt);
else
strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", tt);
return TString(buf);
}
void timeonaxis3()
{
double f = 1.8;
auto c = new TCanvas;
TLatex tex1;
tex1.SetNDC();
tex1.SetTextFont(102);
tex1.SetTextSize(0.055 * f);
TLatex tex3;
tex3.SetNDC();
tex3.SetTextFont(102);
tex3.SetTextSize(0.07 * f);
tex3.SetTextColor(kBlue + 2);
TLatex tex2;
tex2.SetNDC();
tex2.SetTextFont(102);
tex2.SetTextSize(0.07 * f);
tex2.SetTextColor(kOrange + 3);
time_t offset[] = {0, 0, 1325376000, 1341100800};
time_t t[] = {1331150400, 1336417200, 0, 36000};
c->SetTopMargin(0);
c->SetBottomMargin(0);
c->SetLeftMargin(0);
c->SetRightMargin(0);
c->Divide(2, 4, -1, -1);
l.DrawLine(0.5, 0, 0.5, 1.);
for (int i = 0; i < 4; ++i) {
for (int gmt = 0; gmt < 2; ++gmt) {
const char *opt = (gmt ? "gmt" : "local");
TVirtualPad *p = c->cd(2 * i + gmt + 1);
p->SetTopMargin(0);
p->SetFillStyle(4000);
TGaxis *ga = new TGaxis(.4, .25, 5., .25, t[i], t[i] + 1, 1, "t");
ga->SetTimeFormat("TGaxis label: #color[2]{%Y-%m-%d %H:%M:%S}");
ga->SetLabelFont(102);
ga->SetLabelColor(kBlue + 2);
ga->SetTimeOffset(offset[i], opt);
ga->SetLabelOffset(0.04 * f);
ga->SetLabelSize(0.07 * f);
ga->SetLineColor(0);
ga->Draw();
// Get offset string of axis time format: there is not accessor
// to time format in TGaxis.
// Assumes TAxis use the same format.
TAxis a(10, 0, 1600000000);
a.SetTimeOffset(offset[i], opt);
const char *offsettimeformat = a.GetTimeFormat();
char buf[256];
if (offset[i] < t[i]) {
snprintf(buf, 256, "#splitline{%s, %s}{offset: %ld, option %s}", stime(t + i).Data(),
stime(t + i, true).Data(), offset[i], opt);
} else {
int h = t[i] / 3600;
int m = (t[i] - 3600 * h) / 60;
int s = (t[i] - h * 3600 - m * 60);
snprintf(buf, 256, "#splitline{%d h %d m %d s}{offset: %s, option %s}", h, m, s,
stime(offset + i, gmt).Data(), opt);
}
tex1.DrawLatex(.01, .75, buf);
tex2.DrawLatex(.01, .50, offsettimeformat);
time_t t_ = t[i] + offset[i];
snprintf(buf, 256, "Expecting: #color[2]{%s}", stime(&t_, gmt, false).Data());
tex3.DrawLatex(.01, .24, buf);
if (i > 0)
l.DrawLine(0, 0.95, 1, 0.95);
}
}
}
#define f(i)
Definition RSha256.hxx:104
#define c(i)
Definition RSha256.hxx:101
#define a(i)
Definition RSha256.hxx:99
#define h(i)
Definition RSha256.hxx:106
@ kOrange
Definition Rtypes.h:68
@ kBlue
Definition Rtypes.h:67
#define snprintf
Definition civetweb.c:1579
virtual void SetFillStyle(Style_t fstyle)
Set the fill area style.
Definition TAttFill.h:42
virtual void SetLineColor(Color_t lcolor)
Set the line color.
Definition TAttLine.h:44
virtual void SetBottomMargin(Float_t bottommargin)
Set Pad bottom margin in fraction of the pad height.
Definition TAttPad.cxx:98
virtual void SetLeftMargin(Float_t leftmargin)
Set Pad left margin in fraction of the pad width.
Definition TAttPad.cxx:108
virtual void SetRightMargin(Float_t rightmargin)
Set Pad right margin in fraction of the pad width.
Definition TAttPad.cxx:118
virtual void SetTopMargin(Float_t topmargin)
Set Pad top margin in fraction of the pad height.
Definition TAttPad.cxx:128
virtual void SetTextColor(Color_t tcolor=1)
Set the text color.
Definition TAttText.h:50
virtual void SetTextFont(Font_t tfont=62)
Set the text font.
Definition TAttText.h:52
virtual void SetTextSize(Float_t tsize=1)
Set the text size.
Definition TAttText.h:53
Class to manage histogram axis.
Definition TAxis.h:32
The Canvas class.
Definition TCanvas.h:23
void SetTimeFormat(const char *tformat)
void SetLabelFont(Int_t labelfont)
Definition TGaxis.h:107
void SetLabelOffset(Float_t labeloffset)
Definition TGaxis.h:108
void SetTimeOffset(Double_t toffset, Option_t *option="local")
void SetLabelColor(Int_t labelcolor)
Definition TGaxis.h:106
void SetLabelSize(Float_t labelsize)
Definition TGaxis.h:109
TLatex * DrawLatex(Double_t x, Double_t y, const char *text)
Use the TLine constructor to create a simple line.
Definition TLine.h:22
virtual void Draw(Option_t *option="")
Default Draw method for all objects.
Definition TObject.cxx:293
Basic string class.
Definition TString.h:138
virtual void SetNDC(Bool_t isNDC=kTRUE)
TVirtualPad is an abstract base class for the Pad and Canvas classes.
Definition TVirtualPad.h:51
TMarker m
Definition textangle.C:8
TLine l
Definition textangle.C:4
auto * tt
Definition textangle.C:16
Authors
Philippe Gras, Bertrand Bellenot, Olivier Couet

Definition in file timeonaxis3.C.