版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
ROOT軟件的使用2024年8月23日Outline什么是ROOT學(xué)習(xí)ROOT所需知識(shí)安裝和使用ROOTROOT常用數(shù)據(jù)分析組件ROOT高階數(shù)據(jù)分析組件總結(jié)2什么是ROOT3什么是ROOT一個(gè)面向?qū)ο蟮臄?shù)據(jù)分析框架,由CERN開(kāi)發(fā)。最早用作粒子物理數(shù)據(jù)分析,現(xiàn)在也擴(kuò)展到天文和數(shù)據(jù)挖掘等多領(lǐng)域。4RenéBrunFonsRademakersROOT歷史和未來(lái)版本歷史:November29,1995:ROOTVersion0.04ReleasedApril25,1997:ROOTVersion1.00ReleasedOctober30,1998:NewROOTversion2.00/13.June8,2001:OfficialReleaseofROOTVersion3.01Feb2,2004:ROOTVersion4.00ReleasedJul5,2005:ROOTVersion5.02ReleasedMay30,2014:ROOTVersion6.00Released最新穩(wěn)定版本:Release6.32/04-14Aug2024未來(lái):ROOT7很快就要來(lái)臨。類(lèi)的名稱(chēng)預(yù)計(jì)會(huì)有大變化。5在ROOT里你可以保存數(shù)據(jù)。ROOT的數(shù)據(jù)結(jié)構(gòu)——Tree,可以無(wú)損保存海量數(shù)據(jù)的同時(shí),支持?jǐn)?shù)據(jù)高壓縮率和快速訪(fǎng)問(wèn)。訪(fǎng)問(wèn)數(shù)據(jù)。允許低內(nèi)存占用的方式依次訪(fǎng)問(wèn)批量文件,并允許訪(fǎng)問(wèn)網(wǎng)頁(yè)或網(wǎng)格數(shù)據(jù)。數(shù)據(jù)分析。提供強(qiáng)大的數(shù)學(xué)和統(tǒng)計(jì)工具,提供所有統(tǒng)計(jì)分布的數(shù)據(jù)抽樣和建模工具。繪制數(shù)據(jù)圖表。分析結(jié)果可以畫(huà)成直方圖、散點(diǎn)圖、擬合函數(shù)等圖像,支持用鼠標(biāo)實(shí)時(shí)調(diào)整圖形樣式,可以保存圖表成PDF等其他格式。6ROOT參考資料ROOT官網(wǎng)[https://root.cern/]ROOT官方入門(mén)[https://root.cern/primer/]ROOT訓(xùn)練場(chǎng)[/root-project/training]ROOT官方論壇[https://root-forum.cern.ch/]ROOT文檔[https://root.cern/doc/master/index.html]ROOT官方教程[https://root.cern/doc/master/group__Tutorials.html]本課程ROOT版本6.32/027學(xué)習(xí)ROOT所需知識(shí)8學(xué)習(xí)ROOT前置知識(shí)1Linux的基本知識(shí):Terminal(Mac/Linux:terminal,Windows:windowsterminal,xshell,mobaxterm,tabby等),Shell命令(cd,pwd,ls,mv,cp,rm等),編輯器(vim,emacs,或者IDE),遠(yuǎn)程登陸相關(guān)知識(shí)(ssh,scp,rz/sz等,以及x11、Wayland轉(zhuǎn)發(fā)等)。9使用帶X11圖形轉(zhuǎn)發(fā)的Terminal想要對(duì)登錄節(jié)點(diǎn)的圖形進(jìn)行顯示,需要使用X11轉(zhuǎn)發(fā)服務(wù):使用自帶X11轉(zhuǎn)發(fā)的Terminal:MobaXterm:提供免費(fèi)免安裝版本,自帶x11轉(zhuǎn)發(fā)。(免安裝開(kāi)箱即用,本課程推薦方式)/link/AA9C830E6C26604B9484C389DEEC07FD86
有效期限:2024-09-2109:40Xshell:需購(gòu)買(mǎi)Xmanager全家桶才可以自帶x11轉(zhuǎn)發(fā),可在IHEP正版軟件平臺(tái)下載正版。(經(jīng)典,高能物理祖?zhèn)鱐erminal)需要填寫(xiě)所在課題組賬號(hào),/index/Product/products?c=0WindowsLinuxSubsystem2(WSL2)。(非常推薦,但安裝配置麻煩,有興趣的話(huà)課后自己嘗試)安裝文檔:/zh-cn/windows/wsl/install使用不帶X11轉(zhuǎn)發(fā)的Terminal+Xserver服務(wù)的組合:Terminal可選擇:免費(fèi)版Xshell(沒(méi)有Xmanager全家桶),Tabby(現(xiàn)在挺火),PuTTY(專(zhuān)業(yè)工具,難學(xué)難用)等。Xserver服務(wù),提供X11圖形轉(zhuǎn)發(fā)服務(wù),獨(dú)立運(yùn)行:vcXsrv(非得用的話(huà)推薦這個(gè),但很久沒(méi)更新了)、Xming(更老)Mac自帶Terminal,所以只需要安裝x11轉(zhuǎn)發(fā)工具:XQuartz,下載后用mac的安裝器安裝即可使用。(MacOS上沒(méi)得選)/link/AA9C830E6C26604B9484C389DEEC07FD86有效期限:2024-09-2109:40使用`ssh–Yschxxx@`的方式登錄集群,開(kāi)啟x11轉(zhuǎn)發(fā),可以使用圖形交互界面。記得加-Y參數(shù)用`display`命令測(cè)試是否正確做到x11轉(zhuǎn)發(fā)。10學(xué)習(xí)ROOT前置知識(shí)2C++或Python,基本思路為學(xué)到類(lèi)(class)的知識(shí)即可上手ROOT:C++:學(xué)習(xí)《C++Primer》第一部分的知識(shí),CPPReference,/w/。Python:學(xué)習(xí)《Python編程從入門(mén)到實(shí)踐》第一部分的知識(shí),PythonDocs,/。概率論和數(shù)理統(tǒng)計(jì):均值、方差、誤差、直方圖、分布、擬合等基本概念。11用C++還是用Python?ROOT(C++)和ROOT(Python)在軟件功能上沒(méi)有區(qū)別,用法大體一致。如何選擇?用Python的優(yōu)點(diǎn):Python比C++好學(xué)、上手快、語(yǔ)法寬松、debug容易,Python擴(kuò)展包豐富,引用其他外部庫(kù)方便。用C++的優(yōu)點(diǎn):所有ROOT文檔和教學(xué)都是C++,包括本課程,幾乎所有高能物理實(shí)驗(yàn)的祖?zhèn)鬈浖际荂++,并且深度使用C++的ROOT,C++的程序編譯之后比Python運(yùn)行得快。建議:?jiǎn)枂?wèn)你們的導(dǎo)師、師兄師姐,你未來(lái)的工作更需要用哪個(gè)語(yǔ)言的ROOT?12本課程腳本食用方式?jīng)]有Xserver的terminal記得打開(kāi)vcXsrv或Xming的x11轉(zhuǎn)發(fā)。記得ssh登錄命令帶上–Y參數(shù)??截惐菊n程腳本文件到本地:13>git
clone
/zhangxuantong/root-tutorial.git>cdroot-tutorial/>lsMacro-file.CMacro-fit.CMacro-tf1.CMacro-tgraph.CMacro-th1.CMacro-tree.CMacro1.CREADME.md安裝和使用ROOT14安裝ROOT對(duì)于集群用戶(hù),ROOT已經(jīng)安裝好,默認(rèn)版本v6.32,默認(rèn)可以直接使用root命令,也可以使用cvmfs上的root環(huán)境,如:對(duì)于本地用戶(hù),安裝ROOT:Linux/Mac用戶(hù):使用安裝命令安裝:在epel-release庫(kù)里,dnf/yum/brew等安裝命令直接可安裝。使用預(yù)編譯包安裝:下載對(duì)應(yīng)版本的預(yù)編譯包后解壓,可直接使用。手動(dòng)編譯:需要準(zhǔn)備編譯環(huán)境(gcc/c++/clang),下載源碼后用cmake等工具編譯。Windows用戶(hù):通過(guò)Cmake/MicrosoftVisuallC++編譯,或安裝python版本ROOT。[LearnMore]15source/cvmfs/sft.cern.ch/lcg/app/releases/ROOT/6.32.04/x86_64-almalinux9.4-gcc114-opt/bin/thisroot.sh用命令行運(yùn)行ROOT命令行(Prompt)方式,交互式地打開(kāi)并使用ROOT:16>root–lroot[0]
root[0]1+1
(int)2
root[1]sqrt(3.)
(double)1.7320508
root[2]TMath::Pi()
(double)3.1415927
root[3]TMath::Sin(2*TMath::Pi())
(double)-2.4492936e-16在集群中使用
ROOT命令打開(kāi)ROOT把ROOT當(dāng)成計(jì)算器用浮點(diǎn)運(yùn)算的局限性:沒(méi)有返回0,而是返回一個(gè)接近于0的數(shù)用命令行運(yùn)行ROOT也可以使用C++語(yǔ)法的方式使用ROOT:ROOT擁有強(qiáng)大的C++語(yǔ)法解釋器,可以直接在命令行內(nèi)執(zhí)行C++語(yǔ)法的代碼。17root[4]doublex=0.5;
root[5]intN=30;
root[6]doublegs=0.0;
root[7]for(inti=0;i<N;++i)gs+=(pow(x,i));
root[8]rst=std::abs(gs-(1.0/(1.0-x)));
root[9]std::cout<<rst<<std::endl;
1.86265e-09定義變量C++語(yǔ)法的循環(huán)和
變量賦值C++語(yǔ)法的輸出用命令行運(yùn)行ROOT一些ROOT命令行常用命令:18root[0].qroot[0].!<shell_cmd>root[0].L<file_name>root[0].x<file_name>root[0].helproot[0].?退出ROOT執(zhí)行外部shell命令載入ROOT腳本打印幫助信息載入并執(zhí)行ROOT腳本ROOT腳本腳本(Macros/Scripts)19>root[0]Macro1.C>rootroot[0].xMacro1.C>rootroot[0].LMacro1.Croot[1]Macro1()>rootroot[0].LMacro1.C+root[1]Macro1()>
g++-oMacro1.exeMacro1.C`root-config--cflags--libs`>./Macro1.exe在Shell里用ROOT命令執(zhí)行腳本在ROOT
Prompt里執(zhí)行腳本先載入,
再運(yùn)行腳本內(nèi)的函數(shù)先載入并編譯,
再運(yùn)行腳本內(nèi)的函數(shù)在外部編譯成可執(zhí)行文件后運(yùn)行,文件需要寫(xiě)成含有main函數(shù)的標(biāo)準(zhǔn)可編譯C++程序的格式。ROOT常用數(shù)據(jù)分析組件20ROOT的類(lèi)(Class)ROOT內(nèi)置一些基礎(chǔ)類(lèi),這些類(lèi)組成了ROOT軟件數(shù)據(jù)分析的基本方法。目前幾乎所有的Class都以大寫(xiě)字母T開(kāi)頭,TFile/TTree/TBranchTCanvas/TH1D/TGraphErrorsTF1TLegend/TArrow/TLatex一些例外:RooFit/RooStats,專(zhuān)門(mén)用于擬合相關(guān)的統(tǒng)計(jì)分析工具,RDataFrame,專(zhuān)門(mén)用于分析TTree數(shù)據(jù)的文件的分析工具。21一維函數(shù)類(lèi):TF1一維函數(shù)的類(lèi),TF1,F(xiàn)=function,1=1-Dimension有幾種定義方法:22boolexample1(){
TF1*fa1=newTF1("fa1","sin(x)/x",0,10);
fa1->Draw();
returntrue;
}
boolexample2(){
TF1*fa2=newTF1("fa2","TMath::DiLog(x)",0,10);
fa2->Draw();
returntrue;
}
doublemyFunc(doublex){returnx+TMath::Sin(x);}
boolexample3(){
TF1*fa3=newTF1("fa3","myFunc(x)",-3,5);
fa3->Draw();
returntrue;
}直接定義函數(shù)表達(dá)式使用ROOT內(nèi)置函數(shù)
定義函數(shù)表達(dá)式自己寫(xiě)一個(gè)
函數(shù)表達(dá)式自己試試:>rootroot[0].LMacro-tf1.Croot[1]example1()root[2]example2()root[3]example3()或者:>rootMacro-tf1.Croot[0]example1()root[1]example2()root[2]example3()一維函數(shù)類(lèi):TF123一維直方圖類(lèi):TH1TH1是一維直方圖的父類(lèi),一般用其子類(lèi):TH1F和TH1DH=Histogram,1=1-Dimension,F(xiàn)=Float,D=Double[LearnMore]24boolexample1()
{
TH1D*h1=newTH1D("hgaus","histofromagaussian;x;nEnv",100,-3,3);
h1->FillRandom("gaus",10000);
h1->Draw();
returntrue;
}
boolexample2()
{
TH1D*h1=newTH1D("hgaus","histofromagaussian;x;nEnv",100,-3,3);
h1->FillRandom("gaus",10000);
h1->Draw();
for(inti=0;i<100;++i){|
h1->SetBinContent(i,0.1*h1->GetBinContent(i));
|std::cout<<h1->GetBinContent(i)<<std::endl;
}
returntrue;
}
創(chuàng)建一個(gè)直方圖,
往里填入10000個(gè)
滿(mǎn)足高斯分布的點(diǎn)創(chuàng)建一個(gè)直方圖,
對(duì)每個(gè)Bin做一些操作后輸出Bin值自己試試:>rootroot[0].LMacro-th1.Croot[1]example1()root[2]example2()或者:>rootMacro-th1.Croot[0]example1()root[1]example2()一維直方圖類(lèi):TH125一維散點(diǎn)圖:TGraph還有帶誤差bar的TGraphErrors類(lèi)。[LearnMore]26boolexample1()
{
TCanvas*c1=newTCanvas("c1","ASimpleGraphExample",200,10,500,300);
TCanvas*c2=newTCanvas("c2","ASimpleGraphErrorExample",200,10,500,300);
Double_tx[100],y[100];
Double_txe[100],ye[100];
Int_tn=20;
for(Int_ti=0;i<n;i++){
|x[i]=i*0.1;
|y[i]=10*sin(x[i]+0.2);
|xe[i]=gRandom->Gaus(0.04,0.02);
|ye[i]=gRandom->Gaus(0.5,0.2);
}
TGraph*gr=newTGraph(n,x,y);
c1->cd();
gr->Draw("AC*");
TGraphErrors*gre=newTGraphErrors(n,x,y,xe,ye);
c2->cd();
gre->Draw("ACE");
returntrue;
}自己試試:>rootroot[0].LMacro-tgraph.Croot[1]example1()或者:>rootMacro-tgraph.Croot[0]example1()創(chuàng)建相應(yīng)散點(diǎn)圖Draw(“AC*”),
并畫(huà)出x和y軸(“A”),點(diǎn)之間連線(xiàn)(“C”),點(diǎn)畫(huà)成星號(hào)(“*”)。創(chuàng)建長(zhǎng)度為N的x和y,xe和ye的數(shù)組,形成N個(gè)散點(diǎn)和對(duì)應(yīng)誤差。創(chuàng)建相應(yīng)散點(diǎn)圖Draw(“ACE”),
并畫(huà)出x和y軸,點(diǎn)之間連線(xiàn),畫(huà)出誤差bar(“E”)
。一維散點(diǎn)圖:TGraph27擬合可以用TF1對(duì)TGraph和TH1D進(jìn)行擬合。[LearnMore]28自己試試:>rootroot[0].LMacro-fit.Croot[1]example1()或者:>rootMacro-fit.Croot[0]example1()boolexample1(){
gStyle->SetOptFit(1111);
TH1D*h1=newTH1D("hgaus","histofromagaussian;x;nEnv",100,-3,3);
h1->FillRandom("gaus",10000);
TCanvas*c1=newTCanvas("c1","c1",800,600);
c1->cd();
h1->Draw();
TF1*tf1=newTF1("fgaus","gaus",-3,3);
tf1->SetParameters(0,1,1000);
h1->Fit(tf1,"ES");
TCanvas*c2=newTCanvas("c2","c2",800,600);
c2->cd();
TH1D*h2=(TH1D*)h1->Clone();
h2->Draw();
TF1*tf2=newTF1("fgaus","gaus",-3,3);
tf2->SetParameters(0,1,1000);
h2->Fit(tf2,"ELS");
returntrue;
}創(chuàng)建一個(gè)高斯分布的直方圖用最小二乘法擬合直方圖“ES”用極大似然法擬合直方圖“ELS”擬合不同的擬合方式有不同的擬合結(jié)果,但是隨著統(tǒng)計(jì)量的增加,兩種擬合的期望值收斂為真值。(無(wú)偏擬合)29ROOT文件讀寫(xiě)ROOT文件使用TFile類(lèi)進(jìn)行存儲(chǔ)和讀取。創(chuàng)建一個(gè)ROOT文件并把直方圖,擬合曲線(xiàn),散點(diǎn)圖存入。[LearnMore]30自己試試:>rootroot[0].LMacro-file.Croot[1]example1()或者:>rootMacro-file.Croot[0]example1()boolexample1()
{
TH1D*h1=newTH1D("hgaus","histofromagaussian;x;nEnv",100,-3,3);
h1->FillRandom("gaus",10000);
TF1*tf1=newTF1("fgaus","gaus",-3,3);
tf1->SetParameters(0,1,1000);
h1->Fit(tf1,"ES");
Double_tx[100],y[100];
Int_tn=20;
for(Int_ti=0;i<n;i++){
|x[i]=i*0.1;
|y[i]=10*sin(x[i]+0.2);
}
TGraph*gr=newTGraph(n,x,y);
gr->SetName("tgraph");TFile*file1=newTFile("myfile.root","RECREATE");
file1->cd();
h1->Write();
tf1->Write();
gr->Write();
file1->Close();
returntrue;
}創(chuàng)建一個(gè)高斯分布的直方圖并擬合出對(duì)應(yīng)高斯分布曲線(xiàn)創(chuàng)建一個(gè)散點(diǎn)圖并繪制滿(mǎn)足y=10*sin(x+0.2)的100個(gè)點(diǎn)。創(chuàng)建一個(gè)名為”myfile.root”的文件并保存上述3個(gè)圖表ROOT文件讀寫(xiě)查看ROOT文件的方法有2種:使用TFile類(lèi),在腳本里打開(kāi),ROOT命令(命令行)和TBrowser類(lèi)(交互式圖形界面)查看ROOT文件。31自己試試:>rootroot[0].LMacro-file.Croot[1]example2()或者:>rootMacro-file.Croot[0]example2()boolexample2()
{
TFile*file=newTFile("myfile.root","READ");
TH1D*h1=(TH1D*)file->Get("hgaus");
TCanvas*c1=newTCanvas("c1","c1");
h1->Draw();
TF1*tf1=(TF1*)file->Get("fgaus");
TCanvas*c2=newTCanvas("c2","c2");
tf1->Draw();
TGraph*gr=(TGraph*)file->Get("tgraph");
TCanvas*c3=newTCanvas("c3","c3");
gr->Draw();
returntrue;}打開(kāi)剛才保存的文件找到文件里保存的圖并繪制ROOT文件讀寫(xiě)查看ROOT文件的方法有2種:使用TFile類(lèi),在腳本里打開(kāi),ROOT命令(命令行)和TBrowser類(lèi)(交互式圖形界面)查看ROOT文件。32自己試試:>rootmyfile.rootroot[0].lsTFile**myfile.root
TFile*myfile.root
KEY:TH1Dhgaus;1histofromagaussian
KEY:TF1fgaus;1gaus
KEY:TGraphtgraph;1Graphroot[1]autotb=TBrowser()TBrowser會(huì)打開(kāi)一個(gè)交互式界面,可以點(diǎn)擊左側(cè)myfile.root文件進(jìn)行交互ROOT基礎(chǔ)數(shù)據(jù)存儲(chǔ)格式TTree是ROOT基礎(chǔ)數(shù)據(jù)存儲(chǔ)類(lèi),[LearnMore]ROOT:根Tree:樹(shù)Branch:枝Leaf:葉物理分析過(guò)程中,每一個(gè)事例(Event)都是Tree里的一個(gè)條目(Entry)。一個(gè)Tree存儲(chǔ)了N個(gè)事例,就有N個(gè)條目。所有事例都共享一套Branch/Leaf結(jié)構(gòu),可以粗淺類(lèi)比為C中的結(jié)構(gòu)體的數(shù)組或Python中的字典的列表。每個(gè)事例都是結(jié)構(gòu)體或字典中的一個(gè)元素。33[{“姓名”:“張三”,“年齡”:“22”,“性別”:“男”},{“姓名”:“李四”,“年齡”:“21”,“性別”:“女”},{“姓名”:“王二”,“年齡”:“24”,“性別”:“男”},]Tree:身份信息檔案表Branch:“姓名”,“年齡”,“性別”Leaf:“張三”,
“22”,“男”粗淺類(lèi)比34[{“姓名”:“張三”,“年齡”:“22”,“性別”:“男”},{“姓名”:“李四”,“年齡”:“21”,“性別”:“女”},{“姓名”:“王二”,“年齡”:“24”,“性別”:“男”},]Tree:身份信息檔案表Branch:“姓名”,“年齡”,“性別”Leaf:“張三”,
“22”,“男”粗淺類(lèi)比TTree能做到取出所有“年齡”branch下的數(shù)據(jù),填成一個(gè)直方圖,就得到了所有人的年齡分布。在粒子物理數(shù)據(jù)分析中,每個(gè)事例可能是一次觀測(cè)到的一個(gè)粒子,這個(gè)事例就會(huì)包含:粒子種類(lèi)、能量、三個(gè)方向的動(dòng)量、徑跡起始點(diǎn)位置三坐標(biāo),粒子湮滅點(diǎn)三坐標(biāo)等等的信息。每個(gè)信息都對(duì)應(yīng)著一個(gè)Branch,所有的事例的集合就是TTree格式保存的內(nèi)容。生成一個(gè)Tree并且保存。35自己試試:>rootroot[0].LMacro-tree.Croot[1]example1()或者:>rootMacro-tree.Croot[0]example1()boolexample1()
{
TTree*tr=newTTree("mytree","mytree");
doublepot,cur,temp,pres;
tr->Branch("Potential",&pot,"Potential/D");
tr->Branch("Current",&cur,"Current/D");
tr->Branch("Temperature",&temp,"Temperature/D");
tr->Branch("Pressure",&pres,"Pressure/D");
for(inti=0;i!=100000;++i){
|pot=gRandom->Uniform(0.0,10.0)*gRandom->Gaus(1.0,0.01);
|temp=gRandom->Uniform(250.0,350.0)*gRandom->Gaus(0.0,0.3);
|pres=gRandom->Uniform(0.5,1.5)*gRandom->Gaus(1.0,0.02);
|cur=pot/(10.0+0.05*(temp-300.0)-0.2*(pres-1.0))*gRandom->Gaus(1.0,0.01);
|tr->Fill();
}
TFile*file=newTFile("mytree.root","RECREATE");
tr->Write();
file->Close();
returntrue;
}創(chuàng)建一個(gè)Tree,定義Branch結(jié)構(gòu),這里”/D”代表是double型參數(shù)。創(chuàng)建100000個(gè)事例,每個(gè)事例的branch里都填寫(xiě)了
賦值后的leaf保存生成好的Tree放進(jìn)”mytree.root”里觀察TTree用ROOT命令行和TBrowser觀察保存之后的Tree。36自己試試:>rootmytree.rootroot[0].lsTFile**mytree.root
TFile*mytree.root
KEY:TTreemytree;1mytreeroot[1]mytree->Print()*******************************************************************************Tree:mytree:mytree**Entries:100000:Total=3211838bytesFileSize=3071273**::Treecompressionfactor=1.05********************************************************************************Br0:Potential:Potential/D**Entries:100000:TotalSize=802877bytesFileSize=767631**Baskets:26:BasketSize=32000bytesCompression=1.04**............................................................................**Br1:Current:Current/D**Entries:100000:TotalSize=802817bytesFileSize=773979**Baskets:26:BasketSize=32000bytesCompression=1.04**............................................................................*……root[2]mytree->Show(0)======>EVENT:0
Potential=9.95395
Current=-1.88014
Temperature=-3.10794
Pressure=1.45582root[3]mytree->GetEntries("Potential>9.0&&Current<0.8")
(longlong)8696root[4]autotb=TBrowser()TBrowser交互式觀察里面leaf的分布。打印mytree信息查看第0個(gè)事例信息查看滿(mǎn)足條件的事例數(shù)用腳本讀取TTree并且篩選和作圖。37自己試試:>rootroot[0].LMacro-tree.Croot[1]example2()或者:>rootMacro-tree.Croot[0]example2()boolexample2()
{
TFile*file=newTFile("mytree.root","READ");
TTree*tr=(TTree*)file->Get("mytree");
doublepot,cur,temp,pres;
tr->SetBranchAddress("Potential",&pot);
tr->SetBranchAddress("Current",&cur);
tr->SetBranchAddress("Temperature",&temp);
tr->SetBranchAddress("Pressure",&pres);
TH1D*h1=newTH1D("myhist","current;current;events",100,0.0,1.5);
for(inti=0;i!=tr->GetEntries();++i){
|tr->GetEntry(i);
|if(pot>8.0&&temp<300.0&&pres>1.0)h1->Fill(cur);
}
TCanvas*c1=newTCanvas();
c1->cd();
h1->Draw();
returntrue;
}用Tfile讀取Tree把Tree里的Branch的地址
賦予相應(yīng)的參數(shù)地址遍歷所有事例,并根據(jù)需求篩選事例并填入直方圖。畫(huà)出滿(mǎn)足需求的事例
參數(shù)分布的直方圖。38ROOT高階數(shù)據(jù)分析組件39常用高階分析組件RooFit,提供了極其豐富的功能來(lái)構(gòu)建數(shù)據(jù)分布模型,[LearnMore]預(yù)定義了豐富的基礎(chǔ)組件(Gaussian,ArgusBG,Chebychev,Breit-Wigner,etc.)并可以在
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年天翼云高級(jí)運(yùn)維工程師認(rèn)證參考試題庫(kù)(含答案)
- “非物質(zhì)文化遺產(chǎn)”知識(shí)競(jìng)賽參考試題庫(kù)300題(含答案)
- 2025年武漢城市職業(yè)學(xué)院高職單招職業(yè)技能測(cè)試近5年常考版參考題庫(kù)含答案解析
- 合同外包項(xiàng)目服務(wù)協(xié)議
- 銷(xiāo)售產(chǎn)品電子合同
- 氫能源行業(yè)的投資機(jī)會(huì)分析
- 社工勞動(dòng)合同范本
- 標(biāo)準(zhǔn)正式個(gè)人借款合同
- 上海二手房屋買(mǎi)賣(mài)房屋合同
- 房地產(chǎn)開(kāi)發(fā)合同
- 2025年中國(guó)南方航空股份有限公司招聘筆試參考題庫(kù)含答案解析
- 商務(wù)部發(fā)布《中國(guó)再生資源回收行業(yè)發(fā)展報(bào)告(2024)》
- 2025年福建新華發(fā)行(集團(tuán))限責(zé)任公司校園招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 江蘇省駕校考試科目一考試題庫(kù)
- 四川省成都市青羊區(qū)成都市石室聯(lián)合中學(xué)2023-2024學(xué)年七上期末數(shù)學(xué)試題(解析版)
- 咨詢(xún)公司績(jī)效工資分配實(shí)施方案
- 2025新人教版英語(yǔ)七年級(jí)下單詞表
- 中華護(hù)理學(xué)會(huì)團(tuán)體標(biāo)準(zhǔn)-氣管切開(kāi)非機(jī)械通氣患者氣道護(hù)理
- 未成年入職免責(zé)協(xié)議書(shū)
- 光伏電站巡檢專(zhuān)項(xiàng)方案
- 2024年山東省東營(yíng)市中考數(shù)學(xué)試題 (原卷版)
評(píng)論
0/150
提交評(píng)論