Belle II Software  release-05-01-25
EKLMMuonPlot.py
1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3 
4 """
5 <header>
6  <input>muon-KLMValidation.root</input>
7  <contact>Martina Laurenza (martina.laurenza@roma3.infn.it)</contact>
8  <description>Creation of EKLM muon validation plots.</description>
9 </header>
10 """
11 
12 import ROOT
13 from ROOT import TNamed
14 
15 ROOT.gROOT.SetBatch(True)
16 input_file = ROOT.TFile('../muon-KLMValidation.root')
17 tree = input_file.Get('tree')
18 output_file = ROOT.TFile('EKLMMuon.root', 'recreate')
19 contact = 'Martina Laurenza (martina.laurenza@roma3.infn.it)'
20 
21 
22 # Shifter Plots
23 
24 h2dtres = ROOT.TH1F('muon_h2dtres', 'EKLM muon 2d hits time resolution',
25  100, -10, 10)
26 h2dtres.SetXTitle('ns')
27 h2dtres.SetYTitle('Events')
28 tree.Draw('EKLMHit2ds.m_Time-EKLMHit2ds.m_MCTime>>muon_h2dtres')
29 functions = h2dtres.GetListOfFunctions()
30 functions.Add(TNamed('Description', 'Time resolution'))
31 functions.Add(TNamed('Check', 'No bias.'))
32 functions.Add(TNamed('Contact', contact))
33 functions.Add(TNamed('MetaOptions', 'shifter'))
34 
35 eklm_digits_tres = ROOT.TH1F('eklm_digits_tres',
36  'KLMDigits time resolution in EKLM', 250, -25, 25)
37 eklm_digits_tres.SetXTitle('ns')
38 eklm_digits_tres.SetYTitle('Events')
39 tree.Draw('KLMDigits.m_Time-KLMDigits.m_MCTime>>eklm_digits_tres',
40  'KLMDigits.getSubdetector()==2')
41 functions = eklm_digits_tres.GetListOfFunctions()
42 functions.Add(TNamed('Description', 'KLMDigits time resolution in EKLM'))
43 functions.Add(TNamed('Check', '.'))
44 functions.Add(TNamed('Contact', contact))
45 functions.Add(TNamed('MetaOptions', 'shifter'))
46 
47 section = ROOT.TH1F('Forward', 'Section for EKLMHit2ds', 2, 0.5, 2.5)
48 section.GetXaxis().SetTitle('1=backward 2=forward')
49 section.GetYaxis().SetTitle('Events')
50 tree.Draw('EKLMHit2ds.getSection()>>Forward', '')
51 functions = section.GetListOfFunctions()
52 functions.Add(TNamed('Description', 'Flag indicating if a muon hit is in backward(1) or forward(2) EKLM'))
53 functions.Add(TNamed('Check', ''))
54 functions.Add(TNamed('Contact', contact))
55 functions.Add(TNamed('MetaOptions', 'shifter'))
56 
57 sector = ROOT.TH1F('Sector', 'Sector for EKLMHit2ds', 6, -0.5, 5.5)
58 sector.GetXaxis().SetTitle('Sector #')
59 sector.GetYaxis().SetTitle('Events')
60 tree.Draw('EKLMHit2ds.getSector()>>Sector', '')
61 functions = sector.GetListOfFunctions()
62 functions.Add(TNamed('Description', 'Sector number of muon hit'))
63 functions.Add(TNamed('Check', ''))
64 functions.Add(TNamed('Contact', contact))
65 functions.Add(TNamed('MetaOptions', 'shifter'))
66 
67 layer = ROOT.TH1F('Layer', 'Layer for EKLMHit2ds', 16, -0.5, 15.5)
68 layer.GetXaxis().SetTitle('Layer #')
69 layer.GetYaxis().SetTitle('Events')
70 tree.Draw('EKLMHit2ds.getLayer()>>Layer', '')
71 functions = layer.GetListOfFunctions()
72 functions.Add(TNamed('Description', 'Layer number of muon hit'))
73 functions.Add(TNamed('Check', ''))
74 functions.Add(TNamed('Contact', contact))
75 functions.Add(TNamed('MetaOptions', 'shifter'))
76 
77 time = ROOT.TH1F('Time', 'Hit time for EKLMHit2ds', 150, 0.0, 30.0)
78 time.GetXaxis().SetTitle('t (ns)')
79 time.GetYaxis().SetTitle('Events')
80 tree.Draw('EKLMHit2ds.getTime()>>Time', '')
81 functions = time.GetListOfFunctions()
82 functions.Add(TNamed('Description', 'Time of muon hit in EKLM'))
83 functions.Add(TNamed('Check', ''))
84 functions.Add(TNamed('Contact', contact))
85 functions.Add(TNamed('MetaOptions', 'shifter'))
86 
87 nPE = ROOT.TH1F('nGenPE', 'Generated PE in EKLM', 100, 0.0, 200)
88 nPE.GetXaxis().SetTitle('# generated PE')
89 nPE.GetYaxis().SetTitle('Events')
90 tree.Draw('KLMDigits.getNGeneratedPhotoelectrons()>>nGenPE',
91  'KLMDigits.getSubdetector()==2')
92 functions = nPE.GetListOfFunctions()
93 functions.Add(TNamed('Description', 'Number of generated photoelectrons in EKLM'))
94 functions.Add(TNamed('Check', ''))
95 functions.Add(TNamed('Contact', contact))
96 functions.Add(TNamed('MetaOptions', 'shifter'))
97 
98 # Expert Plots
99 
100 edep = ROOT.TH1F('edep', 'Energy deposition for KLMDigits', 150, 0.0, 15)
101 edep.GetXaxis().SetTitle('E (MeV)')
102 edep.GetYaxis().SetTitle('Events')
103 tree.Draw('EKLMHit2ds.getEnergyDeposit()>>edep', '')
104 functions = edep.GetListOfFunctions()
105 functions.Add(TNamed('Description', 'dE/dx energy deposition of muon hit'))
106 functions.Add(TNamed('Check', ''))
107 functions.Add(TNamed('Contact', contact))
108 functions.Add(TNamed('MetaOptions', 'shifter'))
109 
110 output_file.cd()
111 h2dtres.Write()
112 eklm_digits_tres.Write()
113 section.Write()
114 sector.Write()
115 layer.Write()
116 time.Write()
117 nPE.Write()
118 edep.Write()
119 output_file.Close()