Skip to content
Snippets Groups Projects
Commit 3bc0da10 authored by Christopher Dilks's avatar Christopher Dilks
Browse files

feat: draw plots to PNGs

parent 4150e622
Branches
No related tags found
2 merge requests!309Irt algo,!293feat: dRICH benchmarks
#!/usr/bin/env python
# Copyright 2023, Christopher Dilks
# Subject to the terms in the LICENSE file found in the top-level directory.
import ROOT as r
import sys, getopt, pathlib
# suppress graphics
r.gROOT.SetBatch(True)
# ARGUMENTS
################################################################
ana_file_name = 'out/ana.edm4hep.root'
output_dir = 'out/ana_plots'
helpStr = f'''
{sys.argv[0]} [OPTIONS]
-i <input file>: specify an input file, e.g., hepmc
default: {ana_file_name}
-o <output dir>: specify an output directory
default: {output_dir}
-h: show this usage guide
'''
try:
opts, args = getopt.getopt(sys.argv[1:], 'i:o:h')
except getopt.GetoptError:
print('\n\nERROR: invalid argument\n', helpStr, file=sys.stderr)
sys.exit(2)
for opt, arg in opts:
if(opt == '-i'): ana_file_name = arg.lstrip()
if(opt == '-o'): output_dir = arg.lstrip()
if(opt == '-h'):
print(helpStr)
sys.exit(2)
print(f'''
ana_file_name = {ana_file_name}
output_dir = {output_dir}
''')
# PLOTTING
################################################################
# make canvases
ana_file = r.TFile.Open(ana_file_name, "READ")
def make_canv(name, dimx=1200, dimy=800):
return r.TCanvas(name, name, dimx, dimy)
canv_dict = {
"photon_spectra": make_canv("photon_spectra"),
"digitization": make_canv("digitization"),
"pidAerogel": make_canv("pidAerogel"),
"pidGas": make_canv("pidGas"),
"pidMerged": make_canv("pidMerged"),
}
# draw photon spectra
canv = canv_dict["photon_spectra"]
canv.Divide(1,2)
for i in range(2):
canv.GetPad(i+1).SetGrid(1,1)
canv.GetPad(i+1).SetLogy()
canv.cd(1)
ana_file.Get("phot/phot_spectrum_sim").Draw()
canv.cd(2)
ana_file.Get("digi/phot_spectrum_rec").Draw()
# draw digitization
canv = canv_dict["digitization"]
canv.Divide(2,2)
for i in range(4):
canv.GetPad(i+1).SetGrid(1,1)
if(i<2):
canv.GetPad(i+1).SetLogy()
else:
canv.GetPad(i+1).SetLogz()
canv.cd(1)
ana_file.Get("digi/adc_dist").Draw()
canv.cd(2)
ana_file.Get("digi/tdc_dist").Draw()
canv.cd(3)
ana_file.Get("digi/tdc_vs_adc").Draw("COLZ")
# draw CherenkovPID
for rad in ["Aerogel", "Gas", "Merged"]:
pid_name = f'pid{rad}'
canv = canv_dict[pid_name]
canv.Divide(2,2)
for i in range(4):
canv.GetPad(i+1).SetGrid(1,1)
canv.cd(1)
ana_file.Get(f'{pid_name}/npe_dist_{rad}').Draw()
canv.cd(2)
ana_file.Get(f'{pid_name}/theta_dist_{rad}').Draw()
canv.cd(3)
ana_file.Get(f'{pid_name}/thetaResid_dist_{rad}').Draw()
canv.cd(4)
ana_file.Get(f'{pid_name}/highestWeight_dist_{rad}').Draw()
# FINISH
################################################################
pathlib.Path(output_dir).mkdir(parents=True, exist_ok=True)
for name, canvas in canv_dict.items():
canvas.SaveAs(f'{output_dir}/{name}.png')
ana_file.Close()
#!/usr/bin/ruby
#!/usr/bin/env ruby
# Copyright 2023, Christopher Dilks
# Subject to the terms in the LICENSE file found in the top-level directory.
......@@ -201,6 +201,14 @@ analysis_cmd = [
analysis_cmd.append "-a #{opt.algos.join ' '}" if opt.algos.size > 0
analysis_cmd.append '-' + 'v'*opt.verbosity if opt.verbosity > 0
# define analysis draw command
# ---------------------------------------------------
draw_cmd = [
"#{__dir__}/draw_benchmark.py",
"-i #{opt.ana_file}",
"-o #{opt.ana_file.gsub(/edm4hep.root$/,"plots")}"
]
# execute commands
# ---------------------------------------------------
......@@ -229,3 +237,4 @@ puts '-'*50
exe.call evgen_cmd, 'event generation', :sim
exe.call recon_cmd, 'reconstruction', :rec
exe.call analysis_cmd, 'analysis', :ana
exe.call draw_cmd, 'draw', :ana
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment