粒子物理與核物理實驗中的數(shù)據(jù)分析公開課一等獎?wù)n件省賽課獲獎?wù)n件_第1頁
粒子物理與核物理實驗中的數(shù)據(jù)分析公開課一等獎?wù)n件省賽課獲獎?wù)n件_第2頁
粒子物理與核物理實驗中的數(shù)據(jù)分析公開課一等獎?wù)n件省賽課獲獎?wù)n件_第3頁
粒子物理與核物理實驗中的數(shù)據(jù)分析公開課一等獎?wù)n件省賽課獲獎?wù)n件_第4頁
粒子物理與核物理實驗中的數(shù)據(jù)分析公開課一等獎?wù)n件省賽課獲獎?wù)n件_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

粒子物理與核物理試驗中數(shù)據(jù)分析楊振偉清華大學(xué)第三講:ROOT在數(shù)據(jù)分析中應(yīng)用(1)第1頁2上講摘要C++基本概念類定義與實現(xiàn)...Linux下用g++編譯C++程序

g++-ohello.exe-I<include>./src/*.cc

目前目錄下輸出指定include目錄源文獻(xiàn)可執(zhí)行文獻(xiàn)hello.exe如-I./include用makefile進(jìn)行C++編譯

gmake進(jìn)行編譯

gmakeclean清除編譯成果使用ROOT腳本root-lhello.C第2頁3本講重點什么是ROOT?登錄ROOT環(huán)境和體驗中心ROOT語法介紹ROOT函數(shù),直方圖,隨機數(shù),文獻(xiàn),散點圖

TF1,TH1I,TH1F,TH1D,TRandom(gRandom)TF2,TF3,TH2F,...TFile第3頁4什么是

ROOT?ROOT:ExecutiveSummary...providesasetofOOframeworkswithall

thefunctionalityneededtohandleandanalyselargeamountsofdatainavery

efficientway....(摘自http://root.cern.ch/root/Mission.html)關(guān)鍵字:面向?qū)ο罂蚣?、所有功能、海量?shù)據(jù)、非常有效結(jié)論:很不謙虛!第4頁5安裝ROOT(1)到ROOT主頁下載需要版本到指定目錄。例如要在SLC3系統(tǒng)/projects/yangzw目錄下安裝5.16.00版本(注:最新版本ROOT已經(jīng)不為SLC3提供預(yù)編譯版本了,而為SLC4和SLC5提供)cd/projects/$USER(注:對顧客yangzw,$USER=yangzw)wgetftp://root.cern.ch/root/root_v5.16.00.Linux.slc3.gcc3.2.3.tar.gztar–zxvfroot_v5.16.00.Linux.slc3.gcc3.2.3.tar.gz設(shè)置ROOT環(huán)境變量exportROOTSYS=/projects/$USER/rootexportPATH=$ROOTSYS/bin:$PATHexportLD_LIBRARY_PATH=$ROOTSYS/lib:$LD_LIBRARY_PATH能夠把上面這3行放到$HOME/.login或者.bashrc或者.tcshrc文獻(xiàn)中,這樣每次登錄到Linux系統(tǒng),系統(tǒng)就自動設(shè)置ROOT環(huán)境變量這樣,進(jìn)入linux系統(tǒng)之后,在終端提醒行輸入:

root或

root-l即可進(jìn)入ROOT環(huán)境。第5頁6安裝ROOT(2)假如是其他發(fā)行版Linux,首先查看是否ROOT網(wǎng)站上是否有預(yù)編譯好程序包,一般情況下,官方提供SLC4和SLC5在多種不一樣CPU以及不一樣gcc版本下二進(jìn)制包,ROOT官網(wǎng)也提供包括Solaris以及MacOSX以及Windows下預(yù)編譯包。假如沒有適合你操作系統(tǒng)預(yù)編譯包,就需要到官網(wǎng)http://root.cern.ch

下載ROOT源代碼,按照安裝指南用gmake編譯安裝。Window顧客在官網(wǎng)下載對應(yīng).msi文獻(xiàn)直接安裝即可。Ubuntu8.10顧客能夠到下面網(wǎng)頁下載5.22.00版本二進(jìn)制代碼,根據(jù)Readme.txt說明安裝使用。第6頁7安裝ROOT(3)事實上,Linux下安裝程序基本套路很簡單:1.假如需要用源碼編譯

a)下載源碼壓縮包b)解壓縮c)編譯d)設(shè)置環(huán)境變量(假如需要)2.假如已有預(yù)編譯包

a)下載

b)解壓縮

c)設(shè)置環(huán)境變量(假如需要)3.yum/apt-get直接用網(wǎng)絡(luò)源安裝(預(yù)編譯包)4....第7頁8登錄ROOT環(huán)境運行>root退出root[0].q鍵入help指令,如

root[0]?

root[1].ls

root[2].!lsROOT環(huán)境其他常用指令:.Lmacro.CLoad文獻(xiàn)macro.C.xmacro.C執(zhí)行文獻(xiàn)macro.C.ls顯示ROOT目前環(huán)境所有信息.!ls顯示Linux系統(tǒng)目前目錄所有信息注:ROOT環(huán)境中,ROOT指令都以“.”開頭系統(tǒng)指令都以“.!”開頭

第8頁9ROOT體驗中心(1)在$ROOTSYS/tutorials目錄下,有五花八門例子。后來會經(jīng)常與這個目錄打交道。先嘗試一下吧。嘗試辦法:

>cd/projects/$USER

>cp-r$ROOTSYS/tutorials.(注意不要把這個"."遺漏了)>cdtutorials

然后找個感愛好目錄/文獻(xiàn),執(zhí)行ROOT腳本,例如

>cdroofit>root-lRoofitDemo.C小技巧提醒:根據(jù)關(guān)鍵字"xxxx"從tuotorials例子中尋找線索grep-sirn"xxxx"$ROOTSYS/tutorials例如找隨機數(shù)使用方法:grep-sirn"random"$ROOTSYS/tutorialsRoofit示例第9頁10ROOT體驗中心(2)還能夠在ROOT網(wǎng)站上看到某些ROOT圖片:http://root.cern.ch/drupal/image當(dāng)然,ROOT功能不只是做圖,它不是一種作圖工具。跟數(shù)據(jù)分析有關(guān)東西,基本都是ROOT擅長;跟物理有關(guān)很多東西,ROOT基本都能夠做得較好:事例產(chǎn)生、探測器模擬、事例重建、數(shù)據(jù)采集、數(shù)據(jù)分析第10頁11ROOT體驗中心(3-1)日本超級神岡中微子試驗事例顯示(byzhanghb)超大水池,內(nèi)外裝滿了光電倍增管,1萬多種第11頁12ROOT體驗中心(3-2)僅顯示被擊中光電倍增管第12頁13ROOT體驗中心(3-3)平面展開顯示第13頁14ROOT體驗中心(3-4)平面展開,鼠標(biāo)縮放,顯示鼠標(biāo)位置光電倍增管信息第14頁15ROOT語法(1)—基本信息ROOT使用C++語法一段C++程序能夠直接在ROOT環(huán)境運行數(shù)據(jù)類型重定義

intInt_t

float

Float_tdoubleDouble_t

......ROOT類都以T開頭如TFile,TH1F,TTree,...詳細(xì)要求參閱ROOT手冊(5.21版)第18-20頁,有關(guān)Convention和GlobalVariables部分。能夠直接在ROOT環(huán)境中運行macro文獻(xiàn)(自動調(diào)用cint編譯器),也能夠在makefile中設(shè)置好有關(guān)參數(shù)用g++編譯得到可執(zhí)行文獻(xiàn)運行。第15頁16ROOT語法(2)—直方圖類ROOT中有眾多已經(jīng)定義好類可供使用,例如直方圖家族第16頁17ROOT語法(2)—其他類其他常用類數(shù)學(xué)函數(shù):TF1,TF2,TF3...圖形:TGraph,TGraphErrors,TGraph2D,...文件:TFile畫布:TCanvas,TPad,...隨機數(shù):TRandom,TRandom1,TRandom2,TRandom3周期109101711026106000速度(ns/call)342423745

例如跟數(shù)據(jù)構(gòu)造和分析有關(guān):

TTree,TChain,...參見

http://root.cern.ch/root/html526/ClassIndex.html

(謹(jǐn)代表***邀請各位光臨敝舍。注:***=yangzw)尚有很多全局函數(shù),多數(shù)以g開頭,如:gRandom,gROOT,gStyle,gPad,gEnv,gFile...速度與CPU和編譯器有關(guān)第17頁18ROOT語法(3)—隨機數(shù)gRandom是指向目前隨機數(shù)產(chǎn)生子指針,該產(chǎn)生子默以為TRandom3對象。http://root.cern.ch/root/html522/TRandom.html(為何看TRandom?由于TRandom1/2/3都繼承自TRandom)gRandom->Binomial(ntot,p):二項分布gRandom->BreiWigner(mean,gamma)Breit-Wigner分布gRandom->Exp(tau)指數(shù)分布gRandom->Gaus(mean,sigma)高斯分布gRandom->Integer(imax)(0,imax-1)隨機整數(shù)gRandom->Landau(mean,sigma)Landau分布gRandom->Poisson(mean)泊松分布(返回int)gRandom->PoissonD(mean)泊松分布(返回double)gRandom->Rndm()(0,1]均勻分布gRandom->Uniform(x1,x2)(x1,x2]均勻分布....使用前可根據(jù)需要變化隨機數(shù)種子和機制思考:什么情況下需要PoissonD(mean)?第18頁19ROOT腳本文獻(xiàn)示例(1):Macro文獻(xiàn)

/home/yangzw/examples/Lec3/ex31.C用花括號括起來,后綴名一般用”.C”{cout<<"HelloROOT"<<endl;intNum=5;for(inti=0;i<Num;i++){cout<<"i="<<i<<endl;}}純正C++語法,執(zhí)行時候只需要在命令提醒行:cd/projects/$USERcp-r~yangzw/examples/Lec3.(注意最后有個“.”)cdLec3root-lex31.C第19頁20ROOT中數(shù)學(xué)函數(shù)root[0]TF1*f1=newTF1("f1","x*sin(x)",-5,5);制作一維函數(shù)曲線圖TF1*fun_name=newTF1("fun_name","expression",x_low,x_high);root[0]TF2*f2=newTF2("f2","x*sin(x)+y*cos(y)",-5,5,-10,10);制作二維函數(shù)曲線圖TF2*fun_name=newTF2("fun_name","expression",x_low,x_high,y_low,y_high);root[0]TF3*f3=newTF2("f3","x*sin(x)+y*cos(y)+z*exp(z)",-5,5,-10,10,-20,20);制作三維函數(shù)曲線圖TF3*fun_name=newTF3("fun_name","expression",x_low,x_high,y_low,y_high,z_low,z_high);畫圖時采取

root[1]fun_name.Draw();第20頁21數(shù)學(xué)函數(shù)定義方式(1)利用c++數(shù)學(xué)體現(xiàn)式TF1*f1=newTF1("f1","sin(x)/x",0,10);利用TMath定義函數(shù)TF1*f1=newTF1("f1","TMath::DiLog(x)",0,10);利用自定義c++數(shù)學(xué)函數(shù)Double_tmyFun(x){returnx+sqrt(x);}TF1*f1=newTF1("f1","myFun(x)",0,10);ROOT中定義數(shù)學(xué)函數(shù)方式多種多樣以上函數(shù)都不含參數(shù),但在數(shù)據(jù)擬合時,我們往往需要定義含未知參數(shù)函數(shù)第21頁22數(shù)學(xué)函數(shù)定義方式(2)ROOT已經(jīng)預(yù)定義了幾個常用含參函數(shù)gaus:3個參數(shù)

f(x)=p0*exp(-0.5*((x-p1)/p2)^2))expo:2個參數(shù)

f(x)=exp(p0+p1*x)polN:N+1個參數(shù)

f(x)=p0+p1*x+p2*x^2+...

其中N=0,1,2,...,使用時根據(jù)需要用pol0,pol1,pol2...landau:3個參數(shù)朗道分布,沒有解析體現(xiàn)式ROOT中定義含未知參數(shù)數(shù)學(xué)函數(shù)這些預(yù)定義函數(shù)可直接使用,例如histogram->Fit("gaus");//對直方圖進(jìn)行高斯擬合TF1*f1=newTF1("f1","gaus",-5,5);第22頁23數(shù)學(xué)函數(shù)定義方式(3)ROOT中自定義含未知參數(shù)數(shù)學(xué)函數(shù)利用c++數(shù)學(xué)體現(xiàn)式TF1*f1=newTF1("f1","[0]*sin([1]*x)/x",0,10);利用c++數(shù)學(xué)體現(xiàn)式以及ROOT預(yù)定義函數(shù)TF1*f1=newTF1("f1","gaus(0)+[3]*x",0,3);利用自定義c++數(shù)學(xué)函數(shù)Double_tmyFun(Double_t*x,Double_t*par){Double_txx=x[0];Double_tf=par[0]*exp(-xx/par[1]);returnf;}TF1*f1=newTF1("f1","myFun",0,10,2);指定參數(shù)數(shù)目定義了含參TF1對象f1之后,能夠設(shè)定參數(shù)初值,例如f1->SetParameter(0,value);//為第0個參數(shù)設(shè)初值為value第23頁24ROOT中統(tǒng)計直方圖定制一維直方圖TH1F*hist_name=newTH1F(“hist_name”,”hist_title”,num_bins,x_low,x_high);定制二維圖TH2F*hist_name=newTH2F(“hist_name”,”hist_title”,num_bins_x,x_low,x_high,num_bins_y,y_low,y_high);定制三維圖TH3F*hist_name=newTH3F(“hist_name”,”hist_title”,num_bins_x,x_low,x_high,num_bins_y,y_low,y_high,num_bins_z,z_low,z_high);填充統(tǒng)計圖hist_name.Fill(x);hist_name.Fill(x,y);Hist_name.Fill(x,y,z);繪圖:root[0]hist_name.Draw();第24頁25ROOT腳本文獻(xiàn)示例(2):數(shù)學(xué)函數(shù)定義

/home/yangzw/examples/Lec3/ex32.C//asimpleROOTmacro,ex32.C//說明ROOT中數(shù)學(xué)函數(shù)使用,如TF1voidex32(){//定義函數(shù)TF1*f1=newTF1("func1","sin(x)/x",0,10);f1->Draw();//畫出函數(shù)圖像

TF1*f2=newTF1("func1",“TMath::Gaus(x,0,1)",0,10);

f2->SetLineColor(2);//設(shè)置顏色為紅色f2->Draw(“same”);//用參數(shù)”same”,把f1,f2畫在同一種畫布上}函數(shù)名稱函數(shù)體現(xiàn)式函數(shù)區(qū)間提醒:1)腳本中void函數(shù)名字必須與文獻(xiàn)名相同(如ex32)2)ROOT環(huán)境中定義類指針之后,如TF1*f1,之后輸入“f1->”,然后按一下Tab鍵,能夠自動列出該類對象組員函數(shù)和組員變量運行:在命令提醒行下root-lex32.C或在ROOT環(huán)境下.xex32.C第25頁26ROOT腳本文獻(xiàn)示例(3):畫布,保存圖片

/home/yangzw/examples/Lec3/ex33.C//說明ROOT畫布使用,TCanvas,保存圖形voidex33(){//defineafunctionsin(x)/xTF1*f1=newTF1("func1","sin(x)/x",0,10);

//defineaGaussianfunction,mean=0,sigma=1TF1*f2=newTF1("func2","Gaus(x,0,1)",-3,3);

//定義一種畫布,TCanvas

TCanvas*myC1=newTCanvas("myC1","ACanvas",10,10,800,600);

//將畫布提成兩部分myC1->Divide(2,1);myC1->cd(1);//進(jìn)入第一部分f1->Draw();myC1->cd(2);//進(jìn)入第二部分f2->Draw();myC1->SaveAs(“myex33.gif”);myC1->SaveAs(“myex33.eps”);}運行:在命令提醒行下>root-lex33.C或在ROOT環(huán)境下root[0].xex33.C名稱描述像素坐標(biāo)(10,10):左上角

(800,600):右下角第26頁27ROOT腳本文獻(xiàn)示例(4a):直方圖,隨機數(shù)

/home/yangzw/examples/Lec3/ex34a.C//說明ROOT直方圖、隨機數(shù)使用,如TH1F,gRandomvoidex34a(){constInt_tNEntry=10000;//創(chuàng)建一種root文獻(xiàn)TFile*file=newTFile(“hist1.root”,”RECREATE”);

TH1F*h1=newTH1F("h1","Asimplehisto",100,0,1);

//填充直方圖10000次,用(0,1)均勻分布for(inti=0;i<NEntry;i++)h1->Fill(gRandom->Uniform());h1->Draw();h1->GetYaxis()->SetRangeUser(0,150);h1->GetXaxis()->SetTitle("x");h1->GetXaxis()->CenterTitle();file->cd();//進(jìn)入文獻(xiàn)fileh1->Write();//將h1寫入文獻(xiàn)}執(zhí)行時候只需要在命令提醒行root-lex34a.C或者進(jìn)入ROOT環(huán)境之后,運行.xex34a.C名稱調(diào)用均勻分布Uniform(),其他:Landau(mean,sigma);Binomial(ntot,prob);Poisson(mean);Exp(tau);BreitWigner

(mean,sigma);描述No.

ofBin區(qū)間第27頁28ROOT腳本文獻(xiàn)示例(4b):隨機數(shù)-舍選法

/home/yangzw/examples/Lec3/ex34b.C執(zhí)行時候只需要在命令提醒行root-lex34b.C或者進(jìn)入ROOT環(huán)境之后,運行.xex34b.Cfloatmypdf(floatxMin,floatxMax){floatfmax=2.;//尋找分布函數(shù)最大值while(1){floatr=gRandom->Uniform(xMin,xMax);//1st隨機數(shù)(xMin,xMax)floatz=2.*r/xMax/xMax;//期待分布函數(shù)floatu=gRandom->Uniform(0.,fmax);//2nd隨機數(shù)(0,fmax)if(u<=z)returnr;}}voidex34b(){//gDirectory->Delete("*;*");Float_txMin=0.0;Float_txMax=1.0;TH1F*hX=newTH1F("hX","sawtoothp.d.f.",100,xMin,xMax);

gRandom->SetSeed();for(inti=0;i<10000;i++){

floatx=mypdf(xMin,xMax);//舍選法產(chǎn)生隨機分布hX->Fill(x);}hX->Draw("e");}第28頁29ROOT腳本文獻(xiàn)示例(4c):隨機數(shù)

/home/yangzw/examples/Lec3/ex34c.C也能夠利用類TF1、TF2或TF3自定義函數(shù),通過調(diào)用GetRandom()函數(shù)取得服從自定義函數(shù)分布隨機數(shù):TF1*f1=newTF1("f1","abs(sin(x)/x)*sqrt(x)",0,10);doubler=f1->GetRandom();

voidex34c(){

//定義直方圖TH1F*h1=newTH1F("h1","histogramfromTF1",100,0,10);

//定義TF1函數(shù)TF1*f1=newTF1("f1","abs(sin(x)/x)*sqrt(x)",0,10);for(inti=0;i<10000;i++){doubler=f1->GetRandom();

//按照f1分布產(chǎn)生隨機數(shù)h1->Fill(r);}h1->Draw();}執(zhí)行時只需要在命令提醒行root-lex34c.C或進(jìn)入ROOT環(huán)境后,運行.xex34c.C感愛好者能夠看看TF1GetRandom()函數(shù)是如何實現(xiàn)。事實上,是把SDA(3.5)-(3.6)進(jìn)行數(shù)值積分得到x(r).當(dāng)函數(shù)f1有陡峰時,要小心!這時也許需要變化某些參數(shù)。第29頁30X軸名稱直方圖統(tǒng)計信息事例數(shù):Entries均值:Mean方差:RMS參見ROOT手冊37頁“StatisticsDisplay”直方圖描述打開已有root文獻(xiàn),如hist1.root:終端提醒行下:root–lhist1.rootROOT環(huán)境下:TFilef1(“hist1.root”);.lsh1->Draw();直方圖、打開root文獻(xiàn)第30頁31//2維直方圖TH2F,散點圖,散點圖協(xié)方差voidex35(){constInt_tNEntry=10000;

TH2F*hXY=newTH2F("hXY","2dhisto",100,0,1,100,-3,3);for(inti=0;i<NEntry;i++){floatx=gRandom->Rndm();floaty=gRandom->Gaus(0,1);hXY->Fill(x,y);//填充2維直方圖}hXY->Draw();//2維直方圖散點圖hXY->GetXaxis()->SetTitle("X:Uniform");hXY->GetYaxis()->SetTitle("Y:Gaussian");Float_tcovar=hXY->GetCovariance();//協(xié)方差cout<<"Covariance="<<covar<<endl;}ROOT腳本文獻(xiàn)示例(5):散點圖

/home/yangzw/examples/Lec3/ex35.C運行:在命令提醒行下root-lex35.C或在ROOT環(huán)境下.xex35.C二維直方圖Draw()函數(shù)有很多項選擇項,請自

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論