CbmRoot
Loading...
Searching...
No Matches
CbmCut.h
Go to the documentation of this file.
1/* Copyright (C) 2023 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Dario Ramirez [committer] */
4
5#ifndef CBMCUT_H
6#define CBMCUT_H
7
8#include "CbmCutId.h"
9
10#include <type_traits>
11
12template<typename T>
13class CbmCut {
14 public:
19 CbmCut() = default;
20
28 {
29 SetMin(min);
30 SetMax(max);
31 }
32
45 bool Check(T a) const
46 {
47 bool check_min_status = fMinState ? a >= min_ : true;
48 bool check_max_status = fMaxState ? a <= max_ : true;
49 if (fMinState && fMaxState && (max_ < min_)) return check_min_status || check_max_status;
50 return check_min_status && check_max_status;
51 }
52
53 void SetMin(T val)
54 {
55 min_ = val;
56 fMinState = true;
57 }
58 void SetMax(T val)
59 {
60 max_ = val;
61 fMaxState = true;
62 }
63 void SetRange(T min_val, T max_val)
64 {
65 SetMin(min_val);
66 SetMax(max_val);
67 }
68
69 friend std::ostream& operator<<(std::ostream& out, const CbmCut<T>& obj)
70 {
71 std::string min_msg = obj.fMinState ? std::to_string(obj.min_) : "none";
72 std::string max_msg = obj.fMaxState ? std::to_string(obj.max_) : "none";
73 out << "[Min: " << min_msg << " , Max: " << max_msg << "]";
74 return out;
75 }
76
77 T GetMin() const { return min_; }
78 T GetMax() const { return max_; }
79 bool GetMinState() const { return fMinState; }
80 bool GetMaxState() const { return fMaxState; }
81
82
83 private:
84 bool fMinState{false};
85 bool fMaxState{false};
88};
89
90#endif
friend fscal max(fscal x, fscal y)
friend fscal min(fscal x, fscal y)
T GetMax() const
Definition CbmCut.h:78
CbmCut(T min, T max)
Add a CbmTarget object to the list of targets with a key as trg_name.
Definition CbmCut.h:27
bool fMaxState
Definition CbmCut.h:85
CbmCut()=default
Default constructor Any check done to a non-configured object CbmCut will pass.
void SetRange(T min_val, T max_val)
Definition CbmCut.h:63
T max_
Definition CbmCut.h:87
T GetMin() const
Definition CbmCut.h:77
T min_
Definition CbmCut.h:86
void SetMin(T val)
Definition CbmCut.h:53
bool Check(T a) const
Check if the T is inside the configured ranges [min, max].
Definition CbmCut.h:45
bool fMinState
Definition CbmCut.h:84
friend std::ostream & operator<<(std::ostream &out, const CbmCut< T > &obj)
Definition CbmCut.h:69
void SetMax(T val)
Definition CbmCut.h:58
bool GetMaxState() const
Definition CbmCut.h:80
bool GetMinState() const
Definition CbmCut.h:79