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