26void hist040_TH2Poly_europe(
Int_t npoints = 500000)
33 Double_t R = (lat2 - lat1) / (lon2 - lon1);
49 const char *countries[nx] = {
50 "france",
"spain",
"sweden",
"germany",
"finland",
"norway",
"poland",
"italy",
51 "yugoslavia",
"united_kingdom",
"romania",
"belarus",
"greece",
"czechoslovakia",
"bulgaria",
"iceland",
52 "hungary",
"portugal",
"austria",
"ireland",
"lithuania",
"latvia",
"estonia",
"denmark",
53 "netherlands",
"switzerland",
"moldova",
"belgium",
"albania",
"cyprus",
"luxembourg",
"andorra",
54 "malta",
"liechtenstein",
"san_marino",
"monaco"};
55 Float_t surfaces[nx] = {547030, 505580, 449964, 357021, 338145, 324220, 312685, 301230, 255438,
56 244820, 237500, 207600, 131940, 127711, 110910, 103000, 93030, 89242,
57 83870, 70280, 65200, 64589, 45226, 43094, 41526, 41290, 33843,
58 30528, 28748, 9250, 2586, 468, 316, 160, 61, 2};
60 TH1F *
h =
new TH1F(
"h",
"Countries surfaces (in km^{2})", 3, 0, 3);
61 for (i = 0; i < nx; i++)
62 h->Fill(countries[i], surfaces[i]);
67 f =
TFile::Open(
"http://root.cern/files/europe.root",
"cacheread");
70 printf(
"Cannot access europe.root. Is internet working ?\n");
75 new TH2Poly(
"Europe",
"Europe (bin contents are normalized to the surfaces in km^{2})", lon1, lon2, lat1, lat2);
85 while ((key = (
TKey *)nextkey())) {
103 for (i = 0; i < npoints; i++) {
104 longitude =
r.Uniform(lon1, lon2);
105 latitude =
r.Uniform(lat1, lat2);
118 for (j = 0; j < nx; j++) {
119 for (i = 0; i < nbins; i++) {
120 if (strstr(countries[j], p->
GetBinName(i + 1))) {
128 Double_t scale = surfaces[0] / maximum;
129 for (i = 0; i < nbins; i++)
136 c1->SetRightMargin(0.047);
141 h->SetLineColor(
kRed - 3);
143 h->SetMarkerStyle(20);
145 h->SetMarkerSize(0.8);
147 h->GetXaxis()->SetLabelFont(42);
148 h->GetXaxis()->SetLabelSize(0.03);
149 h->GetYaxis()->SetLabelFont(42);
153 for (i = 0; i < nx; i++)
160 leg->SetTextFont(42);
161 leg->SetTextSize(0.025);
162 leg->AddEntry(
h,
"Real countries surfaces from Wikipedia (in km^{2})",
"lp");
163 leg->AddEntry(h2,
"Countries surfaces from TH2Poly (with errors)",
"lp");
170 printf(
"THPoly Europe surface estimation error wrt wikipedia = %f per cent when using %d points\n", 100 * error,
#define R(a, b, c, d, e, f, g, h, i)
int Int_t
Signed integer 4 bytes (int).
double Double_t
Double 8 bytes.
float Float_t
Float 4 bytes (float).
externTBenchmark * gBenchmark
virtual void SetNdivisions(Int_t n=510, Bool_t optim=kTRUE)
Set the number of divisions for this axis.
virtual void SetMarkerStyle(Style_t mstyle=1)
Set the marker style.
virtual void SetMarkerSize(Size_t msize=1)
Set the marker size.
virtual void ToggleEventStatus()
Toggle event statusbar.
A file, usually with extension .root, that stores data and code in the form of serialized objects in ...
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.
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.
1-D histogram with a float per channel (see TH1 documentation)
void Reset(Option_t *option="") override
Reset.
virtual Double_t GetBinError(Int_t bin) const
Return value of error associated to bin number bin.
virtual Double_t GetMaximum(Double_t maxval=FLT_MAX) const
Return maximum value smaller than maxval of bins in the range, unless the value has been overridden b...
virtual void SetBinError(Int_t bin, Double_t error)
Set the bin Error Note that this resets the bin eror option to be of Normal Type and for the non-empt...
virtual Int_t Fill(Double_t x)
Increment bin with abscissa X by 1.
void Draw(Option_t *option="") override
Draw this histogram with options.
virtual Double_t Integral(Option_t *option="") const
Return integral of bin contents.
virtual void SetContour(Int_t nlevels, const Double_t *levels=nullptr)
Set the number and values of contour levels.
virtual void Scale(Double_t c1=1, Option_t *option="")
Multiply this histogram by a constant c1.
2D Histogram with Polygonal Bins
Double_t GetBinContent(Int_t bin) const override
Returns the content of the input bin Bin numbers are from [1,nbins] and for the overflow/underflow/se...
Int_t Fill(Double_t x, Double_t y) override
Increment the bin containing (x,y) by 1.
Int_t GetNumberOfBins() const
Return the number of bins : it should be the size of the bin list.
void ChangePartition(Int_t n, Int_t m)
Changes the number of partition cells in the histogram.
const char * GetBinName(Int_t bin) const
Returns the bin name.
virtual Int_t AddBin(TObject *poly)
Adds a new bin to the histogram.
Double_t GetBinError(Int_t bin) const override
Returns the value of error associated to bin number bin.
void SetBinContent(Int_t bin, Double_t content) override
Sets the contents of the input bin to the input content Negative values between -1 and -9 are for the...
Double_t GetMaximum() const
Returns the maximum value of the histogram.
Book space in a file, create I/O buffers, to fill them, (un)compress them.
virtual TObject * ReadObj()
To read a TObject* from the file.
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
Mother of all ROOT objects.
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
void SetGridx(Int_t value=1) override
void SetGridy(Int_t value=1) override
This is the base class for the ROOT Random number generators.
Double_t Log(Double_t x)
Returns the natural logarithm of x.
Double_t Sqrt(Double_t x)
Returns the square root of x.
Double_t Tan(Double_t)
Returns the tangent of an angle of x radians.
Short_t Abs(Short_t d)
Returns the absolute value of parameter Short_t d.