为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > ROOT_Tutorial_Bose

ROOT_Tutorial_Bose

2013-06-01 27页 pdf 591KB 27阅读

用户头像

is_511229

暂无简介

举报
ROOT_Tutorial_Bose ROOT Tutorial Tulika Bose Brown University NEPPSR 2007 ROOT • What is ROOT ? – ROOT is an object-oriented C++ analysis package – User-compiled code can be called to produce 1-d, 2-d, and 3-d graphics and histograms… • ROOT uses a language called CINT (C/C+...
ROOT_Tutorial_Bose
ROOT Tutorial Tulika Bose Brown University NEPPSR 2007 ROOT • What is ROOT ? – ROOT is an object-oriented C++ analysis package – User-compiled code can be called to produce 1-d, 2-d, and 3-d graphics and histograms… • ROOT uses a language called CINT (C/C++ Interpreter) which contains several extensions to C++ – CINT allows the use of a dot “.” while an arrow “->” is used in C++ – CINT commands always start with “.” Useful Links ROOT web-page: http://root.cern.ch/ ROOT can be downloaded from http://root.cern.ch/twiki/bin/view/ROOT/Download ROOT Tutorials: • http://root.cern.ch/root/Tutorials.html • Babar ROOT Tutorial I • Babar ROOT Tutorial II • Nevis tutorial: http://www.nevis.columbia.edu/~seligman/root-class/ All files used in this tutorial can be found at http://home.fnal.gov/~tulika/NEPPSR/ ROOT Basics Start ROOT: – type “root” – (to skip the introductory welcome type “root –l”) For help: type “.?”, “.h” Quit ROOT: type “.q” ROOT analysis A typical ROOT analysis could be: • Take variables in an n-tuple, make histograms, calculate quantities, and perform fits… – How does one make a histogram ? – What is an n-tuple ? – How are calculations done ? – How does one fit ? Histograms Making your first histogram: • Histograms can be 1-d, 2-d and 3-d • Declare a histogram to be filled with floating point numbers: TH1F *histName = new TH1F(“histName”, “histTitle”, num_bins,x_low,x_high) Note: Bin 0 Æ underflow (i.e. entries < x_low) Bin (num_bins+1) Æ overflow (i.e. entries > x_high) 2-d and 3-d histograms can be booked similarly… TH1F *my_hist = new TH1F(“my_hist”, “My First Histogram”, 100, 2, 200) TH2F *myhist = new TH2F(“myhist”, “My Hist”, 100, 2, 200, 200, 0,500) Drawing Histograms • To draw: – my_hist->Draw(); • To fill a histogram: – my_hist->Fill(50); – my_hist->Fill(100, 3); // the number 100 has weight=3 • Update the histogram: – my_hist->Draw(); Histogram attributes: • Change line color: – my_hist->SetLineColor(2); //red – or my_hist->SetLineColor(kRed); – my_hist->Draw(); Look at the official documentation for the different drawing options ROOT Session 1 Black 2 Red 3 Light green 4 Blue 5 Yellow 6 Magenta 7 Cyan 8 Green COLORS Marker Styles Colors Drawing Options Drawing Options LINE STYLES COLOR WHEEL FILL STYLES LaTeX in ROOT The “Stats Box” The Statistics Box : • Setup with: – gStyle->SetOptStat(mode) – (ksiourmen) • Default is (000001111): • To show overflows and underflows: – gStyle->SetOptStat(111111); • To remove entirely: – gStyle->SetOptStat(0); k=1 kurtosis K=2 Kurtosis+error s=1 Skewness S=2 Skewness+error i=1 Integral o=1 Overflow u=1 Underflow r=1 RMS R=2 RMS+error e=1 Entries m=1 Mean M=2 Mean+error n=1 Name More on histograms • Draw a second histogram on top of the first: – First book the histogram – Use another color to differentiate – Fill the histogram – Draw the histogram – my_hist_2->Draw(“same”) • Errors: – my_hist_2->Draw(“esame”) • Default : errors = sqrt(entries) • To get error as sqrt(sum of weights), enter – my_hist_2->Sumw2() before filling the histogram Exercises Exercises: • Add axis labels • Add a legend • Add a text box Save Histograms: c1->SaveAs(“myhisto.eps”); c1->SaveAs(“myhisto.ps”); c1->SaveAs(“myhisto.gif”); Also can save source code for histogram: c1->SaveAs(“myhisto.C”); Recreate histogram in a brand new ROOT session: .x myhisto.C Functions and Histograms • Define a function: • Generate histograms from functions: • Generate histograms with random numbers from a function: • Write histogram to a root file: TH1F *myhist = new TH1F("myhist", “Histo from gaus", 50, 0, 3); myhist->FillRandom("myfunc", 10000); myhist->Draw(); TFile *myfile = new TFile(“fillrandom.root”, “RECREATE”); myhist->Write(); myfile->Close(); TF1 *myfunc = new TF1(“myfunc”, “gaus”, 0, 3); myfunc->SetParameters(10.,1.5,0.5); myfunc->Draw(); (myfunc->GetHistogram())->Draw(); Fitting Histograms Let us try to fit the histogram created by the previous step: Interactively: • Open root file containing histogram: root -l fillrandom.root • Draw histogram: myhist->Draw() • Right click on the histogram and select “Fit Panel” • Check to ensure: • “gaus” is selected in the Function->Predefined pop-up menu • “Chi-square” is selected in the Fit Settings->Method menu • Click on “Fit” at the bottom [Display fit parameters: Select Options-> Fit Parameters] Fitting contd: Using user defined functions: • Create a file called user_func.C with the following contents: [tulika@cmslpc04 NEPPSR]$ root -l fillrandom.root root [0] Attaching file fillrandom.root as _file0... root [1] .L user_func.C root [2] TF1 *f1 = new TF1("f1", user_func, 0, 3, 3); root [3] myhist->Draw() : created default TCanvas with name c1 root [4] f1->SetParameters(10,myhist->GetMean(), myhist->GetRMS()); root [5] myhist->Fit("f1"); double user_func(double *x, double *par) { double arg = 0; if (par[2]) arg = (x[0] - par[1])/par[2]; return par[0]*TMath::Exp(-0.5*arg*arg); } gStyle->SetOptFit(1111) Fitting contd: Change fit range Move the slider N-tuples and trees • An n-tuple is an ordered list of numbers • A ROOT Tree can be an ordered list of any collections of C++ objects – It has branches which can hold many other objects, for eg. vectors • An n-tuple in ROOT is just a simple Tree, where each branch contains floating point data Getting started with trees [tulika@cmslpc04 NEPPSR]$ root -l histo-174.root root [0] Attaching file histo-174.root as _file0... root [1] .ls TFile** histo-174.root TFile* histo-174.root KEY: TTree ttbar;1 root [2] ttbar->Print(); Download the file at http://home.fnal.gov/~tulika/NEPPSR/histo-174.root Use the following commands to open the file and list contents The root-file consists of a tree called “ttbar”. To display the names of the variables stored in the tree use the “Print()” command Plotting tree variables root [3] TCanvas *c2= new TCanvas ("c2", "My Canvas",400, 600) root [4] c2->Divide(1,2); root [5] c2->cd(1); root [6] ttbar->Draw("nj") root [7] c2->cd(2); root [8] ttbar->Draw("px:py") To apply cuts: root[9] TCanvas c3; root [10] ttbar->Draw("nj", "nj>15"); Analyzing trees [tulika@cmslpc04 NEPPSR]$ root -l histo-174.root root [0] Attaching file histo-174.root as _file0... root [1] .ls TFile** histo-174.root TFile* histo-174.root KEY: TTree ttbar;1 root [2] ttbar->MakeClass("Analyze") Info in : Files: Analyze.h and Analyze.C generated from TTree: ttbar (Int_t)0 Add your analysis code to Analyze.C and then execute in ROOT: root [0] .L Analyze.C root [1] Analyze t root [2] t.Loop() “L”oad the file Create an object of type t Execute Loop command of object t “Analyze” trees Setup code goes here Loop code goes here Exercises Look at the example code in http://home.fnal.gov/~tulika/NEPPSR/AnalyzeExample.C 1. Modify it to plot “px”, “py”, and “pz” for all jets in the event 2. Calculate η of the jets 3. Calculate the invariant mass of all possible di-jet and three-jet combinations 4. Require pt > 20 GeV and abs(η) < 3.0 and repeat Step 3. Search for new particles while learning ROOT : http://www-clued0.fnal.gov/~tulika/brown/root-proj.htm ROOT Tutorial ROOT Useful Links ROOT Basics ROOT analysis Histograms Drawing Histograms Drawing Options LaTeX in ROOT The “Stats Box” More on histograms Exercises Functions and Histograms Fitting Histograms Fitting contd: N-tuples and trees Getting started with trees Plotting tree variables Analyzing trees “Analyze” trees Exercises
/
本文档为【ROOT_Tutorial_Bose】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索