_ROOT Version: 6.24.06
_Platform: lxplus
_Compiler: N/A
Dear ROOT Experts,
I was trying to create weighted histograms in a TTree using the TTree->Draw()
method when I noticed the histograms that were drawn were different than the ones drawn by RDataFrame or even one drawn using a for loop in PyROOT. The file I am using can be found on “cernbox.cern.ch/index.php/s/XIHecdLh4F8wiEd”.
In order to create a histogram representing the sum of weights in a TTree, I ran the following command: TTree_500_350->Draw("weight >> inc(1, -1000, 1000)", "weight");inc->Print("all")
. There, I get the following output:
Info in <TCanvas::MakeDefCanvas>: created default TCanvas with name c1
TH1.Print Name = inc, Entries= 4309258, Total sum= 62281.1
fSumw[0]=0, x=-2000, error=0
fSumw[1]=62281.1, x=0, error=33.3616
fSumw[2]=0, x=2000, error=0
Now, if one were to compute the sum of weights using RDataFrame (or a for loop) in PyROOT, one gets 62519.9 events. This is a significant difference between the two methods. I would appreciate it if someone could clarify why this difference exists and whether one can trust TTree->Draw()
or now.
Best Regards,
Sahibjeet Singh
P.S. the python script I used to get the sum of the weight branch in RDataFrame is:
import ROOT as rt
rdf = rt.RDataFrame("TTree_500_350", "allMC16-410429-nominal.root")
SumW = rdf.Sum('weight').GetValue()
print(SumW)