Logo ROOT  
Reference Guide
multicolor.C
Go to the documentation of this file.
1/// \file
2/// \ingroup tutorial_hist
3/// \notebook
4/// Use a THStack to show a 2-D hist with cells with different colors.
5/// ~~~{.cpp}
6/// root > .x multicolor.C
7/// root > .x multicolor.C(1)
8/// ~~~
9/// \macro_image
10/// \macro_code
11///
12/// \author Rene Brun
13
14#include "TCanvas.h"
15#include "TH2.h"
16#include "THStack.h"
17#include "TRandom.h"
18
19void multicolor(Int_t isStack=0) {
20 TCanvas *c1 = new TCanvas;
21 Int_t nbins = 20;
22 TH2F *h1 = new TH2F("h1","h1",nbins,-4,4,nbins,-4,4);
24 TH2F *h2 = new TH2F("h2","h2",nbins,-4,4,nbins,-4,4);
25 h2->SetFillColor(kRed);
26 TH2F *h3 = new TH2F("h3","h3",nbins,-4,4,nbins,-4,4);
28 THStack *hs = new THStack("hs","three plots");
29 hs->Add(h1);
30 hs->Add(h2);
31 hs->Add(h3);
32 TRandom r;
33 Int_t i;
34 for (i=0;i<20000;i++) h1->Fill(r.Gaus(),r.Gaus());
35 for (i=0;i<200;i++) {
36 Int_t ix = (Int_t)r.Uniform(0,nbins);
37 Int_t iy = (Int_t)r.Uniform(0,nbins);
38 Int_t bin = h1->GetBin(ix,iy);
39 Double_t val = h1->GetBinContent(bin);
40 if (val <= 0) continue;
41 if (!isStack) h1->SetBinContent(bin,0);
42 if (r.Rndm() > 0.5) {
43 if (!isStack) h2->SetBinContent(bin,0);
44 h3->SetBinContent(bin,val);
45 } else {
46 if (!isStack) h3->SetBinContent(bin,0);
47 h2->SetBinContent(bin,val);
48 }
49 }
50 hs->Draw("lego1");
51}
52
53
54
int Int_t
Definition: RtypesCore.h:45
double Double_t
Definition: RtypesCore.h:59
@ kRed
Definition: Rtypes.h:66
@ kBlue
Definition: Rtypes.h:66
@ kYellow
Definition: Rtypes.h:66
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 r
virtual void SetFillColor(Color_t fcolor)
Set the fill area color.
Definition: TAttFill.h:37
The Canvas class.
Definition: TCanvas.h:23
virtual Int_t GetBin(Int_t binx, Int_t biny=0, Int_t binz=0) const
Return Global bin number corresponding to binx,y,z.
Definition: TH1.cxx:4925
virtual Int_t Fill(Double_t x)
Increment bin with abscissa X by 1.
Definition: TH1.cxx:3338
virtual void SetBinContent(Int_t bin, Double_t content)
Set bin content see convention for numbering bins in TH1::GetBin In case the bin number is greater th...
Definition: TH1.cxx:9089
virtual Double_t GetBinContent(Int_t bin) const
Return content of bin number bin.
Definition: TH1.cxx:5025
2-D histogram with a float per channel (see TH1 documentation)}
Definition: TH2.h:257
void SetBinContent(Int_t bin, Double_t content) override
Set bin content.
Definition: TH2.cxx:2558
The Histogram stack class.
Definition: THStack.h:38
virtual void Add(TH1 *h, Option_t *option="")
add a new histogram to the list Only 1-d and 2-d histograms currently supported.
Definition: THStack.cxx:365
void Draw(Option_t *chopt="") override
Draw this multihist with its current attributes.
Definition: THStack.cxx:450
This is the base class for the ROOT Random number generators.
Definition: TRandom.h:27
return c1
Definition: legend1.C:41
TH1F * h1
Definition: legend1.C:5