如何从根文件中提取直方图并打印它们,但将它们写入宏中以运行

问题描述

因此,当我从根文件提取直方图时,我会按照以下方式进行操作

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");

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...