Source code for variables

#!/usr/bin/env python3

##########################################################################
# basf2 (Belle II Analysis Software Framework)                           #
# Author: The Belle II Collaboration                                     #
#                                                                        #
# See git log for contributors and copyright holders.                    #
# This file is licensed under LGPL-3.0, see LICENSE.md.                  #
##########################################################################

import argparse
import basf2.utils as b2utils
import ROOT
from ROOT import Belle2
"""
Makes analysis variables (which can be used in many of the functions defined
in :mod:`modularAnalysis`) available to Python.
Details can be found in the VariableManager section at https://software.belle2.org/
"""
from ROOT import gSystem
gSystem.Load('libanalysis.so')

#: import everything into current namespace.
variables = Belle2.Variable.Manager.Instance()


[docs]def std_vector(*args): """ Creates an std::vector which can be passed to pyROOT """ v = ROOT.std.vector(type(args[0]))() for x in args: v.push_back(x) return v
def getCommandLineOptions(): """ Parses the command line options and returns the corresponding arguments. """ parser = argparse.ArgumentParser() parser.add_argument('--no-pager', dest='pager', default=True, action='store_false', help='Use a pager to show output or print to terminal.') args = parser.parse_args() return args
[docs]def printVars(changedVariableNames=None): """ Print list of all available variables. """ if changedVariableNames: print(changedVariableNames) print('Available variables in Variable::Manager:') allVars = variables.getVariables() vars = [] for v in allVars: vars.append((v.group, v.name, v.description)) rows = [] current_group = '' for (group, name, description) in sorted(vars): if current_group != group: current_group = group rows.append([group]) rows.append([name, description]) b2utils.pretty_print_description_list(rows)
[docs]def getAllTrgNames(): """ Return all PSNM trigger bit names """ bits = Belle2.PyDBObj('TRGGDLDBFTDLBits') evt = Belle2.EventMetaData() Belle2.DBStore.Instance().update(evt) size = Belle2.TRGSummary.c_ntrgWords * Belle2.TRGSummary.c_trgWordSize return [bits.getoutbitname(i) for i in range(size) if bits.getoutbitname(i) != '']