Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:02:16

0001 #include <climits>
0002 
0003 #include "CondFormats/HcalObjects/interface/PiecewiseScalingPolynomial.h"
0004 
0005 PiecewiseScalingPolynomial::PiecewiseScalingPolynomial(const std::vector<std::vector<double> >& coeffs,
0006                                                        const std::vector<double>& limits)
0007     : coeffs_(coeffs), limits_(limits) {
0008   if (!validate())
0009     throw cms::Exception("Invalid PiecewiseScalingPolynomial constructor arguments");
0010 }
0011 
0012 bool PiecewiseScalingPolynomial::validate() const {
0013   const std::size_t nLimits(limits_.size());
0014   if (!nLimits)
0015     return false;
0016   if (nLimits >= static_cast<std::size_t>(UINT_MAX))
0017     return false;
0018   if (limits_[0] <= 0.0)
0019     return false;
0020   for (std::size_t i = 0; i < nLimits - 1; ++i)
0021     if (!(limits_[i] < limits_[i + 1]))
0022       return false;
0023   if (coeffs_.size() != nLimits + 1)
0024     return false;
0025   for (std::size_t i = 0; i <= nLimits; ++i) {
0026     if (coeffs_[i].empty())
0027       return false;
0028     if (coeffs_[i].size() >= static_cast<std::size_t>(INT_MAX))
0029       return false;
0030   }
0031   return true;
0032 }