18 Int_t year, month, day;
20 TProfile *hYear = 0, *hMonth = 0, *hDay = 0;
27 Int_t rMonth[3] = { 12, 1, 13 };
28 Int_t rDay[3] = { 31, 1, 32 };
29 Double_t rTemp[3] = { 55.0, -20.0, 35.0 };
31 void HighlightTemp(TVirtualPad *pad, TObject *obj, Int_t xhb, Int_t yhb);
32 void HighlightYear(Int_t xhb);
33 void HighlightMonth(Int_t xhb);
34 void HighlightDay(Int_t xhb);
40 tree =
new TTree(
"tree",
"GHCN-Daily");
44 auto dir = gROOT->GetTutorialDir();
46 dir.ReplaceAll(
"/./",
"/");
47 if (tree->ReadFile(Form(
"%stemperature_Prague.dat",dir.Data())) == 0)
return;
51 rYear[1] = (Int_t)tree->GetLeaf(
"YEAR")->GetValue();
52 tree->GetEntry(tree->GetEntries() - 1);
53 rYear[2] = (Int_t)tree->GetLeaf(
"YEAR")->GetValue();
54 rYear[2] = rYear[2] + 1;
55 rYear[0] = rYear[2] - rYear[1];
58 hYear =
new TProfile(
"hYear",
"temperature (average) by year; year; temp, #circC", rYear[0], rYear[1], rYear[2]);
59 tree->Draw(
"T:YEAR>>hYear",
"",
"goff");
60 hYear->SetMaximum(hYear->GetMean(2)*1.50);
61 hYear->SetMinimum(hYear->GetMean(2)*0.50);
62 hYear->GetXaxis()->SetNdivisions(410);
63 hYear->GetYaxis()->SetNdivisions(309);
64 hYear->SetLineColor(kGray+2);
65 hYear->SetMarkerStyle(8);
66 hYear->SetMarkerSize(0.75);
69 gStyle->SetOptStat(
"em");
70 Canvas =
new TCanvas(
"Canvas",
"Canvas", 0, 0, 700, 900);
71 Canvas->Divide(1, 3, 0.001, 0.001);
73 hYear->Draw(
"HIST, LP");
77 hYear->SetHighlight();
78 Canvas->HighlightConnect(
"HighlightTemp(TVirtualPad*,TObject*,Int_t,Int_t)");
82 void HighlightTemp(TVirtualPad *pad, TObject *obj, Int_t xhb, Int_t yhb)
84 if (obj == hYear) HighlightYear(xhb);
85 if (obj == hMonth) HighlightMonth(xhb);
86 if (obj == hDay) HighlightDay(xhb);
91 void HighlightYear(Int_t xhb)
94 hMonth =
new TProfile(
"hMonth",
"; month; temp, #circC", rMonth[0], rMonth[1], rMonth[2]);
95 hMonth->SetMinimum(rTemp[1]);
96 hMonth->SetMaximum(rTemp[2]);
97 hMonth->GetXaxis()->SetNdivisions(112);
98 hMonth->GetXaxis()->CenterLabels();
99 hMonth->GetYaxis()->SetNdivisions(410);
100 hMonth->SetFillColor(kGray+1);
101 hMonth->SetMarkerStyle(kFullDotMedium);
102 Canvas->cd(2)->SetGridx();
103 hMonth->Draw(
"HIST, CP");
105 hMonth->SetHighlight();
108 year = xhb - 1 + rYear[1];
109 tree->Draw(
"T:MONTH>>hMonth", TString::Format(
"YEAR==%d", year),
"goff");
110 hMonth->SetTitle(TString::Format(
"temperature by month (year = %d)", year));
111 Canvas->GetPad(2)->Modified();
113 HighlightMonth(customhb);
117 void HighlightMonth(Int_t xhb)
120 hDay =
new TProfile(
"hDay",
"; day; temp, #circC", rDay[0], rDay[1], rDay[2]);
121 hDay->SetMinimum(rTemp[1]);
122 hDay->SetMaximum(rTemp[2]);
123 hDay->GetYaxis()->SetNdivisions(410);
124 hDay->SetFillColor(kGray);
125 hDay->SetMarkerStyle(kFullDotMedium);
127 hDay->Draw(
"HIST, CP");
129 hDay->SetHighlight();
132 if (xhb != customhb) month = xhb;
133 tree->Draw(
"T:DAY>>hDay", TString::Format(
"MONTH==%d && YEAR==%d", month, year),
"goff");
134 hDay->SetTitle(TString::Format(
"temperature by day (month = %02d, year = %d)", month, year));
135 Canvas->GetPad(3)->Modified();
137 HighlightDay(customhb);
141 void HighlightDay(Int_t xhb)
145 info->SetTextSizePixels(25);
151 if (xhb != customhb) day = xhb;
152 TString temp = TString::Format(
" %5.1f #circC", hDay->GetBinContent(day));
153 if (hDay->GetBinEntries(day) == 0) temp =
" ";
155 if (month>0) m = TString::Format(
"-%02d",month);
157 if (day>0) d = TString::Format(
"-%02d",day);
158 info->SetText(2.0, hDay->GetMinimum()*0.8, TString::Format(
"%4d%s%s%s", year, m.Data(), d.Data(), temp.Data()));
159 Canvas->GetPad(3)->Modified();