13 <contact>software-tracking@belle2.org</contact>
14 <input>CosmicsExtrapolation.root</input>
15 <output>CosmicsExtrapolationPlots.root</output>
16 <description>Validation of cosmic track extrapolation.</description>
23 from ROOT
import Belle2, TNamed
25 contact =
'Kirill Chilikin (chilikin@lebedev.ru)'
32 """ Class for creation of cosmics extrapolation plot module. """
35 """ Set optiions for coordinate plot. """
36 histogram.SetXTitle(
'cm')
37 histogram.SetYTitle(
'Events')
38 function_list = histogram.GetListOfFunctions()
39 function_list.Add(TNamed(
'Description', description))
40 function_list.Add(TNamed(
'Check',
' No bias, no large background, resolution ~ 2 cm.'))
41 function_list.Add(TNamed(
'Contact', contact))
43 basf2.B2WARNING(
"temporarily removed all shifter plots for the CosmicsExtrapolationPlots")
47 """ Set options for momentum plot. """
48 histogram.SetXTitle(
'p [GeV]')
49 histogram.SetYTitle(
'Events')
50 function_list = histogram.GetListOfFunctions()
51 function_list.Add(TNamed(
'Description', description))
52 function_list.Add(TNamed(
'Check',
' No bias, no large background, resolution ~ 2 cm.'))
53 function_list.Add(TNamed(
'Contact', contact))
60 self.
output_fileoutput_file = ROOT.TFile(
'CosmicsExtrapolationPlots.root',
65 ROOT.TH1F(
'xres_forward_mum',
66 'X resolution (#mu^{-}, forward)',
70 'Extrapolated hit X resolution (mu-, forward propagation).',
True)
74 ROOT.TH1F(
'xres_forward_mup',
75 'X resolution (#mu^{+}, forward)',
79 'Extrapolated hit X resolution (mu+, forward propagation).',
True)
83 ROOT.TH1F(
'yres_forward_mum',
84 'Y resolution (#mu^{-}, forward)',
88 'Extrapolated hit Y resolution (mu-, forward propagation).',
False)
92 ROOT.TH1F(
'yres_forward_mup',
93 'Y resolution (#mu^{+}, forward)',
97 'Extrapolated hit Y resolution (mu+, forward propagation).',
False)
101 ROOT.TH1F(
'zres_forward_mum',
102 'Z resolution (#mu^{-}, forward)',
106 'Extrapolated hit Z resolution (mu-, forward propagation).',
False)
110 ROOT.TH1F(
'zres_forward_mup',
111 'Z resolution (#mu^{+}, forward)',
115 'Extrapolated hit Z resolution (mu+, forward propagation).',
False)
119 ROOT.TH1F(
'xres_backward_mum',
120 'X resolution (#mu^{-}, backward)',
124 'Extrapolated hit X resolution (mu-, backward propagation).',
True)
128 ROOT.TH1F(
'xres_backward_mup',
129 'X resolution (#mu^{+}, backward)',
133 'Extrapolated hit X resolution (mu+, backward propagation).',
True)
137 ROOT.TH1F(
'yres_backward_mum',
138 'Y resolution (#mu^{-}, backward)',
142 'Extrapolated hit Y resolution (mu-, backward propagation).',
False)
146 ROOT.TH1F(
'yres_backward_mup',
147 'Y resolution (#mu^{+}, backward)',
151 'Extrapolated hit Y resolution (mu+, backward propagation).',
False)
155 ROOT.TH1F(
'zres_backward_mum',
156 'Z resolution (#mu^{-}, backward)',
160 'Extrapolated hit Z resolution (mu-, backward propagation).',
False)
164 ROOT.TH1F(
'zres_backward_mup',
165 'Z resolution (#mu^{+}, backward)',
169 'Extrapolated hit Z resolution (mu+, backward propagation).',
False)
173 ROOT.TH1F(
'pres_forward_mum',
174 'Momentum resolution (#mu^{-}, forward)',
178 'Momentum resolution (mu-, forward propagation).')
182 ROOT.TH1F(
'pres_forward_mup',
183 'Momentum resolution (#mu^{+}, forward)',
187 'Momentum resolution (mu+, forward propagation).')
191 ROOT.TH1F(
'pres_backward_mum',
192 'Momentum resolution (#mu^{-}, backward)',
196 'Momentum resolution (mu-, backward propagation).')
200 ROOT.TH1F(
'pres_backward_mup',
201 'Momentum resolution (#mu^{+}, backward)',
205 'Momentum resolution (mu+, backward propagation).')
208 """ Fill histograms with ExtHit data. """
209 ext_position = exthit.getPosition()
210 if exthit.isBackwardPropagated():
211 if exthit.getPdgCode() == 13:
213 ext_position.X() - klmhit2d.getPositionX())
215 ext_position.Y() - klmhit2d.getPositionY())
217 ext_position.Z() - klmhit2d.getPositionZ())
218 elif exthit.getPdgCode() == -13:
220 ext_position.X() - klmhit2d.getPositionX())
222 ext_position.Y() - klmhit2d.getPositionY())
224 ext_position.Z() - klmhit2d.getPositionZ())
226 if exthit.getPdgCode() == 13:
228 ext_position.X() - klmhit2d.getPositionX())
230 ext_position.Y() - klmhit2d.getPositionY())
232 ext_position.Z() - klmhit2d.getPositionZ())
233 elif exthit.getPdgCode() == -13:
235 ext_position.X() - klmhit2d.getPositionX())
237 ext_position.Y() - klmhit2d.getPositionY())
239 ext_position.Z() - klmhit2d.getPositionZ())
242 """ Event function. """
248 for klmhit2d
in klmhit2ds:
249 subdetector = klmhit2d.getSubdetector()
250 section = klmhit2d.getSection()
251 sector = klmhit2d.getSector()
252 layer = klmhit2d.getLayer()
253 if (subdetector == Belle2.KLMElementNumbers.c_BKLM):
254 for exthit
in exthits:
255 if exthit.getDetectorID() != Belle2.Const.BKLM:
257 module = exthit.getCopyID()
258 section_ext = bklm_numbers.getSectionByModule(module)
259 sector_ext = bklm_numbers.getSectorByModule(module)
260 layer_ext = bklm_numbers.getLayerByModule(module)
261 if (section_ext != section
or sector_ext != sector
or
266 section = klmhit2d.getSection()
267 sector = klmhit2d.getSector()
268 layer = klmhit2d.getLayer()
269 for exthit
in exthits:
270 if exthit.getDetectorID() != Belle2.Const.EKLM:
272 strip_global = exthit.getCopyID()
273 section_ext = eklm_numbers.getSectionByGlobalStrip(strip_global)
274 sector_ext = eklm_numbers.getSectorByGlobalStrip(strip_global)
275 layer_ext = eklm_numbers.getLayerByGlobalStrip(strip_global)
276 if (section_ext != section
or sector_ext != sector
or
282 track_fit_result = track.getTrackFitResult(Belle2.Const.muon)
283 momentum = track_fit_result.getMomentum()
284 track_exthits = track.getRelationsTo(
'ExtHits')
285 if len(track_exthits) == 0:
287 mc_momentum = mcparticles[0].getMomentum()
288 p_diff = momentum.R() - mc_momentum.R()
290 for i
in range(len(track_exthits)):
291 if abs(track_exthits[i].getPdgCode()) == 13:
292 exthit = track_exthits[i]
296 if exthit.isBackwardPropagated():
297 if exthit.getPdgCode() == 13:
299 elif exthit.getPdgCode() == -13:
302 if exthit.getPdgCode() == 13:
304 elif exthit.getPdgCode() == -13:
308 """ Termination function. """
330 root_input = basf2.register_module(
'RootInput')
331 root_input.param(
'inputFileName',
'../CosmicsExtrapolation.root')
337 main = basf2.create_path()
340 main.add_module(root_input)
341 main.add_module(plot)
static const EKLMElementNumbers & Instance()
Instantiation.
A (simplified) python wrapper for StoreArray.