ATLAS Offline Software
Loading...
Searching...
No Matches
ICutter.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4
5#include "./ICutter.h"
6#include <sstream>
7
8namespace GlobalSim {
9
10 class lt: public ICutter {
11 public:
12 lt(const float& c): m_cut(c) {}
13 virtual bool cut(const float& 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 float m_cut;
25 };
26
27 class leq: public ICutter {
28 public:
29 leq(const float& c): m_cut(c) {}
30 virtual bool cut(const float& 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 float m_cut;
42 };
43
44 class gt: public ICutter {
45 public:
46 gt(const float& c): m_cut(c) {}
47 virtual bool cut(const float& 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 float m_cut;
59 };
60
61
62 class geq: public ICutter {
63 public:
64 geq(const float& c): m_cut(c) {}
65 virtual bool cut(const float& 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 float m_cut;
77 };
78
79 std::unique_ptr<ICutter> make_cutter(const float& cut,
80 const std::string& op) {
81
82 auto cutter = std::unique_ptr<ICutter>(nullptr);
83
84 if (op == ">"){
85 cutter.reset(new gt(cut));
86 } else if (op == ">="){
87 cutter.reset(new geq(cut));
88 } else if (op == "<"){
89 cutter.reset(new lt(cut));
90 } else if (op == "<="){
91 cutter.reset(new leq(cut));
92 } else {
93 throw std::invalid_argument("unown operator " + op);
94 }
95
96 return cutter;
97 }
98
99}
static Double_t ss
Implementaton of ICutter, for converting text to cut logic in selectors.
Definition ICutter.h:16
geq(const float &c)
Definition ICutter.cxx:64
virtual std::string to_string() const override
Definition ICutter.cxx:69
virtual bool cut(const float &v) const override
Definition ICutter.cxx:65
gt(const float &c)
Definition ICutter.cxx:46
virtual bool cut(const float &v) const override
Definition ICutter.cxx:47
virtual std::string to_string() const override
Definition ICutter.cxx:51
leq(const float &c)
Definition ICutter.cxx:29
virtual std::string to_string() const override
Definition ICutter.cxx:34
virtual bool cut(const float &v) const override
Definition ICutter.cxx:30
lt(const float &c)
Definition ICutter.cxx:12
virtual bool cut(const float &v) const override
Definition ICutter.cxx:13
virtual std::string to_string() const override
Definition ICutter.cxx:17
AlgTool that to test whether expected the TIP values generated by data supplied by eEmMultTestBench c...
std::unique_ptr< ICutter > make_cutter(const float &cut, const std::string &op)
Definition ICutter.cxx:79