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