Skip to content
Snippets Groups Projects

added yoda to root converter for Pythia ART tests

Merged Luzhan Yue requested to merge (removed):Tony_QT_ART into master
All threads resolved!
@@ -4,38 +4,29 @@ import yoda
fName = 'MyOutput.yoda.gz'
yodaAOs = yoda.read(fName)
#print(yodaAOs)
rtFile = rt.TFile(fName[:fName.find('.yoda')] + '.root', 'recreate')
#print(rtFile)
for name_slashes in yodaAOs:
name = name_slashes.replace("/", "_")
yodaAO = yodaAOs[name_slashes]; rtAO = None
#print(rtAO)
#print(yodaAO)
yodaAO = yodaAOs[name_slashes]
rtAO = None
if 'Histo1D' in str(yodaAO):
rtAO = rt.TH1D(name, '', yodaAO.numBins(), array('d', yodaAO.xEdges()))
#print(rtAO)
rtAO.Sumw2(); rtErrs = rtAO.GetSumw2()
#print(rtErrs)
#print(rtAO.GetSumw2()) ## prints <ROOT.TArrayD object at 0x49862f0>
#print(rtAO.Sumw2()) ## this is printing "none" which I guess rtAO.Sumw2() is not working and I suspect GetSumw2() did not work too, but it has printed things like "<ROOT.TArrayD object at 0x49862f0>"
rtAO.Sumw2()
rtErrs = rtAO.GetSumw2()
for i in range(rtAO.GetNbinsX()):
#print(rtAO.GetNbinsX())
rtAO.SetBinContent(i + 1, yodaAO.bin(i).sumW())
#print(rtAO.SetBinContent(i + 1, yodaAO.bin(i).sumW()))
#print(yodaAO.bin(i).sumW())
rtErrs.AddAt(yodaAO.bin(i).sumW2(), i+1)
#print(yodaAO.bin(i).sumW2())
#print (rtErrs.AddAt(yodaAO.bin(i).sumW2(), i+1))
#print(rtErrs)
elif 'Scatter2D' in str(yodaAO):
rtAO = rt.TGraphAsymmErrors(yodaAO.numPoints())
rtAO.SetName(name)
print(rtAO)
for i in range(yodaAO.numPoints()):
x = yodaAO.point(i).x(); y = yodaAO.point(i).y()
xLo, xHi = yodaAO.point(i).xErrs()
@@ -45,9 +36,6 @@ for name_slashes in yodaAOs:
else:
continue
#print(name) ## prints like "/RAW/MC_TAUS/_tau_y_2_plus"
rtAO.Write(name)
rtFile.Close()
Loading