13from os.path
import exists
18modelFile =
"HiggsModel.onnx"
19modelName =
"HiggsModel"
21if not exists(modelFile):
22 raise FileNotFoundError(
"You need to run TMVA_SOFIE_PyTorch_HiggsModel.py to generate the ONNX trained model")
25parser = ROOT.TMVA.Experimental.SOFIE.RModelParser_ONNX()
26model = parser.Parse(modelFile)
30model.OutputGenerated(
"Higgs_trained_model_generated.hxx")
34print(
"compiling SOFIE model and inference helper....")
35ROOT.gInterpreter.Declare(
'#include "Higgs_trained_model_generated.hxx"\n#include <array>\n#include <vector>')
42ROOT.gInterpreter.ProcessLine(
"std::vector<TMVA_SOFIE_" + modelName +
"::Session> sofie_sessions;")
43ROOT.sofie_sessions.emplace_back(
"Higgs_trained_model_generated.dat")
48ROOT.gInterpreter.Declare(
"""
49double sofie_eval(unsigned int slot, float m_jj, float m_jjj, float m_lv, float m_jlv, float m_bb, float m_wbb,
52 std::array<float, 7> input{m_jj, m_jjj, m_lv, m_jlv, m_bb, m_wbb, m_wwbb};
53 return sofie_sessions[slot].infer(input.data())[0];
58inputFile = str(ROOT.gROOT.GetTutorialDir()) +
"/machine_learning/data/Higgs_data.root"
60h1 = df1.Define(
"DNN_Value",
"sofie_eval(rdfslot_,m_jj, m_jjj, m_lv, m_jlv, m_bb, m_wbb, m_wwbb)").Histo1D((
"h_sig",
"", 100, 0, 1),
"DNN_Value")
63h2 = df2.Define(
"DNN_Value",
"sofie_eval(rdfslot_,m_jj, m_jjj, m_lv, m_jlv, m_bb, m_wbb, m_wwbb)").Histo1D((
"h_bkg",
"", 100, 0, 1),
"DNN_Value")
68print(
"Number of signal entries",h1.GetEntries())
69print(
"Number of background entries",h2.GetEntries())
71h1.SetLineColor(
"kRed")
72h2.SetLineColor(
"kBlue")
75ROOT.gStyle.SetOptStat(0)
ROOT's RDataFrame offers a modern, high-level interface for analysis of data stored in TTree ,...
unsigned int RunGraphs(std::vector< RResultHandle > handles)
Run the event loops of multiple RDataFrames concurrently.