See also: the simple benchmark for comparing mostly the read/interpretation speed between ROOT and Julia.
Language | Run Time |
---|---|
Julia | 19.67 s |
PyROOT RDF | 38.97 s |
Compiled RDF | 25.04 s |
Compiled C++ ROOT Loop | 19.63 s |
Python Uproot loop-less | 29.13 s |
Language | Run Time |
---|---|
Julia | 5.25 s |
PyROOT RDF | 11.01 s |
Compiled RDF | 8.67 s |
Compiled C++ ROOT Loop | Not impl. |
Python Uproot loop-less | Not impl. |
For more timing (compile, JIT etc.), navigate to composite_benchmark directory.
(all heavy lifting functions used by RDataFrame are written in C++ inside header file)
Make a histogram of 4-lepton invariant mass (higgs candidate in real analysis)
http://opendata.web.cern.ch/record/12341
julia> mytree
Row │ nMuon Muon_pt Muon_eta Muon_phi Muon_mass Muon_charge
│ UInt32 SubArray{Float3 SubArray{Float3 SubArray{Float3 SubArray{Float3 SubArray{Int32,
─────┼─────────────────────────────────────────────────────────────────────────────────────────────────
1 │ 2 Float32[10.76369 Float32[1.066827 Float32[-0.03427 Float32[0.105658 Int32[-1, -1]
2 │ 2 Float32[10.53849 Float32[-0.42778 Float32[-0.27479 Float32[0.105658 Int32[1, -1]
3 │ 1 Float32[3.275326 Float32[2.210855 Float32[-1.22341 Float32[0.105658 Int32[1]
minimized based on: https://root.cern/doc/v632/df103__NanoAODHiggsAnalysis_8py.html
nMuon == 4
.- All muon has
pt > 5
andabs(eta) < 2.4
. - Sum of
Muon_charge
equals 0. - Get the
Z_idx = [[idx1, idx2], [idx3, idx4]]
which represent two pairs of Z-candidate muons. - Each Z-candidate muon pair must not have
dR < 0.02
. - Compute the two Z bosons' masses and require first to be between 40,120 GeV, the second between 12,120 GeV.
- Compute Higgs' mass and fill Histogram.
$ root --version
ROOT Version: 6.30/05
Built for linuxx8664gcc on Mar 01 2024, 00:06:39
From heads/v6-30-00-patches@v6-30-04-28-g4462606
julia> versioninfo()
Julia Version 1.10.3
Commit 0b4590a5507 (2024-04-30 10:59 UTC)
Build Info:
Official https://julialang.org/ release
Platform Info:
OS: Linux (x86_64-linux-gnu)
CPU: 96 × AMD EPYC 7402 24-Core Processor
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-15.0.7 (ORCJIT, znver2)
Threads: 4 default, 0 interactive, 2 GC (on 96 virtual cores)
(composite_benchmarks) pkg> st
Status `~/UnROOT_RDataFrame_MiniBenchmark/composite_benchmarks/Project.toml`
[68837c9b] FHist v0.11.4
[f612022c] LorentzVectorHEP v0.1.6
[811555cd] ThreadPinning v0.7.22
[3cd96dde] UnROOT v0.10.30