13 <contact>software-tracking@belle2.org</contact>
14 <input>VxdCdcValidationHarvested.root</input>
15 <output>VxdCdcMergerValidation.root</output>
16 <description>This module creates efficiency plots
for the V0 validation.</description>
26class VxdCdcMergerValidationPlots:
27 """Create efficiency plots for the V0 validation"""
29 def __init__(self, input_file='../VxdCdcValidationHarvested.root', output_file='VxdCdcMergerValidation.root'):
44 """Fill the histograms in each event"""
45 input_root_file = ROOT.TFile.Open(self.
input_file,
"READ")
47 for event
in input_root_file.VxdCdcMergerHarvester_tree:
52 input_root_file.Close()
56 def histogram_plot(hist, title, x_variable, x_unit=None, description='', check='', contact='', meta_options=''):
57 """Label and annotate the histograms"""
58 hist.SetName(
"".join(title.split()))
59 xlabel = f
'{x_variable} / ({x_unit})' if x_unit
is not None else f
'{x_variable}'
60 ylabel = f
'Entries / ({(hist.GetXaxis().GetXmax() - hist.GetXaxis().GetXmin()) / hist.GetNbinsX()} {x_unit})' \
61 if x_unit
is not None \
62 else f
'Entries / ({(hist.GetXaxis().GetXmax() - hist.GetXaxis().GetXmin()) / hist.GetNbinsX()})'
63 hist.SetTitle(f
"{title};{xlabel};{ylabel}")
64 hist.GetListOfFunctions().Add(ROOT.TNamed(
'Description', description))
65 hist.GetListOfFunctions().Add(ROOT.TNamed(
'Check', check))
66 hist.GetListOfFunctions().Add(ROOT.TNamed(
'Contact', contact))
67 hist.GetListOfFunctions().Add(ROOT.TNamed(
'MetaOptions', meta_options))
71 """Draw all of the histograms to the output ROOT file"""
72 output_root_file = ROOT.TFile.Open(self.
output_file,
"RECREATE")
74 VxdCdcMergerValidationPlots.histogram_plot(self.
hist_merged_hits,
"Number of hits of merged tracks",
"Number of Hits",
None,
75 description=
'Number of hits of merged tracks',
77 contact=
'software-tracking@belle2.org',
78 meta_options=
'').Write()
80 VxdCdcMergerValidationPlots.histogram_plot(self.
hist_good_over_pt,
"Good Merge over Pt",
"MC Track Pt (GeV)",
None,
81 description=
'Good Merge over Pt',
83 contact=
'software-tracking@belle2.org',
84 meta_options=
'').Write()
86 VxdCdcMergerValidationPlots.histogram_plot(self.
hist_good_over_theta,
"Good Merge over Theta",
"MC Track Theta (1)",
None,
87 description=
'Good Merge over Theta',
89 contact=
'software-tracking@belle2.org',
90 meta_options=
'').Write()
92 output_root_file.Write()
93 output_root_file.Close()
97if __name__ ==
'__main__':
101 print(
"This validation deactivated and thus basf2 is not executed.\n"
102 "If you want to run this validation, please set the 'ACTIVE' flag above to 'True'.\n"
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.