ATLAS Offline Software
PhiFilterRange.h
Go to the documentation of this file.
1 
3 /*
4  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
5 */
6 
7 // PhiFilterRange.h
8 // Header file for class PhiFilterRange
9 // Author: S.Binet<binet@cern.ch>
11 #ifndef ANALYSISUTILS_PHIFILTERRANGE_H
12 #define ANALYSISUTILS_PHIFILTERRANGE_H
13 
23 // STL includes
24 
25 // AnalysisUtils includes
27 #include <optional>
28 
30 {
31 
33  // Public methods:
35  public:
36 
40 
43 
47  PhiFilterRange( const double min, const double max );
48 
50  virtual ~PhiFilterRange();
51 
54 
56  // Const methods:
58 
61  double lower() const;
62 
65  double upper() const;
66 
69  double getMin() const;
70 
73  double getMax() const;
74 
75  /*
76  *return Return true if the point is in range : min <= point <= max
77  */
78  bool isInRange( const double point ) const;
79 
82  bool isActive() const;
83 
86  double atlasPhi( const double phi ) const;
87 
89  // Non-const methods:
91  void setRange( const double lower, const double upper );
92  void setMin( const double minValue );
93  void setMax( const double maxValue );
94 
100  void include( const double xMin, const double xMax);
101 
105  void includeAll();
106 
108  // Protected method:
110  protected:
111 
113  void addRange(double xMin, double xMax);
114 
116  //void cleanRanges(double xMin, double xMax);
117 
119  // Protected data:
121  protected:
122 
123 };
124 
126 // Operators
128 bool operator==( const PhiFilterRange& r1, const PhiFilterRange& r2 );
129 bool operator!=( const PhiFilterRange& r1, const PhiFilterRange& r2 );
130 bool operator <( const PhiFilterRange& r1, const PhiFilterRange& r2 );
131 bool operator >( const PhiFilterRange& r1, const PhiFilterRange& r2 );
132 bool operator<=( const PhiFilterRange& r1, const PhiFilterRange& r2 );
133 bool operator>=( const PhiFilterRange& r1, const PhiFilterRange& r2 );
134 
138 
142  FilterRange()
143 {}
144 
145 inline PhiFilterRange::PhiFilterRange( const double min, const double max ) :
146  FilterRange( min, max )
147 {
148  if ( min == -M_PI && max == +M_PI ) {
149  //std::cout << ">>> You are giving a NO-OP interval : ]"
150  // << min << "; "
151  // << max << "["
152  // << std::endl
153  // << ">>> De-activating this range for optimization purpose."
154  // << std::endl;
155  m_range = std::nullopt;
156  if ( isActive() ) {
157  std::string err = "ERROR : PhiFilterRange is ACTIVE (Should NOT BE !!)";
158  throw err;
159  }
160  } else {
161  // Do nothing : everything is allright
162  }
163 }
164 
168 
172 inline double PhiFilterRange::lower() const
173 {
174  if ( m_range ) {
175  return m_range->lower();
176  }
177 
178  return -M_PI;
179 }
180 
181 inline double PhiFilterRange::upper() const
182 {
183  if ( m_range ) {
184  return m_range->upper();
185  }
186 
187  return +M_PI;
188 }
189 
190 inline double PhiFilterRange::getMin() const
191 {
192  return lower();
193 }
194 
195 inline double PhiFilterRange::getMax() const
196 {
197  return upper();
198 }
199 
200 inline bool PhiFilterRange::isActive() const
201 {
202  if ( m_range ) return true;
203  return false;
204 }
205 
209 inline void PhiFilterRange::setRange( const double lower, const double upper )
210 {
211  return addRange( lower, upper );
212 }
213 
214 inline void PhiFilterRange::setMin( const double minValue )
215 {
216  return setRange( minValue, getMax() );
217 }
218 
219 inline void PhiFilterRange::setMax( const double maxValue )
220 {
221  return setRange( getMin(), maxValue );
222 }
223 
224 #endif //> ANALYSISUTILS_PhiFILTERRANGE_H
PhiFilterRange::PhiFilterRange
PhiFilterRange()
Default constructor: it sets the minimum value to -infinity and the maximum value to +infinity.
Definition: PhiFilterRange.h:141
operator>=
bool operator>=(const PhiFilterRange &r1, const PhiFilterRange &r2)
Definition: PhiFilterRange.cxx:150
operator>
bool operator>(const PhiFilterRange &r1, const PhiFilterRange &r2)
Definition: PhiFilterRange.cxx:155
PhiFilterRange::operator=
PhiFilterRange & operator=(const PhiFilterRange &obj)
Assignment operator:
Definition: PhiFilterRange.cxx:31
FilterRange::m_range
std::optional< interval_t > m_range
The boost interval wrapped by a boost optional.
Definition: FilterRange.h:147
maxValue
#define maxValue(current, test)
Definition: CompoundLayerMaterialCreator.h:22
max
#define max(a, b)
Definition: cfImp.cxx:41
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
PhiFilterRange::include
void include(const double xMin, const double xMax)
Add [xMin, xMax] interval to existing set of valid ranges.
Definition: PhiFilterRange.cxx:68
PhiFilterRange::setMax
void setMax(const double maxValue)
Definition: PhiFilterRange.h:219
M_PI
#define M_PI
Definition: ActiveFraction.h:11
FilterRange
FilterRange implements the range (ie: [min, max]) the filters will use to take their filtering decisi...
Definition: FilterRange.h:35
PhiFilterRange::setMin
void setMin(const double minValue)
Definition: PhiFilterRange.h:214
upper
int upper(int c)
Definition: LArBadChannelParser.cxx:49
PhiFilterRange
PhiFilterRange implements the range (ie: [min, max]) the filters will use to take their filtering dec...
Definition: PhiFilterRange.h:30
PhiFilterRange::getMax
double getMax() const
Return the maximum value of the range.
Definition: PhiFilterRange.h:195
PhiFilterRange::~PhiFilterRange
virtual ~PhiFilterRange()
Destructor:
Definition: PhiFilterRange.h:167
operator<=
bool operator<=(const PhiFilterRange &r1, const PhiFilterRange &r2)
Definition: PhiFilterRange.cxx:176
PhiFilterRange::isInRange
bool isInRange(const double point) const
Const methods:
Definition: PhiFilterRange.cxx:43
PhiFilterRange::getMin
double getMin() const
Return the minimum value of the range.
Definition: PhiFilterRange.h:190
FilterRange.h
dqt_zlumi_pandas.err
err
Definition: dqt_zlumi_pandas.py:193
PhiFilterRange::upper
double upper() const
Return the maximum value of the range.
Definition: PhiFilterRange.h:181
plotBeamSpotVxVal.range
range
Definition: plotBeamSpotVxVal.py:195
PhiFilterRange::includeAll
void includeAll()
Set full range (from MINUS_INF to PLUS_INF ).
Definition: PhiFilterRange.cxx:75
PhiFilterRange::atlasPhi
double atlasPhi(const double phi) const
Convert a phi angle in the ATLAS conventional range -PI->PI inspired from FourMom package (could also...
Definition: PhiFilterRange.cxx:49
PhiFilterRange::setRange
void setRange(const double lower, const double upper)
Non-const methods:
Definition: PhiFilterRange.h:209
min
#define min(a, b)
Definition: cfImp.cxx:40
PhiFilterRange::lower
double lower() const
Return the minimum value of the range.
Definition: PhiFilterRange.h:172
operator!=
bool operator!=(const PhiFilterRange &r1, const PhiFilterRange &r2)
Definition: PhiFilterRange.cxx:124
operator<
bool operator<(const PhiFilterRange &r1, const PhiFilterRange &r2)
Definition: PhiFilterRange.cxx:129
PhiFilterRange::addRange
void addRange(double xMin, double xMax)
add a new range [xmin,xmax] deleting previous ranges full contained
Definition: PhiFilterRange.cxx:84
python.PyAthena.obj
obj
Definition: PyAthena.py:135
minValue
#define minValue(current, test)
Definition: CompoundLayerMaterialCreator.h:21
operator==
bool operator==(const PhiFilterRange &r1, const PhiFilterRange &r2)
Definition: PhiFilterRange.cxx:107
PhiFilterRange::isActive
bool isActive() const
return Return true if the range is active (optimize parsing of multiple ranges and returning the fina...
Definition: PhiFilterRange.h:200