Рисование нескольких гистограмм на одном холсте с помощью Py ROOT в цикле - PullRequest
0 голосов
/ 25 апреля 2020

Я использую Py ROOT, чтобы попытаться l oop над файлами в папке, получить указанную гистограмму c, которая присутствует во всех файлах (два в минимальном тесте) и нарисовать все гистограммы в том же холсте. Минимальный пример, который я запускаю только с двумя гистограммами, следующий:

import ROOT
import os

inputDir = "inputExample/"
outputDir =  "outputExample/"

c1 = ROOT.TCanvas('c1', 'c1')
for filename in os.listdir(inputDir):
    inputFile = ROOT.TFile.Open(inputDir+filename)
    hist = inputFile.Get("variables/Method_BDT/BDT/MVA_BDT_trainingRejBvsS")
    if filename == "first.root":
        hist.Draw("")
    else:
        hist.Draw("SAME")

c1.SaveAs(outputDir+"Superimposed.png")

Я не понимаю, почему сохраняется только вторая гистограмма. Вот еще один минимальный пример, который, как я ожидаю, будет эквивалентен и работает правильно (обе гистограммы нарисованы на одном и том же холсте).

import ROOT

inputDir = "inputExample/"
outputDir =  "outputExample/"

c1 = ROOT.TCanvas('c1', 'c1')
inputFile1 = ROOT.TFile.Open(inputDir+"first.root")
hist = inputFile1.Get("variables/Method_BDT/BDT/MVA_BDT_trainingRejBvsS")
hist.Draw("")
inputFile2 = ROOT.TFile.Open(inputDir+"second.root")
hist = inputFile2.Get("variables/Method_BDT/BDT/MVA_BDT_trainingRejBvsS")
hist.Draw("SAME")

c1.SaveAs(outputDir+"Superimposed.png")
...