ATLAS Offline Software
Loading...
Searching...
No Matches
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 "../IO/eEmTOB.h"
7#include <sstream>
8
9namespace GlobalSim {
10
11 class lt: public ICutter {
12 public:
13 lt(const ulong& c): m_cut(c) {}
14 virtual bool cut(const ulong& v) const override {
15 return v < m_cut;
16 };
17
18 virtual std::string to_string() const override {
19 std::stringstream ss;
20 ss << "cut: " << m_cut << " op: < ";
21 return ss.str();
22 }
23
24 private:
25 ulong m_cut;
26 };
27
28 class leq: public ICutter {
29 public:
30 leq(const ulong& c): m_cut(c) {}
31 virtual bool cut(const ulong& v) const override {
32 return v <= m_cut;
33 };
34
35 virtual std::string to_string() const override {
36 std::stringstream ss;
37 ss << "cut: " << m_cut << " op: <= ";
38 return ss.str();
39 }
40
41 private:
42 ulong m_cut;
43 };
44
45 class gt: public ICutter {
46 public:
47 gt(const ulong& c): m_cut(c) {}
48 virtual bool cut(const ulong& v) const override {
49 return v > m_cut;
50 };
51
52 virtual std::string to_string() const override {
53 std::stringstream ss;
54 ss << "cut: " << m_cut << " op: > ";
55 return ss.str();
56 }
57
58 private:
59 ulong m_cut;
60 };
61
62
63 class geq: public ICutter {
64 public:
65 geq(const ulong& c): m_cut(c) {}
66 virtual bool cut(const ulong& v) const override {
67 return v >= m_cut;
68 };
69
70 virtual std::string to_string() const override {
71 std::stringstream ss;
72 ss << "cut: " << m_cut << " op: >= ";
73 return ss.str();
74 }
75
76 private:
77 ulong m_cut;
78 };
79
80
81
82
83 std::unique_ptr<ICutter> make_cutter(const ulong& cut,
84 const std::string& op) {
85
86 auto cutter = std::unique_ptr<ICutter>(nullptr);
87
88 if (op == ">"){
89 cutter.reset(new gt(cut));
90 } else if (op == ">="){
91 cutter.reset(new geq(cut));
92 } else if (op == "<"){
93 cutter.reset(new lt(cut));
94 } else if (op == "<="){
95 cutter.reset(new leq(cut));
96 } else {
97 throw std::invalid_argument("unown operator " + op);
98 }
99
100
101
102 return cutter;
103 }
104
105 using namespace GlobalSim::IOBitwise;
106
108 const std::string& rhad_op,
109 ulong reta_cut,
110 const std::string& reta_op,
111 ulong wstot_cut,
112 const std::string& wstot_op) :
113 m_rhad_cutter{make_cutter(rhad_cut, rhad_op)},
114 m_reta_cutter{make_cutter(reta_cut, reta_op)},
115 m_wstot_cutter{make_cutter(wstot_cut, wstot_op)}{
116 }
117
118
119 bool eEmSelector::select(const eEmTOB& tob) const {
120
121 if(!m_rhad_cutter->cut(tob.RHad_bits().to_ulong())) {return false;}
122 if(!m_reta_cutter->cut(tob.REta_bits().to_ulong())) {return false;}
123 if(!m_wstot_cutter->cut(tob.WsTot_bits().to_ulong())) {return false;}
124
125 return true;
126 };
127
128
129 std::string eEmSelector::to_string() const {
130
131 auto ss = std::stringstream();
132 ss << "rhad cutter: " << m_rhad_cutter->to_string() << ' '
133 << "reta cutter: " << m_reta_cutter->to_string() << ' '
134 << "wstot cutter: " << m_wstot_cutter->to_string();
135 return ss.str();
136 };
137
138
139}
static Double_t ss
virtual const std::bitset< s_REta_width > & REta_bits() const
virtual const std::bitset< s_RHad_width > & RHad_bits() const
virtual const std::bitset< s_WsTot_width > & WsTot_bits() const
virtual std::string to_string() const override
std::unique_ptr< ICutter > m_wstot_cutter
Definition eEmSelector.h:53
virtual bool select(const eEmTOB &) const override
std::unique_ptr< ICutter > m_rhad_cutter
Definition eEmSelector.h:51
eEmSelector()=default
Passes all.
std::unique_ptr< ICutter > m_reta_cutter
Definition eEmSelector.h:52
virtual bool cut(const ulong &v) const override
virtual std::string to_string() const override
geq(const ulong &c)
virtual std::string to_string() const override
gt(const ulong &c)
virtual bool cut(const ulong &v) const override
virtual bool cut(const ulong &v) const override
virtual std::string to_string() const override
leq(const ulong &c)
lt(const ulong &c)
virtual bool cut(const ulong &v) const override
virtual std::string to_string() const override
AlgTool that to test whether expected the TIP values generated by data supplied by eEmMultTestBench c...
std::unique_ptr< ICutter > make_cutter(const ulong &cut, const std::string &op)