Belle II Software development
LowerBoundedSet.h
1/**************************************************************************
2 * basf2 (Belle II Analysis Software Framework) *
3 * Author: The Belle II Collaboration *
4 * *
5 * See git log for contributors and copyright holders. *
6 * This file is licensed under LGPL-3.0, see LICENSE.md. *
7 **************************************************************************/
8
9#pragma once
10
11#include <tracking/trackFindingVXD/filterMap/filterFramework/TBranchLeafType.h>
12#include <TBranch.h>
13#include <TTree.h>
14
15#include <framework/logging/Logger.h>
16
17namespace Belle2 {
29 template< typename InfType >
31 InfType m_inf;
32 public:
33
35 explicit LowerBoundedSet(InfType inf): m_inf(inf) {};
36
39
45 template< class VariableType >
46 inline bool contains(const VariableType& x) const { return m_inf < x ;};
47
57 void persist(TTree* t, const std::string& branchName, const std::string& variableName)
58 {
59
60 std::string leafList;
61 leafList += variableName;
62 leafList += "_inf/";
63 leafList += TBranchLeafType(m_inf);
64 TBranch* branch = new TBranch(t, branchName.c_str(), & m_inf, leafList.c_str());
65 t->GetListOfBranches()->Add(branch);
66 }
67
72 void setBranchAddress(TTree* t, const std::string& branchName,
73 const std::string& /*variableName*/)
74 {
75 if (t->SetBranchAddress(branchName, & m_inf) < 0) B2FATAL("LowerBoundedSet: branch address not valid");
76 }
77
79 InfType getInf(void) const { return m_inf; } ;
80
86 std::string getNameAndReference(std::vector<std::pair<char, void*>>* pointers = nullptr, const std::string& varname = "X")
87 {
88 std::string minVal = std::to_string(m_inf);
89 // if pointer to vector is provided fill it
90 if (pointers != nullptr) {
91 // use the position in the vector as unique identifier
92 minVal = "#" + std::to_string(pointers->size());
93 (*pointers).push_back({TBranchLeafType(m_inf), &m_inf});
94 }
95 return ("(" + minVal + " < " + varname + ")");
96 }
97 };
99}
Represents a lower bounded set of arithmetic types.
LowerBoundedSet(InfType inf)
Constructor.
void persist(TTree *t, const std::string &branchName, const std::string &variableName)
Creates and sets the addresses of the leaves to store the inf value.
InfType m_inf
infinity value
LowerBoundedSet()
Constructor without argument.
std::string getNameAndReference(std::vector< std::pair< char, void * > > *pointers=nullptr, const std::string &varname="X")
generates a "name" and fills the vector with the variable references
bool contains(const VariableType &x) const
Method used by the filter tools to decide on the fate of the pair.
void setBranchAddress(TTree *t, const std::string &branchName, const std::string &)
Setting the branch address for a filter in a TTree.
InfType getInf(void) const
Accessor to the inf of the set.
char TBranchLeafType(const char *)
Overloading TBranchLeafType to be able to get identifier 'C' for type char*.
Abstract base class for different kinds of events.