[cernRoot] how to get contours from a TH2D
2016-12-02 13:16
453 查看
here, i use a
TMultiGraphto save the gotten contours, because the contours may be not closed in a
TH2D, with the function
TMultiGraph * GetContours(const char * fn, const char * th2dname, int nlevel). And in the
Test()function, the
TGraphobjects of the
TMultiGraphare extracted.
void Test() { TMultiGraph * mg = GetContours("res_b64_fit_3id_ddmts_mc.root", "0", 1); mg->DrawClone("ACP"); // TList * list = mg->GetListOfGraphs(); // TGraph * gr = (TGraph *)list->First(); // gr->DrawClone("ACP"); // cout << list->GetSize() << endl; delete mg; } TMultiGraph * GetContours(const char * fn, const char * th2dname, int nlevel) { TGraph ** gr; TFile * f = new TFile(fn, "read"); TH2D * h = (TH2D *) f->Get(th2dname); double chisq = h->GetMinimum(); double contours[2] = {chisq + 2.3, chisq + 6.14}; h->SetContour(2, contours); TCanvas * cc = new TCanvas(th2dname, th2dname); cc->Divide(2,2); cc->cd(1); h->Draw("CONT1"); cc->cd(2); h->Draw("CONT Z LIST"); cc->Update();///////////////////////////// TObjArray * cont = (TObjArray *)(gROOT->GetListOfSpecials()->FindObject("contours")); TList * list = (TList *)cont->At(nlevel); int ngr = list->GetSize(); TGraph * grtemp; if(ngr > 0) { gr = new TGraph * [ngr]; grtemp = (TGraph *)list->First(); gr[0] = grtemp->Clone(); for(int igr = 1; igr < ngr; ++ igr) { grtemp = (TGraph *)list->After(grtemp); gr[igr] = grtemp->Clone(); } } cc->Close(); delete cc; f->Close(); delete f; delete grtemp; TMultiGraph * mg = new TMultiGraph(); for(int i = 0; i < ngr; ++ i) mg->Add(gr[i]); delete [] gr; return mg; }
相关文章推荐
- how to calculate the textsize of TLatex in CernRoot
- [cernRoot]how to get tree name?
- [cernRoot]how to deal with TPavetext->SetTextAngle()?
- [cernRoot] How make a beautiful graph by CernRoot?
- [cernRoot]How to get tree name from root file
- [cernRoot] Getting Contours From TH2D
- [cernRoot]Get graphs from TMultiGraph
- Linux那些事儿之我是UHCI(18)Root Hub的控制传输(二)
- suse 11 root密码重新设置
- mysql 5.1 在Windows下重置root 用户密码
- MySQL:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
- linux 逻辑卷管理 调整分区大小:/dev/mapper/VolGroup-lv_root 50G 47G 16M 100%
- 忘记mysql数据库root用户密码的解决办法
- 解决mysql的“Access denied for user ‘root’@'localhost’”
- DocumentRoot [xxx/apache2.2/docs/dummy-host.rudder.com
- 安卓ROOT后禁用/隐藏导航栏/虚拟按键
- Linux系统安装oracle时,orainstRoot.sh,root.sh脚本的作用。
- 忘记了Mysql的root用户的密码,怎么办?
- ubuntu切换到root