Logo ROOT  
Reference Guide
 
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
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];
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);
}
{
double f = 1.8;
auto c = new TCanvas;
tex1.SetNDC();
tex1.SetTextFont(102);
tex1.SetTextSize(0.055 * f);
tex3.SetNDC();
tex3.SetTextFont(102);
tex3.SetTextSize(0.07 * f);
tex3.SetTextColor(kBlue + 2);
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->SetBottomMargin(0);
p->SetLeftMargin(0);
p->SetRightMargin(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:67
@ kBlue
Definition Rtypes.h:66
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
winID h TVirtualViewer3D TVirtualGLPainter p
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 winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h offset
#define snprintf
Definition civetweb.c:1540
Class to manage histogram axis.
Definition TAxis.h:32
The Canvas class.
Definition TCanvas.h:23
The axis painter class.
Definition TGaxis.h:26
To draw Mathematical Formula.
Definition TLatex.h:18
Use the TLine constructor to create a simple line.
Definition TLine.h:22
virtual TLine * DrawLine(Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Draw this line with new coordinates.
Definition TLine.cxx:103
Basic string class.
Definition TString.h:139
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.