1 #ifndef DataFormats_NanoAOD_MergeableCounterTable_h 2 #define DataFormats_NanoAOD_MergeableCounterTable_h 28 "Trying to merge " + name +
" with " + other.
name +
" failed compatibility test.\n");
32 return name == other.
name;
47 "LogicError",
"Trying to merge " + this->
name +
" with " + other.
name +
" failed compatibility test.\n");
48 auto newNorm = norm + other.
norm;
49 this->
value = (newNorm != 0) ? (this->
value * norm + other.
value * other.
norm) / newNorm : 0;
68 "Trying to merge " + name +
" with " + other.
name +
" failed compatibility test.\n");
69 for (
unsigned int i = 0,
n = values.size();
i <
n; ++
i) {
74 return name == other.
name && values.size() == other.
values.size();
88 const std::vector<T>& somevalues,
94 "LogicError",
"Trying to merge " + this->
name +
" with " + other.
name +
" failed compatibility test.\n");
95 auto newNorm = norm + other.
norm;
96 for (
unsigned int i = 0,
n = this->
values.size();
i <
n; ++
i) {
112 template <
typename F>
117 template <
typename F>
122 template <
typename I>
127 template <
typename F>
133 template <
typename F>
139 template <
typename I>
178 template <
typename T>
181 auto x = std::find_if(one.begin(), one.end(), [&y](
const T& x) {
return x.name == y.name; });
SingleColumn< float_accumulator > FloatColumn
void addInt(const std::string &name, const std::string &doc, I value)
void operator+=(const SingleColumn< T > &other)
bool compatible(const VectorColumn< T > &other)
const std::vector< FloatWithNormColumn > & floatWithNormCols() const
VectorColumn(const std::string &aname, const std::string &adoc, unsigned int size)
const std::vector< VIntColumn > & vintCols() const
void addFloat(const std::string &name, const std::string &doc, F value)
void operator+=(const VectorWithNormColumn< T > &other)
std::vector< VFloatWithNormColumn > vfloatWithNormCols_
std::vector< IntColumn > intCols_
void addVInt(const std::string &name, const std::string &doc, const std::vector< I > values)
void operator+=(const SingleWithNormColumn< T > &other)
void swap(MergeableCounterTable &iOther)
void addVFloatWithNorm(const std::string &name, const std::string &doc, const std::vector< F > values, double norm)
const std::vector< IntColumn > & intCols() const
VectorWithNormColumn(const std::string &aname, const std::string &adoc, unsigned int size, double anorm=0)
VectorColumn(const std::string &aname, const std::string &adoc, const std::vector< T > &somevalues)
const std::vector< FloatColumn > & floatCols() const
void operator+=(const VectorColumn< T > &other)
SingleWithNormColumn< float_accumulator > FloatWithNormColumn
void addVFloat(const std::string &name, const std::string &doc, const std::vector< F > values)
VectorWithNormColumn< float_accumulator > VFloatWithNormColumn
bool tryMerge(std::vector< T > &one, const std::vector< T > &two)
std::vector< FloatWithNormColumn > floatWithNormCols_
const std::complex< double > I
std::vector< VIntColumn > vintCols_
std::vector< VFloatColumn > vfloatCols_
long long int_accumulator
bool compatible(const SingleColumn< T > &other)
const std::vector< VFloatWithNormColumn > & vfloatWithNormCols() const
std::vector< FloatColumn > floatCols_
void addFloatWithNorm(const std::string &name, const std::string &doc, F value, double norm)
const std::vector< VFloatColumn > & vfloatCols() const
VectorColumn< float_accumulator > VFloatColumn
SingleWithNormColumn(const std::string &aname, const std::string &adoc, T avalue=T(), const double anorm=0)
VectorColumn< int_accumulator > VIntColumn
VectorWithNormColumn(const std::string &aname, const std::string &adoc, const std::vector< T > &somevalues, double anorm=0)
static uInt32 F(BLOWFISH_CTX *ctx, uInt32 x)
SingleColumn< int_accumulator > IntColumn
bool mergeProduct(const MergeableCounterTable &other)
SingleColumn(const std::string &aname, const std::string &adoc, T avalue=T())