Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
hist039_TH2Poly_usa.C
Go to the documentation of this file.
1/// \file
2/// \ingroup tutorial_hist
3/// \notebook -js
4/// This tutorial illustrates how to create an histogram with polygonal
5/// bins (TH2Poly), fill it and draw it using the `col` option. The initial data
6/// are stored in TMultiGraphs. They represent the USA map. Such histograms can
7/// be rendered in 3D using the option `legogl`.
8///
9/// The initial data have been downloaded from: http://www.maproom.psu.edu/dcw/
10/// This database was developed in 1991/1992 and national boundaries reflect
11/// political reality as of that time.
12///
13/// \macro_code
14/// \macro_image
15///
16/// \date February 2024
17/// \author Olivier Couet
18
20{
21 Int_t i, bin;
22 const Int_t nx = 48;
23 const char *states[nx] = {
24 "alabama", "arizona", "arkansas", "california", "colorado", "connecticut", "delaware",
25 "florida", "georgia", "idaho", "illinois", "indiana", "iowa", "kansas",
26 "kentucky", "louisiana", "maine", "maryland", "massachusetts", "michigan", "minnesota",
27 "mississippi", "missouri", "montana", "nebraska", "nevada", "new_hampshire", "new_jersey",
28 "new_mexico", "new_york", "north_carolina", "north_dakota", "ohio", "oklahoma", "oregon",
29 "pennsylvania", "rhode_island", "south_carolina", "south_dakota", "tennessee", "texas", "utah",
30 "vermont", "virginia", "washington", "west_virginia", "wisconsin", "wyoming"};
31 Double_t pop[nx] = {4708708, 6595778, 2889450, 36961664, 5024748, 3518288, 885122, 18537969, 9829211, 1545801,
32 12910409, 6423113, 3007856, 2818747, 4314113, 4492076, 1318301, 5699478, 6593587, 9969727,
33 5266214, 2951996, 5987580, 974989, 1796619, 2643085, 1324575, 8707739, 2009671, 19541453,
34 9380884, 646844, 11542645, 3687050, 3825657, 12604767, 1053209, 4561242, 812383, 6296254,
35 24782302, 2784572, 621760, 7882590, 6664195, 1819777, 5654774, 544270};
36
37 TCanvas *usa = new TCanvas("USA", "USA");
38 usa->ToggleEventStatus();
39 Double_t lon1 = -130;
40 Double_t lon2 = -65;
41 Double_t lat1 = 24;
42 Double_t lat2 = 50;
43 TH2Poly *p = new TH2Poly("Lower48", "Lower 48 Population (2009);Latitude;Longitude", lon1, lon2, lat1, lat2);
44
46 TFile *f = TFile::Open("http://root.cern/files/usa.root", "CACHEREAD");
47
48 if (!f) {
49 printf("Cannot access usa.root. Is internet working ?\n");
50 return;
51 }
52
53 // Define the TH2Poly bins.
54 TMultiGraph *mg;
55 TKey *key;
56 TIter nextkey(gDirectory->GetListOfKeys());
57 while ((key = (TKey *)nextkey())) {
58 TObject *obj = key->ReadObj();
59 if (obj->InheritsFrom("TMultiGraph")) {
60 mg = (TMultiGraph *)obj;
61 bin = p->AddBin(mg);
62 }
63 }
64
65 // Fill TH2Poly, with capital letters for the states names
66 for (i = 0; i < nx; i++)
67 p->Fill(states[i], pop[i]);
68
70 p->Draw("colz textn");
71
72 // Add the reference for the population
73 TLatex pupulationRef(-128, 27, "#scale[.55]{#splitline{Source:}{http://eadiv.state.wy.us/pop/st-09est.htm}}");
74 pupulationRef.DrawClone();
75}
#define f(i)
Definition RSha256.hxx:104
int Int_t
Definition RtypesCore.h:45
double Double_t
Definition RtypesCore.h:59
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
#define gDirectory
Definition TDirectory.h:384
winID h TVirtualViewer3D TVirtualGLPainter p
R__EXTERN TStyle * gStyle
Definition TStyle.h:442
The Canvas class.
Definition TCanvas.h:23
A ROOT file is an on-disk file, usually with extension .root, that stores objects in a file-system-li...
Definition TFile.h:131
static TFile * Open(const char *name, Option_t *option="", const char *ftitle="", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault, Int_t netopt=0)
Create / open a file.
Definition TFile.cxx:4130
static Bool_t SetCacheFileDir(std::string_view cacheDir, Bool_t operateDisconnected=kTRUE, Bool_t forceCacheread=kFALSE)
Sets the directory where to locally stage/cache remote files.
Definition TFile.cxx:4673
2D Histogram with Polygonal Bins
Definition TH2Poly.h:66
Book space in a file, create I/O buffers, to fill them, (un)compress them.
Definition TKey.h:28
virtual TObject * ReadObj()
To read a TObject* from the file.
Definition TKey.cxx:758
To draw Mathematical Formula.
Definition TLatex.h:18
A TMultiGraph is a collection of TGraph (or derived) objects.
Definition TMultiGraph.h:34
Mother of all ROOT objects.
Definition TObject.h:41
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
Definition TObject.cxx:542
void SetOptStat(Int_t stat=1)
The type of information printed in the histogram statistics box can be selected via the parameter mod...
Definition TStyle.cxx:1642