CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
HBHENegativeEFilter.h
Go to the documentation of this file.
1 #ifndef CondFormats_HcalObjects_HBHENegativeEFilter_h_
2 #define CondFormats_HcalObjects_HBHENegativeEFilter_h_
3 
4 #include <vector>
5 #include <utility>
7 
8 #include "boost/cstdint.hpp"
9 #include "boost/serialization/utility.hpp"
10 #include "boost/serialization/access.hpp"
11 #include "boost/serialization/split_member.hpp"
12 
15 
17 {
18 public:
19  inline HBHENegativeEFilter() : minCharge_(0.), tFirst_(0), tLast_(0) {}
20 
21  // If the vector of cuts is empty, the filter will be disabled
22  HBHENegativeEFilter(const std::vector<PiecewiseScalingPolynomial>& a1vec,
23  const std::vector<PiecewiseScalingPolynomial>& a2vec,
24  const std::vector<uint32_t>& iEtaLimits,
25  const std::vector<std::pair<double,double> >& cut,
26  double minCharge, unsigned firstTimeSlice,
27  unsigned lastTimeSlice);
28 
29  // Does the sequence of time slices pass the filter?
30  bool checkPassFilter(const HcalDetId& id,
31  const double* ts, unsigned lenTS) const;
32 
33  // Examing various filter data elements
34  inline const PiecewiseScalingPolynomial& getA1(const HcalDetId& id) const
35  {return a1v_.at(getEtaIndex(id));}
36  inline const PiecewiseScalingPolynomial& getA2(const HcalDetId& id) const
37  {return a2v_.at(getEtaIndex(id));}
38  inline const std::vector<uint32_t>& getEtaLimits() const
39  {return iEtaLimits_;}
40  inline const std::vector<std::pair<double,double> >& getCut() const
41  {return cut_;}
42  inline double getMinCharge() const {return minCharge_;}
43  inline unsigned getFirstTimeSlice() const {return tFirst_;}
44  inline unsigned getLastTimeSlice() const {return tLast_;}
45  inline bool isEnabled() const {return !cut_.empty();}
46 
47  // Comparison operators
48  bool operator==(const HBHENegativeEFilter& r) const;
49  inline bool operator!=(const HBHENegativeEFilter& r) const
50  {return !(*this == r);}
51 
52 private:
53  unsigned getEtaIndex(const HcalDetId& id) const;
54  bool validate() const;
55 
56  std::vector<PiecewiseScalingPolynomial> a1v_;
57  std::vector<PiecewiseScalingPolynomial> a2v_;
58  std::vector<uint32_t> iEtaLimits_;
59  std::vector<std::pair<double,double> > cut_;
60  double minCharge_;
61  uint32_t tFirst_;
62  uint32_t tLast_;
63 
65 
66  template<class Archive>
67  inline void save(Archive & ar, const unsigned /* version */) const
68  {
69  if (!validate()) throw cms::Exception(
70  "In HBHENegativeEFilter::save: invalid data");
72  }
73 
74  template<class Archive>
75  inline void load(Archive & ar, const unsigned /* version */)
76  {
78  if (!validate()) throw cms::Exception(
79  "In HBHENegativeEFilter::load: invalid data");
80  }
81 
82  BOOST_SERIALIZATION_SPLIT_MEMBER()
83 };
84 
85 BOOST_CLASS_VERSION(HBHENegativeEFilter, 1)
86 
87 #endif // CondFormats_HcalObjects_HBHENegativeEFilter_h_
std::vector< PiecewiseScalingPolynomial > a1v_
unsigned getEtaIndex(const HcalDetId &id) const
unsigned getLastTimeSlice() const
std::vector< PiecewiseScalingPolynomial > a2v_
std::vector< std::pair< double, double > > cut_
std::vector< uint32_t > iEtaLimits_
bool checkPassFilter(const HcalDetId &id, const double *ts, unsigned lenTS) const
bool operator!=(const HBHENegativeEFilter &r) const
bool operator==(const HBHENegativeEFilter &r) const
friend class boost::serialization::access
double getMinCharge() const
void save(Archive &ar, const unsigned) const
const PiecewiseScalingPolynomial & getA1(const HcalDetId &id) const
void load(Archive &ar, const unsigned)
const std::vector< std::pair< double, double > > & getCut() const
const PiecewiseScalingPolynomial & getA2(const HcalDetId &id) const
unsigned getFirstTimeSlice() const
const std::vector< uint32_t > & getEtaLimits() const