From f3fdb3cdd306c22791a8c4199590c63a041f84cf Mon Sep 17 00:00:00 2001 From: Luzhan Yue <luzhan.yue@cern.ch> Date: Tue, 30 Mar 2021 08:04:33 +0000 Subject: [PATCH] added yoda to root converter for Pythia ART tests --- .../EvgenProdTools/scripts/rootconvert.py | 41 +++++++++++++++++++ Generators/Pythia8_i/test/test_01_Z_tautau.sh | 12 +++--- 2 files changed, 48 insertions(+), 5 deletions(-) create mode 100755 Generators/EvgenProdTools/scripts/rootconvert.py diff --git a/Generators/EvgenProdTools/scripts/rootconvert.py b/Generators/EvgenProdTools/scripts/rootconvert.py new file mode 100755 index 000000000000..d3a3a253844a --- /dev/null +++ b/Generators/EvgenProdTools/scripts/rootconvert.py @@ -0,0 +1,41 @@ +from array import array +import ROOT as rt +import yoda + +fName = 'MyOutput.yoda.gz' +yodaAOs = yoda.read(fName) +rtFile = rt.TFile(fName[:fName.find('.yoda')] + '.root', 'recreate') + +for name_slashes in yodaAOs: + name = name_slashes.replace("/", "_") + yodaAO = yodaAOs[name_slashes] + rtAO = None + + if 'Histo1D' in str(yodaAO): + rtAO = rt.TH1D(name, '', yodaAO.numBins(), array('d', yodaAO.xEdges())) + + + rtAO.Sumw2() + rtErrs = rtAO.GetSumw2() + + for i in range(rtAO.GetNbinsX()): + + rtAO.SetBinContent(i + 1, yodaAO.bin(i).sumW()) + rtErrs.AddAt(yodaAO.bin(i).sumW2(), i+1) + + elif 'Scatter2D' in str(yodaAO): + rtAO = rt.TGraphAsymmErrors(yodaAO.numPoints()) + rtAO.SetName(name) + + for i in range(yodaAO.numPoints()): + x = yodaAO.point(i).x(); y = yodaAO.point(i).y() + xLo, xHi = yodaAO.point(i).xErrs() + yLo, yHi = yodaAO.point(i).yErrs() + rtAO.SetPoint(i, x, y) + rtAO.SetPointError(i, xLo, xHi, yLo, yHi) + else: + continue + + rtAO.Write(name) + +rtFile.Close() diff --git a/Generators/Pythia8_i/test/test_01_Z_tautau.sh b/Generators/Pythia8_i/test/test_01_Z_tautau.sh index 0842307f6175..7ed9d24573d7 100755 --- a/Generators/Pythia8_i/test/test_01_Z_tautau.sh +++ b/Generators/Pythia8_i/test/test_01_Z_tautau.sh @@ -16,17 +16,19 @@ Gen_tf.py --ecmEnergy=13000. --maxEvents=10000 --firstEvent=-1 --randomSeed=1234 echo "art-result:$? Gen_tf" -python /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Pythia8i/rootconvert.py MyOutput.yoda.gz +python rootconvert.py MyOutput.yoda.gz -dcubeName = "Pythia8i" +echo "art-result: $? convert" + +dcubeName="Pythia8i" dcubeXml="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Pythia8i/test_01_Z_tautau/config_Ztt.xml" dcubeRef="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Pythia8i/test_01_Z_tautau/MyOutput.root" #dcubeName="Pythia8i" -#dcubeXml="/afs/cern.ch/user/l/lyue//Qualification_task_ART/Pythia_8/DcubeReference/test_01_Z_tautau/config_Ztt.xml" -#dcubeRef="/afs/cern.ch/user/l/lyue//Qualification_task_ART/Pythia_8/DcubeReference/test_01_Z_tautau/MyOutput.root" +#dcubeXml="/afs/cern.ch/user/l/lyue/Qualification_task_ART/Pythia_8/DcubeReference/test_01_Z_tautau/config_Ztt.xml" +#dcubeRef="/afs/cern.ch/user/l/lyue/Qualification_task_ART/Pythia_8/result_grid/testscripts/test_01_Z_tautau/MyOutput.root" bash /cvmfs/atlas.cern.ch/repo/sw/art/dcube/bin/art-dcube $dcubeName MyOutput.root $dcubeXml $dcubeRef -#yodadiff -o yodadiff MyOutput.yoda.gz ~/Qualification_task_ART/Pythia_8/result/Pythia_8/test_01_Z_tautau/MyOutput.yoda.gz # use this for histogram comparison if one only care if they are exactly the same +#yodadiff -o yodadiff MyOutput.yoda.gz ~/Qualification_task_ART/Pythia_8/result/Pythia_8/test_00_Zprime_1000_tt/MyOutput.yoda.gz # use this for histogram comparison if one only care if they are exactly the same echo "art-result: $? Dcube" -- GitLab