我不确定如何正确说出这个问题,但这是我正在尝试做的。根据不同变量名称在ROOT中绘制直方图
单个直方图可以使用CERN ROOT用下面的命令来绘制,
(TH1F*)electron->Draw();
但我已经在几十序列命名的直方图,如electron1,elecron2,electron3,等等,我想写一个简单的循环来绘制它们。我尝试使用sprintf和一个简单的for循环,但ROOT不喜欢它。
char name[20];
(TH1F*)electron->Draw();
for(int j=0;j<5;j++){
sprintf(name, "%s%d","electron",j);
(TH1F*)name->Draw("same");
}
我在做什么错?
在此先感谢。
这是正确的答案。尽管完全遵循ROOT的风格,但可以用'std :: string'和'boost :: lexical_cast'完成相同的功能,这是一个更具意义的C++,但对大多数ROOT用户来说也可能更令人困惑,因为它不起作用在CINT宏中也是如此。 –
谢谢你。正如你可能知道的Root根本不认为C++ :) –
很快所有的事情肯定会随着root-6的发布而改变,在这里root的替换cint。每个人都会为现代C++典型的高级功能级别的程序。 ROOT宏一次用于绘制20k行代码以创建并填充不同的直方图将在几行将算法映射到数据容器中完成。是的,我确信一旦允许我们在ROOT分析宏中编写适当的C++,我们就能够做到。 –