如何从 TTree 中绘制 COLZ TH2F?
How to Draw a COLZ TH2F from a TTree?
我正在尝试从树中绘制 COLZ 图,即带有颜色条的 2D 直方图,并且能够自己定义 bin 的数量。
我的树名为事件:
我试过:
event->Draw("x:y>>hist1(1000,100,500,1000,0,500)", "x>100");
TH2F * hist1 = (TH2F*)gDirectory->Get("hist1");
hist1->Draw("COLZ");
和:
event->Draw("x:y>>hist1(1000,100,500,1000,0,500)", "x>100", "COLZ");
TH2F * hist1 = (TH2F*)gDirectory->Get("hist1");
hist1->Draw();
但都不会绘制直方图。
这将绘制一个散点图:
event->Draw("x:y>>hist1(1000,100,500,1000,0,500)", "x>100");
TH2F * hist1 = (TH2F*)gDirectory->Get("hist1");
hist1->Draw();
这将绘制一个 COLZ 图,但使用这种方法我无法自己定义 bin 大小:
event->Draw("x:y", "x>100", "COLZ");
我无法重现该问题,您的第一次尝试对我有效:
event->Draw("x:y>>hist1(1000,100,500,1000,0,500)", "x>100");
TH2F * hist1 = (TH2F*)gDirectory->Get("hist1");
hist1->Draw("COLZ");
它也可以在一行中工作:
event->Draw("x:y>>hist1(1000,100,500,1000,0,500)", "x>100", "COLZ");
在您的第三种情况下,如果 hist1->Draw();
绘制散点图,那么 hist1->Draw("COLZ");
也应该有效。你运行也是这样吗?如果是这样,你能提供一个Minimal, Complete, and Verifiable example吗?
注意:hist1->Draw();
的结果不是散点图(ROOT在这里会产生误导),它是一个直方图,其中bin内容用点表示。参见例如this plot 您可以在其中猜测底层 bin。
感谢 Keldorn 的回答,但问题出在我没有发布的部分代码中。
我正在使用以下方式访问我的根文件:
TFile f("file.root");
TTree* event = (TTree*)f.Get("EventTree");
将其更改为:
TFile *f = new TFile("file.root");
TTree* event = (TTree*)f->Get("EventTree");
解决了我所有的直方图问题!
我正在尝试从树中绘制 COLZ 图,即带有颜色条的 2D 直方图,并且能够自己定义 bin 的数量。 我的树名为事件:
我试过:
event->Draw("x:y>>hist1(1000,100,500,1000,0,500)", "x>100");
TH2F * hist1 = (TH2F*)gDirectory->Get("hist1");
hist1->Draw("COLZ");
和:
event->Draw("x:y>>hist1(1000,100,500,1000,0,500)", "x>100", "COLZ");
TH2F * hist1 = (TH2F*)gDirectory->Get("hist1");
hist1->Draw();
但都不会绘制直方图。
这将绘制一个散点图:
event->Draw("x:y>>hist1(1000,100,500,1000,0,500)", "x>100");
TH2F * hist1 = (TH2F*)gDirectory->Get("hist1");
hist1->Draw();
这将绘制一个 COLZ 图,但使用这种方法我无法自己定义 bin 大小:
event->Draw("x:y", "x>100", "COLZ");
我无法重现该问题,您的第一次尝试对我有效:
event->Draw("x:y>>hist1(1000,100,500,1000,0,500)", "x>100");
TH2F * hist1 = (TH2F*)gDirectory->Get("hist1");
hist1->Draw("COLZ");
它也可以在一行中工作:
event->Draw("x:y>>hist1(1000,100,500,1000,0,500)", "x>100", "COLZ");
在您的第三种情况下,如果 hist1->Draw();
绘制散点图,那么 hist1->Draw("COLZ");
也应该有效。你运行也是这样吗?如果是这样,你能提供一个Minimal, Complete, and Verifiable example吗?
注意:hist1->Draw();
的结果不是散点图(ROOT在这里会产生误导),它是一个直方图,其中bin内容用点表示。参见例如this plot 您可以在其中猜测底层 bin。
感谢 Keldorn 的回答,但问题出在我没有发布的部分代码中。
我正在使用以下方式访问我的根文件:
TFile f("file.root");
TTree* event = (TTree*)f.Get("EventTree");
将其更改为:
TFile *f = new TFile("file.root");
TTree* event = (TTree*)f->Get("EventTree");
解决了我所有的直方图问题!