CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes | Friends
PiecewiseScalingPolynomial Class Reference

#include <PiecewiseScalingPolynomial.h>

Public Member Functions

bool operator!= (const PiecewiseScalingPolynomial &r) const
 
double operator() (const double x) const
 
bool operator== (const PiecewiseScalingPolynomial &r) const
 
 PiecewiseScalingPolynomial ()
 
 PiecewiseScalingPolynomial (const std::vector< std::vector< double > > &coeffs, const std::vector< double > &limits)
 

Private Member Functions

template<class Archive >
void load (Archive &ar, const unsigned)
 
template<class Archive >
void save (Archive &ar, const unsigned) const
 
bool validate () const
 

Private Attributes

std::vector< std::vector< double > > coeffs_
 
std::vector< double > limits_
 

Friends

class boost::serialization::access
 

Detailed Description

Definition at line 9 of file PiecewiseScalingPolynomial.h.

Constructor & Destructor Documentation

PiecewiseScalingPolynomial::PiecewiseScalingPolynomial ( )
inline

Definition at line 11 of file PiecewiseScalingPolynomial.h.

References TH2PolyOfflineMaps::limits.

11 {}
PiecewiseScalingPolynomial::PiecewiseScalingPolynomial ( const std::vector< std::vector< double > > &  coeffs,
const std::vector< double > &  limits 
)

Definition at line 5 of file PiecewiseScalingPolynomial.cc.

References Exception, and validate().

7  : coeffs_(coeffs), limits_(limits) {
8  if (!validate())
9  throw cms::Exception("Invalid PiecewiseScalingPolynomial constructor arguments");
10 }
std::vector< std::vector< double > > coeffs_

Member Function Documentation

template<class Archive >
void PiecewiseScalingPolynomial::load ( Archive &  ar,
const unsigned   
)
inlineprivate

Definition at line 58 of file PiecewiseScalingPolynomial.h.

References Exception, limits_, and validate().

Referenced by MatrixToProcess.MatrixToProcess::getProcess(), MatrixToProcess.MatrixToProcess::listAll(), and ConfigBuilder.ConfigBuilder::prepare_FILTER().

58  {
59  ar& coeffs_& limits_;
60  if (!validate())
61  throw cms::Exception("In PiecewiseScalingPolynomial::load: invalid data");
62  }
std::vector< std::vector< double > > coeffs_
bool PiecewiseScalingPolynomial::operator!= ( const PiecewiseScalingPolynomial r) const
inline

Definition at line 40 of file PiecewiseScalingPolynomial.h.

References alignCSCRings::r, and validate().

40 { return !(*this == r); }
double PiecewiseScalingPolynomial::operator() ( const double  x) const
inline

Definition at line 15 of file PiecewiseScalingPolynomial.h.

References a, HltBtagPostValidation_cff::c, coeffs_, TH2PolyOfflineMaps::limits, limits_, Scenarios_cff::scale, mitigatedMETSequence_cff::U, eostools::which(), and x.

15  {
16  double scale(0.0);
17  if (x > 0.0) {
18  const unsigned nLimits(limits_.size());
19  if (nLimits) {
20  const double* limits(&limits_[0]);
21  unsigned which(0U);
22  for (; which < nLimits; ++which)
23  if (x < limits[which])
24  break;
25  const std::vector<double>& c(coeffs_[which]);
26  const double* a = &c[0];
27  for (int deg = c.size() - 1; deg >= 0; --deg) {
28  scale *= x;
29  scale += a[deg];
30  }
31  }
32  }
33  return scale * x;
34  }
std::vector< std::vector< double > > coeffs_
double a
Definition: hdecay.h:119
def which(cmd)
Definition: eostools.py:336
bool PiecewiseScalingPolynomial::operator== ( const PiecewiseScalingPolynomial r) const
inline

Definition at line 36 of file PiecewiseScalingPolynomial.h.

References coeffs_, and limits_.

36  {
37  return coeffs_ == r.coeffs_ && limits_ == r.limits_;
38  }
std::vector< std::vector< double > > coeffs_
template<class Archive >
void PiecewiseScalingPolynomial::save ( Archive &  ar,
const unsigned   
) const
inlineprivate

Definition at line 51 of file PiecewiseScalingPolynomial.h.

References Exception, limits_, and validate().

Referenced by Vispa.Main.TabController.TabController::allowClose(), Vispa.Main.TabController.TabController::checkModificationTimestamp(), and SpecificationBuilder_cfi.Specification::saveAll().

51  {
52  if (!validate())
53  throw cms::Exception("In PiecewiseScalingPolynomial::save: invalid data");
54  ar& coeffs_& limits_;
55  }
std::vector< std::vector< double > > coeffs_
bool PiecewiseScalingPolynomial::validate ( ) const
private

Definition at line 12 of file PiecewiseScalingPolynomial.cc.

References coeffs_, relativeConstraints::empty, mps_fire::i, limits_, and findQualityFiles::size.

Referenced by load(), operator!=(), PiecewiseScalingPolynomial(), and save().

12  {
13  const std::size_t nLimits(limits_.size());
14  if (!nLimits)
15  return false;
16  if (nLimits >= static_cast<std::size_t>(UINT_MAX))
17  return false;
18  if (limits_[0] <= 0.0)
19  return false;
20  for (std::size_t i = 0; i < nLimits - 1; ++i)
21  if (!(limits_[i] < limits_[i + 1]))
22  return false;
23  if (coeffs_.size() != nLimits + 1)
24  return false;
25  for (std::size_t i = 0; i <= nLimits; ++i) {
26  if (coeffs_[i].empty())
27  return false;
28  if (coeffs_[i].size() >= static_cast<std::size_t>(INT_MAX))
29  return false;
30  }
31  return true;
32 }
size
Write out results.
std::vector< std::vector< double > > coeffs_

Friends And Related Function Documentation

friend class boost::serialization::access
friend

Definition at line 48 of file PiecewiseScalingPolynomial.h.

Member Data Documentation

std::vector<std::vector<double> > PiecewiseScalingPolynomial::coeffs_
private

Definition at line 45 of file PiecewiseScalingPolynomial.h.

Referenced by operator()(), operator==(), and validate().

std::vector<double> PiecewiseScalingPolynomial::limits_
private

Definition at line 46 of file PiecewiseScalingPolynomial.h.

Referenced by load(), operator()(), operator==(), save(), and validate().