5#ifndef CALOCLUSTERCORRECTION_CALOCLUSTERMLCALIBFEATURETRANSFORMS_H
6#define CALOCLUSTERCORRECTION_CALOCLUSTERMLCALIBFEATURETRANSFORMS_H
17 float standard(
float x,
const std::vector<float> ¶ms)
19 if (params.size() != 2)
20 throw std::invalid_argument(
"Standard expects 2 parameters [mean, std_dev]");
21 float mean = params[0], std_dev = params[1];
24 return (
x -
mean) / std_dev;
27 float log(
float x,
const std::vector<float> & )
34 float logTen(
float x,
const std::vector<float> & )
43 if (params.size() != 2)
44 throw std::invalid_argument(
"LogStandard expects 2 parameters [mean, std_dev]");
45 float log_x =
log(
x, {});
51 if (params.size() != 4)
52 throw std::invalid_argument(
"LogTenStandard expects 4 parameters [xmin, epsilon, mean, std_dev]");
53 float xmin = params[0],
epsilon = params[1],
mean = params[2], std_dev = params[3];
55 float log_x =
logTen(x_shifted, {});
61 if (params.size() != 1)
62 throw std::invalid_argument(
"MaxAbsolute expects 1 parameter [max_value]");
63 float max_val = params[0];
66 return x / std::abs(max_val);
69 float minMax(
float x,
const std::vector<float> ¶ms)
71 if (params.size() != 2)
72 throw std::invalid_argument(
"MinMaxNorm expects 2 parameters [min_val, max_val]");
73 float min_val = params[0], max_val = params[1];
74 if (min_val == max_val)
76 return (
x - min_val) / (max_val - min_val);
79 using TransformFunc = std::function<float(
float,
const std::vector<float> &)>;
void mean(std::vector< double > &bins, std::vector< double > &values, const std::vector< std::string > &files, const std::string &histname, const std::string &tplotname, const std::string &label="")
const std::map< std::string, TransformFunc > TRANSFORMATIONS
float standard(float x, const std::vector< float > ¶ms)
float minMax(float x, const std::vector< float > ¶ms)
float logTen(float x, const std::vector< float > &)
float logStandard(float x, const std::vector< float > ¶ms)
float logTenStandard(float x, const std::vector< float > ¶ms)
float maxAbsolute(float x, const std::vector< float > ¶ms)
float log(float x, const std::vector< float > &)
std::function< float(float, const std::vector< float > &)> TransformFunc