Logo ROOT   6.08/07
Reference Guide
th2polyUSA.C
Go to the documentation of this file.
1 /// \file
2 /// \ingroup tutorial_hist
3 /// This tutorial illustrates how to create an histogram with polygonal
4 /// bins (TH2Poly), fill it and draw it using GL. The initial data are stored
5 /// in TMultiGraphs. They represent the USA.
6 ///
7 /// The initial data have been downloaded from: http://www.maproom.psu.edu/dcw/
8 /// This database was developed in 1991/1992 and national boundaries reflect
9 /// political reality as of that time.
10 ///
11 /// \macro_code
12 /// \macro_image(nobatch)
13 ///
14 /// \author Olivier Couet
15 
16 void th2polyUSA()
17 {
18  Int_t i, bin;
19  const Int_t nx = 48;
20  const char *states [nx] = {
21  "alabama", "arizona", "arkansas", "california",
22  "colorado", "connecticut", "delaware", "florida",
23  "georgia", "idaho", "illinois", "indiana",
24  "iowa", "kansas", "kentucky", "louisiana",
25  "maine", "maryland", "massachusetts", "michigan",
26  "minnesota", "mississippi", "missouri", "montana",
27  "nebraska", "nevada", "new_hampshire", "new_jersey",
28  "new_mexico", "new_york", "north_carolina", "north_dakota",
29  "ohio", "oklahoma", "oregon", "pennsylvania",
30  "rhode_island", "south_carolina", "south_dakota", "tennessee",
31  "texas", "utah", "vermont", "virginia",
32  "washington", "west_virginia", "wisconsin", "wyoming"
33  };
34  Double_t pop[nx] = {
35  4708708, 6595778, 2889450, 36961664, 5024748, 3518288, 885122, 18537969,
36  9829211, 1545801, 12910409, 6423113, 3007856, 2818747, 4314113, 4492076,
37  1318301, 5699478, 6593587, 9969727, 5266214, 2951996, 5987580, 974989,
38  1796619, 2643085, 1324575, 8707739, 2009671, 19541453, 9380884, 646844,
39  11542645, 3687050, 3825657, 12604767, 1053209, 4561242, 812383, 6296254,
40  24782302, 2784572, 621760, 7882590, 6664195, 1819777, 5654774, 544270
41  };
42 
44  TCanvas *usa = new TCanvas("USA", "USA");
45  usa->ToggleEventStatus();
46  Double_t lon1 = -130;
47  Double_t lon2 = -65;
48  Double_t lat1 = 24;
49  Double_t lat2 = 50;
50  TH2Poly *p = new TH2Poly("USA","USA Population",lon1,lon2,lat1,lat2);
51 
52  TFile *f;
53  f = TFile::Open("http://root.cern.ch/files/usa.root");
54 
55  if (!f) {
56  printf("Cannot access usa.root. Is internet working ?\n");
57  return;
58  }
59 
60  // Define the TH2Poly bins.
61  TMultiGraph *mg;
62  TKey *key;
63  TIter nextkey(gDirectory->GetListOfKeys());
64  while ((key = (TKey*)nextkey())) {
65  TObject *obj = key->ReadObj();
66  if (obj->InheritsFrom("TMultiGraph")) {
67  mg = (TMultiGraph*)obj;
68  bin = p->AddBin(mg);
69  }
70  }
71 
72  // Fill TH2Poly.
73  for (i=0; i<nx; i++) p->Fill(states[i], pop[i]);
74 
75  gStyle->SetOptStat(11);
76  p->Draw("legogl");
77 }
const int nx
Definition: kalman.C:16
virtual void ToggleEventStatus()
Toggle event statusbar.
Definition: TCanvas.cxx:2125
R__EXTERN TStyle * gStyle
Definition: TStyle.h:418
A ROOT file is a suite of consecutive data records (TKey instances) with a well defined format...
Definition: TFile.h:50
A TMultiGraph is a collection of TGraph (or derived) objects.
Definition: TMultiGraph.h:37
int Int_t
Definition: RtypesCore.h:41
static TFile * Open(const char *name, Option_t *option="", const char *ftitle="", Int_t compress=1, Int_t netopt=0)
Create / open a file.
Definition: TFile.cxx:3907
Int_t AddBin(TObject *poly)
Adds a new bin to the histogram.
Definition: TH2Poly.cxx:193
Book space in a file, create I/O buffers, to fill them, (un)compress them.
Definition: TKey.h:30
void SetCanvasPreferGL(Bool_t prefer=kTRUE)
Definition: TStyle.h:332
virtual void Draw(Option_t *option="")
Draw this histogram with options.
Definition: TH1.cxx:2851
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
Definition: TObject.cxx:488
The Canvas class.
Definition: TCanvas.h:41
double f(double x)
double Double_t
Definition: RtypesCore.h:55
Mother of all ROOT objects.
Definition: TObject.h:37
virtual TObject * ReadObj()
To read a TObject* from the file.
Definition: TKey.cxx:730
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:1257
#define gDirectory
Definition: TDirectory.h:221
Int_t Fill(Double_t x, Double_t y)
Increment the bin containing (x,y) by 1.
Definition: TH2Poly.cxx:580
2D Histogram with Polygonal Bins
Definition: TH2Poly.h:68