Back to home page

Project CMSSW displayed by LXR

 
 

    


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

0001 #include "CondFormats/RunInfo/interface/LHCInfoVectorizedFields.h"
0002 #include "CondCore/CondDB/interface/Exception.h"
0003 
0004 LHCInfoVectorizedFields::LHCInfoVectorizedFields() : LHCInfoVectorizedFields(ISIZE, FSIZE, TSIZE, SSIZE) {}
0005 
0006 LHCInfoVectorizedFields::LHCInfoVectorizedFields(size_t iSize, size_t fSize, size_t tSize, size_t sSize) {
0007   m_intParams.resize(iSize, std::vector<unsigned int>(1, 0));
0008   m_floatParams.resize(fSize, std::vector<float>(1, 0.));
0009   m_timeParams.resize(tSize, std::vector<unsigned long long>(1, 0ULL));
0010   m_stringParams.resize(sSize, std::vector<std::string>(1, ""));
0011 }
0012 
0013 template <typename T>
0014 const T& LHCInfoVectorizedFields::getParams(const std::vector<T>& params, size_t index) {
0015   if (index >= params.size())
0016     throw cond::Exception("Parameter with index " + std::to_string(index) + " is out of range.");
0017   return params[index];
0018 }
0019 
0020 template const std::vector<unsigned int>& LHCInfoVectorizedFields::getParams(
0021     const std::vector<std::vector<unsigned int>>&, size_t);
0022 template const std::vector<float>& LHCInfoVectorizedFields::getParams(const std::vector<std::vector<float>>&, size_t);
0023 template const std::vector<unsigned long long>& LHCInfoVectorizedFields::getParams(
0024     const std::vector<std::vector<unsigned long long>>&, size_t);
0025 template const std::vector<std::string>& LHCInfoVectorizedFields::getParams(
0026     const std::vector<std::vector<std::string>>&, size_t);
0027 
0028 template <typename T>
0029 T& LHCInfoVectorizedFields::accessParams(std::vector<T>& params, size_t index) {
0030   if (index >= params.size())
0031     throw cond::Exception("Parameter with index " + std::to_string(index) + " is out of range.");
0032   return params[index];
0033 }
0034 
0035 template std::vector<unsigned int>& LHCInfoVectorizedFields::accessParams(std::vector<std::vector<unsigned int>>&,
0036                                                                           size_t);
0037 template std::vector<float>& LHCInfoVectorizedFields::accessParams(std::vector<std::vector<float>>&, size_t);
0038 template std::vector<unsigned long long>& LHCInfoVectorizedFields::accessParams(
0039     std::vector<std::vector<unsigned long long>>&, size_t);
0040 template std::vector<std::string>& LHCInfoVectorizedFields::accessParams(std::vector<std::vector<std::string>>&,
0041                                                                          size_t);
0042 
0043 template <typename T>
0044 const T& LHCInfoVectorizedFields::getOneParam(const std::vector<std::vector<T>>& params, size_t index) {
0045   if (index >= params.size())
0046     throw cond::Exception("Parameter with index " + std::to_string(index) + " is out of range.");
0047   const std::vector<T>& inner = params[index];
0048   if (inner.empty())
0049     throw cond::Exception("Parameter with index " + std::to_string(index) + " type=" + typeid(T).name() +
0050                           " has no value stored.");
0051   return inner[0];
0052 }
0053 
0054 template const unsigned int& LHCInfoVectorizedFields::getOneParam(const std::vector<std::vector<unsigned int>>&,
0055                                                                   size_t);
0056 template const float& LHCInfoVectorizedFields::getOneParam(const std::vector<std::vector<float>>&, size_t);
0057 template const unsigned long long& LHCInfoVectorizedFields::getOneParam(
0058     const std::vector<std::vector<unsigned long long>>&, size_t);
0059 template const std::string& LHCInfoVectorizedFields::getOneParam(const std::vector<std::vector<std::string>>&, size_t);
0060 
0061 template <typename T>
0062 void LHCInfoVectorizedFields::setOneParam(std::vector<std::vector<T>>& params, size_t index, const T& value) {
0063   if (index >= params.size())
0064     throw cond::Exception("Parameter with index " + std::to_string(index) + " is out of range.");
0065   params[index] = std::vector<T>(1, value);
0066 }
0067 
0068 template void LHCInfoVectorizedFields::setOneParam(std::vector<std::vector<unsigned int>>& params,
0069                                                    size_t index,
0070                                                    const unsigned int& value);
0071 template void LHCInfoVectorizedFields::setOneParam(std::vector<std::vector<float>>& params,
0072                                                    size_t index,
0073                                                    const float& value);
0074 template void LHCInfoVectorizedFields::setOneParam(std::vector<std::vector<unsigned long long>>& params,
0075                                                    size_t index,
0076                                                    const unsigned long long& value);
0077 template void LHCInfoVectorizedFields::setOneParam(std::vector<std::vector<std::string>>& params,
0078                                                    size_t index,
0079                                                    const std::string& value);
0080 
0081 template <typename T>
0082 void LHCInfoVectorizedFields::setParams(std::vector<T>& params, size_t index, const T& value) {
0083   if (index >= params.size())
0084     throw cond::Exception("Parameter with index " + std::to_string(index) + " is out of range.");
0085   params[index] = value;
0086 }
0087 
0088 template void LHCInfoVectorizedFields::setParams(std::vector<std::vector<unsigned int>>& params,
0089                                                  size_t index,
0090                                                  const std::vector<unsigned int>& value);
0091 template void LHCInfoVectorizedFields::setParams(std::vector<std::vector<float>>& params,
0092                                                  size_t index,
0093                                                  const std::vector<float>& value);
0094 template void LHCInfoVectorizedFields::setParams(std::vector<std::vector<unsigned long long>>& params,
0095                                                  size_t index,
0096                                                  const std::vector<unsigned long long>& value);
0097 template void LHCInfoVectorizedFields::setParams(std::vector<std::vector<std::string>>& params,
0098                                                  size_t index,
0099                                                  const std::vector<std::string>& value);