-
Notifications
You must be signed in to change notification settings - Fork 0
/
Histogram2D.C
82 lines (80 loc) · 6.58 KB
/
Histogram2D.C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
void Histogram2D()
{
// To run this macro just run on root terminal
// .L Histogram2D.C
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Author: Muhammad Farooq Email: 2714befarooq@gmail.com
// muhammad.farooq@cern.ch
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// https://root.cern.ch/root-user-guides-and-manuals //
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// https://root.cern.ch/doc/master/classTCanvas.html //
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// TCanvas(name,title,width,height) //
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Define a Canvas //
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
TCanvas* c=new TCanvas("c","Function",600,600);
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// https://root.cern.ch/doc/master/classTH2F.html //
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// TH1F(name,title,no.of x-bins,xlow-bin,xup-bin,no. of y-bins,ylow-bin,yup-bin) // //
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Define Histogram in 1D //
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
TH2F* h1=new TH2F("pxvspy","py vs px",30,-3,3,30,-3,3);
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Fill Histogram with random numbers gaussian distribution with mean=0 and sigma(width)=1 with 10000 entries //
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// https://root.cern.ch/doc/master/classTRandom3.html //
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Here, We use TRandom3 random number generator due to it's high periodicity and is fast
TRandom3* random=new TRandom3();//make object of TRandom3 for further uses
//Now, two variables which we use to fill randomly
Float_t px,py;
for(int i=0;i<10000;i++)
{
random->Rannor(px,py);//Return 2 numbers distributed following a gaussian with mean=0 and sigma=1
//now, fill histogram with random numbers with Gaus distribution
h1->Fill(px,py);
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Cosmetics for Drawing Histogram //
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// https://root.cern/root/html606/classTAttLine.html //
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
h1->SetLineColor(kBlue);//line color
h1->SetLineStyle(9);//line style
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Axes title //
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
h1->GetXaxis()->SetTitle("1-D Histo");//giving title of x-axis
h1->GetXaxis()->CenterTitle();//this will centered the title along x-axis
h1->GetYaxis()->SetTitle("Number of Entries");//giving title of y-axis
h1->GetYaxis()->CenterTitle();//this will centered the title along y-axis
h1->Draw();
//h1->Draw("COLZ");
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// https://root.cern.ch/root/html528/TProfile.html //
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Profiling:2-D Histograms are difficult to read. So, we make 1-D profile to read 2-D histograms
TProfile* profile = new TProfile("profile","Profile along px",30,-3,3,0,20);
profile=h1->ProfileX();//this will make profile along x-axis
profile->Draw();
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// https://root.cern.ch/doc/v608/classTFile.html //
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Now, make File in which we can save our outputs in a file, which we can see latex
TFile* file=new TFile("twoDHisto.root","RECREATE");
//now, write your output in a file
h1->Write();
profile->Write();
//after, writing the file, we have to close this
file->Close();
}