创建一个TH2,其中包含给定仓中变量的标准偏差

Create a TH2 which contains the standard deviation of a variable in a given bin

本文关键字:变量 标准 包含 创建 一个 TH2      更新时间:2023-10-16

我有一个粒子探测器中事件位置的XY图,这些事件有几十个变量来表征它们。以能量为例:通过在ROOT:中制作三个TH2F,我可以在探测器的一个小区域内找到一个事件的平均能量

TH2F* h_xy  = new TH2F("h_xy","h_xy",100,-10,10,100,-10,10);
TH2F* h_xyw = new TH2F("h_xyw","h_xyw",100,-10,10,100,-10,10);
TH2F* h_avg = new TH2F("h_avg","h_avg",100,-10,10,100,-10,10);

我用我的所有事件填充h_xy,分布在xy上。直方图中的每个条目都被加权为1。然后,我用我所有的事件填充h_xyw,用能量加权。h_xyw除以h_xy得到了每个仓的平均能量,我将其放入h_avg中。我在ROOT命令行上完成所有这些,所以很容易做到:

tree->Draw("energy>>h_xy","","colz")

然后从柱状图中提取信息接下来,除了平均值之外,我还希望能够绘制每个仓中权重的标准偏差。我知道我可以通过编写一个编译过的脚本来实现这一点,但我想知道是否有一种我从未想过的简单方法来实现这个命令行。

与您现有的命令类似,您可以用能量平方作为weights来填充另一个直方图h_xyww。然后将h_xyww除以h_xy(平均能量平方),将直方图与平均能量相乘(平均能量的平方),然后将两者相减。

std_dev^2 = <E^2> - <E>^2