13 <contact>software-tracking@belle2.org</contact>
14 <input>VxdCdcValidationHarvested.root</input>
15 <description>This module creates efficiency plots for the V0 validation.</description>
24 """Create efficiency plots for the V0 validation"""
26 def __init__(self, input_file='../VxdCdcValidationHarvested.root', output_file='VxdCdcMergerValidation.root'):
34 self.
hist_merged_hitshist_merged_hits = ROOT.TH1F(
"merged_hits",
"Merged Hits", 70, 0, 140)
36 self.
hist_good_over_pthist_good_over_pt = ROOT.TProfile(
"good_over_pt",
"Good Merge over Pt", 50, 0, 4)
38 self.
hist_good_over_thetahist_good_over_theta = ROOT.TProfile(
"good_over_theta",
"Good Merge over Theta", 50, 0, 4)
41 """Fill the histograms in each event"""
42 input_root_file = ROOT.TFile.Open(self.
input_fileinput_file,
"READ")
44 for event
in input_root_file.VxdCdcMergerHarvester_tree:
49 input_root_file.Close()
53 def histogram_plot(hist, title, x_variable, x_unit=None, description='', check='', contact='', meta_options=''):
54 """Label and annotate the histograms"""
55 hist.SetName(
"".join(title.split()))
56 xlabel =
'{} / ({})'.format(x_variable, x_unit)
if x_unit
is not None else '{}'.format(x_variable)
57 ylabel =
'Entries / ({} {})'.format((hist.GetXaxis().GetXmax() -
58 hist.GetXaxis().GetXmin()) /
59 hist.GetNbinsX(), x_unit)
if x_unit
is not None \
60 else 'Entries / ({})'.format((hist.GetXaxis().GetXmax() - hist.GetXaxis().GetXmin()) / hist.GetNbinsX())
61 hist.SetTitle(
"{};{};{}".format(title, xlabel, ylabel))
62 hist.GetListOfFunctions().Add(ROOT.TNamed(
'Description', description))
63 hist.GetListOfFunctions().Add(ROOT.TNamed(
'Check', check))
64 hist.GetListOfFunctions().Add(ROOT.TNamed(
'Contact', contact))
65 hist.GetListOfFunctions().Add(ROOT.TNamed(
'MetaOptions', meta_options))
69 """Draw all of the histograms to the output ROOT file"""
70 output_root_file = ROOT.TFile.Open(self.
output_fileoutput_file,
"RECREATE")
72 VxdCdcMergerValidationPlots.histogram_plot(self.
hist_merged_hitshist_merged_hits,
"Number of hits of merged tracks",
"Number of Hits",
None,
73 description=
'Number of hits of merged tracks',
76 meta_options=
'').Write()
78 VxdCdcMergerValidationPlots.histogram_plot(self.
hist_good_over_pthist_good_over_pt,
"Good Merge over Pt",
"MC Track Pt (GeV)",
None,
79 description=
'Good Merge over Pt',
82 meta_options=
'').Write()
84 VxdCdcMergerValidationPlots.histogram_plot(self.
hist_good_over_thetahist_good_over_theta,
"Good Merge over Theta",
"MC Track Theta (1)",
None,
85 description=
'Good Merge over Theta',
88 meta_options=
'').Write()
90 output_root_file.Write()
91 output_root_file.Close()
95 if __name__ ==
'__main__':
def histogram_plot(hist, title, x_variable, x_unit=None, description='', check='', contact='', meta_options='')
input_file
cached name of the input file
def __init__(self, input_file='../VxdCdcValidationHarvested.root', output_file='VxdCdcMergerValidation.root')
output_file
cached name of the output file
hist_good_over_pt
Profile histogram of good merged hits by transverse momentum.
def collect_histograms(self)
hist_merged_hits
1D histogram of merged hits
hist_good_over_theta
Profile histogram of good merged hits by polar angle.