如何解决如何从根文件中提取直方图并打印它们,但将它们写入宏中以运行
root -l output_idAntiId_Mc16a.root
root [0]
Attaching file output_idAntiId_Mc16a.root as _file0…
(TFile ) 0x7f8b9cba9470
root [1] .ls
TFile* output_idAntiId_Mc16a.root
TFile* output_idAntiId_Mc16a.root
KEY: TDirectoryFile plotEvent;1 plotEvent
KEY: TDirectoryFile pass_wgantiidcr_all_e_Nominal;1 pass_wgantiidcr_all_e_Nominal
KEY: TDirectoryFile pass_wgantiidcr_all_u_Nominal;1 pass_wgantiidcr_all_u_Nominal
root [2] pass_wgantiidcr_all_e_Nominal->cd()
(bool) true
root [3] .ls
TDirectoryFile* pass_wgantiidcr_all_e_Nominal pass_wgantiidcr_all_e_Nominal
KEY: TDirectoryFile pass_wgantiidcr_all_e_Nominal;1 pass_wgantiidcr_all_e_Nominal
KEY: TDirectoryFile plotEvent_Higgs;1 plotEvent_Higgs
KEY: TDirectoryFile plotEvent_Hyyd1;1 plotEvent_Hyyd1
KEY: TDirectoryFile plotEvent_Wy;1 plotEvent_Wy
KEY: TDirectoryFile plotEvent_zgamewk;1 plotEvent_zgamewk
root [4] plotEvent_Wy->cd()
(bool) true
root [5] .ls
TDirectoryFile* plotEvent_Wy plotEvent_Wy
KEY: TH1D w;1 w
KEY: TH1D wElEta;1 wElEta
KEY: TH1D wElPhi;1 wElPhi
KEY: TH1D wElPt;1 wElPt
KEY: TH1D wMuEta;1 wMuEta
KEY: TH1D wMuPhi;1 wMuPhi
KEY: TH1D wMuPt;1 wMuPt
root [7] wElEta->Draw()
Info in TCanvas::MakeDefCanvas: created default TCanvas with name c1
这给了我想要的情节,但我在编写一个可以完成所有这些的宏时遇到了麻烦,我不必一遍又一遍地输入这个我尝试了以下,
TFile *f= new TFile(“output_IdId_Mc16a.root”);
f->ls()
TH1F h1= (TH1F)f->Get("/pass_wgantiidcr_all_e_Nominal/plotEvent_Wy/wElEta");
h1->Draw();
但它没有任何想法?
解决方法
试试
TFile* f = TFile::Open("output_IdId_Mc16a.root");
if (f)
{
TH1F* h1 = (TH1F*)f->Get("pass_wgantiidcr_all_e_Nominal/plotEvent_Wy/wElEta");
if (!h1)
printf("No such histogram found!\n");
}
else
printf("No such file found!\n");
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。