Belle II Software  release-06-02-00
printPIDLikelihoods.py
1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3 
4 
11 
12 # --------------------------------------------------------------------------
13 # Prints PIDLikelihoods from a mdst file
14 # File name must be specified using -i switch:
15 # basf2 mdst/examples/printPIDLikelihoods.py -i <fileName.root>
16 # --------------------------------------------------------------------------
17 
18 import basf2 as b2
19 from ROOT import Belle2
20 
21 
22 class printPIDLikelihoods(b2.Module):
23 
24  '''
25  Prints PID log likelihoods + basic track info in a well formatted way.
26  User is prompted to continue or quit at each event
27  '''
28 
29  def event(self):
30  '''
31  Print log likelihoods and wait for user respond.
32  '''
33 
34  evtMetaData = Belle2.PyStoreObj('EventMetaData')
35  exp = evtMetaData.obj().getExperiment()
36  run = evtMetaData.obj().getRun()
37  evt = evtMetaData.obj().getEvent()
38  print()
39  print('Experiment ' + str(exp) + ' Run ' + str(run) + ' Event ' + str(evt) + ':')
40  print()
41  tracks = Belle2.PyStoreArray('Tracks')
42  for track in tracks:
43  fitresult = track.getTrackFitResult(Belle2.Const.pion)
44  if fitresult:
45  p_mag = fitresult.getMomentum().Mag()
46  pmom = '{:5.3f}'.format(p_mag) + ' GeV/c'
47  else:
48  pmom = '?'
49  mcpart = track.getRelated('MCParticles')
50  if mcpart:
51  pdg = str(mcpart.getPDG())
52  else:
53  pdg = '?'
54  index = track.getArrayIndex()
55  print('Track ' + str(index) + ': p = ' + pmom + ' MCtruth = ' + pdg)
56  likelihood = track.getRelated('PIDLikelihoods')
57  try:
58  print('logLikelihoods:')
59  likelihood.printArray()
60  except BaseException:
61  print('--> No relation to PIDLikelihood')
62  print()
63 
64  # wait for user respond
65  response = input("Type Enter to continue or Q to quit.\n").lower().strip()
66  if response == "q":
67  evtMetaData.obj().setEndOfData()
68 
69 
70 b2.set_log_level(b2.LogLevel.ERROR)
71 
72 # Create path
73 main = b2.create_path()
74 
75 # Root input
76 roinput = b2.register_module('RootInput')
77 main.add_module(roinput)
78 
79 # print array of log likelihoods
80 main.add_module(printPIDLikelihoods())
81 
82 # Process events
83 b2.process(main)
a (simplified) python wrapper for StoreArray.
Definition: PyStoreArray.h:56
a (simplified) python wrapper for StoreObjPtr.
Definition: PyStoreObj.h:67
static ExpRun getRun(map< ExpRun, pair< double, double >> runs, double t)
Get exp number + run number from time.
Definition: Splitter.cc:264