ATLAS Offline Software
eEmSelector.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #include "./eEmSelector.h"
6 #include <sstream>
7 
8 namespace GlobalSim {
9 
10  class lt: public ICutter {
11  public:
12  lt(const ulong& c): m_cut(c) {}
13  virtual bool cut(const ulong& v) const override {
14  return v < m_cut;
15  };
16 
17  virtual std::string to_string() const override {
18  std::stringstream ss;
19  ss << "cut: " << m_cut << " op: < ";
20  return ss.str();
21  }
22 
23  private:
24  ulong m_cut;
25  };
26 
27  class leq: public ICutter {
28  public:
29  leq(const ulong& c): m_cut(c) {}
30  virtual bool cut(const ulong& v) const override {
31  return v <= m_cut;
32  };
33 
34  virtual std::string to_string() const override {
35  std::stringstream ss;
36  ss << "cut: " << m_cut << " op: <= ";
37  return ss.str();
38  }
39 
40  private:
41  ulong m_cut;
42  };
43 
44  class gt: public ICutter {
45  public:
46  gt(const ulong& c): m_cut(c) {}
47  virtual bool cut(const ulong& v) const override {
48  return v > m_cut;
49  };
50 
51  virtual std::string to_string() const override {
52  std::stringstream ss;
53  ss << "cut: " << m_cut << " op: > ";
54  return ss.str();
55  }
56 
57  private:
58  ulong m_cut;
59  };
60 
61 
62  class geq: public ICutter {
63  public:
64  geq(const ulong& c): m_cut(c) {}
65  virtual bool cut(const ulong& v) const override {
66  return v >= m_cut;
67  };
68 
69  virtual std::string to_string() const override {
70  std::stringstream ss;
71  ss << "cut: " << m_cut << " op: >= ";
72  return ss.str();
73  }
74 
75  private:
76  ulong m_cut;
77  };
78 
79 
80 
81 
82  std::unique_ptr<ICutter> make_cutter(const ulong& cut,
83  const std::string& op) {
84 
85  auto cutter = std::unique_ptr<ICutter>(nullptr);
86 
87  if (op == ">"){
88  cutter.reset(new gt(cut));
89  } else if (op == ">="){
90  cutter.reset(new geq(cut));
91  } else if (op == "<"){
92  cutter.reset(new lt(cut));
93  } else if (op == "<="){
94  cutter.reset(new leq(cut));
95  } else {
96  throw std::invalid_argument("unown operator " + op);
97  }
98 
99 
100 
101  return cutter;
102  }
103 
104  using namespace GlobalSim::IOBitwise;
105 
106  eEmSelector::eEmSelector(ulong rhad_cut,
107  const std::string& rhad_op,
108  ulong reta_cut,
109  const std::string& reta_op,
110  ulong wstot_cut,
111  const std::string& wstot_op) :
112  m_rhad_cutter{make_cutter(rhad_cut, rhad_op)},
113  m_reta_cutter{make_cutter(reta_cut, reta_op)},
114  m_wstot_cutter{make_cutter(wstot_cut, wstot_op)}{
115  }
116 
117 
118  bool eEmSelector::select(const IeEmTOB& tob) const {
119 
120  if(!m_rhad_cutter->cut(tob.RHad_bits().to_ulong())) {return false;}
121  if(!m_reta_cutter->cut(tob.REta_bits().to_ulong())) {return false;}
122  if(!m_wstot_cutter->cut(tob.WsTot_bits().to_ulong())) {return false;}
123 
124  return true;
125  };
126 
127 
128  std::string eEmSelector::to_string() const {
129 
130  auto ss = std::stringstream();
131  ss << "rhad cutter: " << m_rhad_cutter->to_string() << ' '
132  << "reta cutter: " << m_reta_cutter->to_string() << ' '
133  << "wstot cutter: " << m_wstot_cutter->to_string();
134  return ss.str();
135  };
136 
137 
138 }
GlobalSim::gt::m_cut
ulong m_cut
Definition: eEmSelector.cxx:58
GlobalSim::gt
Definition: eEmSelector.cxx:44
GlobalSim::IOBitwise::IeEmTOB::RHad_bits
virtual const std::bitset< s_RHad_width > & RHad_bits() const =0
Returns the eFexRoI Rhad threshold bits.
GlobalSim::eEmSelector::eEmSelector
eEmSelector()=default
Passes all.
PowhegControl_ttHplus_NLO.ss
ss
Definition: PowhegControl_ttHplus_NLO.py:83
GlobalSim::lt::cut
virtual bool cut(const ulong &v) const override
Definition: eEmSelector.cxx:13
GlobalSim::IOBitwise::IeEmTOB::WsTot_bits
virtual const std::bitset< s_WsTot_width > & WsTot_bits() const =0
Returns the eFexRoI Wstot threshold bits.
GlobalSim::eEmSelector::select
virtual bool select(const IeEmTOB &) const override
Definition: eEmSelector.cxx:118
GlobalSim::geq::to_string
virtual std::string to_string() const override
Definition: eEmSelector.cxx:69
GlobalSim::gt::gt
gt(const ulong &c)
Definition: eEmSelector.cxx:46
GlobalSim::leq::cut
virtual bool cut(const ulong &v) const override
Definition: eEmSelector.cxx:30
GlobalSim::gt::to_string
virtual std::string to_string() const override
Definition: eEmSelector.cxx:51
GlobalSim::lt
Definition: eEmSelector.cxx:10
GlobalSim::geq::m_cut
ulong m_cut
Definition: eEmSelector.cxx:76
GlobalSim::lt::to_string
virtual std::string to_string() const override
Definition: eEmSelector.cxx:17
GlobalSim::eEmSelector::m_rhad_cutter
std::unique_ptr< ICutter > m_rhad_cutter
Definition: eEmSelector.h:51
GlobalSim
AlgTool to read in LArStripNeighborhoods, and run the ERatio Algorithm.
Definition: dump.h:8
GlobalSim::leq::leq
leq(const ulong &c)
Definition: eEmSelector.cxx:29
GlobalSim::lt::m_cut
ulong m_cut
Definition: eEmSelector.cxx:24
GlobalSim::leq::m_cut
ulong m_cut
Definition: eEmSelector.cxx:41
GlobalSim::gt::cut
virtual bool cut(const ulong &v) const override
Definition: eEmSelector.cxx:47
BindingsTest.cut
cut
This script demonstrates how to call a C++ class from Python Also how to use PyROOT is shown.
Definition: BindingsTest.py:13
GlobalSim::eEmSelector::m_wstot_cutter
std::unique_ptr< ICutter > m_wstot_cutter
Definition: eEmSelector.h:53
GlobalSim::ICutter
Definition: eEmSelector.h:23
eEmSelector.h
GlobalSim::geq::cut
virtual bool cut(const ulong &v) const override
Definition: eEmSelector.cxx:65
GlobalSim::IOBitwise
Definition: eEmMultAlgTool.h:19
GlobalSim::leq
Definition: eEmSelector.cxx:27
GlobalSim::make_cutter
std::unique_ptr< ICutter > make_cutter(const ulong &cut, const std::string &op)
Definition: eEmSelector.cxx:82
GlobalSim::geq
Definition: eEmSelector.cxx:62
python.PyAthena.v
v
Definition: PyAthena.py:154
GlobalSim::IOBitwise::IeEmTOB::REta_bits
virtual const std::bitset< s_REta_width > & REta_bits() const =0
Returns the eFexRoI REta threshold bits.
GlobalSim::IOBitwise::IeEmTOB
Class to hold eFexROI TOB bits.
Definition: IeEmTOB.h:29
GlobalSim::eEmSelector::to_string
virtual std::string to_string() const override
Definition: eEmSelector.cxx:128
GlobalSim::lt::lt
lt(const ulong &c)
Definition: eEmSelector.cxx:12
GlobalSim::leq::to_string
virtual std::string to_string() const override
Definition: eEmSelector.cxx:34
GlobalSim::eEmSelector::m_reta_cutter
std::unique_ptr< ICutter > m_reta_cutter
Definition: eEmSelector.h:52
python.compressB64.c
def c
Definition: compressB64.py:93
GlobalSim::geq::geq
geq(const ulong &c)
Definition: eEmSelector.cxx:64