67 static constexpr size_t MEAN_VALUE_INDEX_IN_OUTPUT_VECTOR = 1;
74 std::vector<double> channelHistogramData(NUMBER_OF_HISTOGRAM_BINS, 0);
76 std::vector<double> outputGaussianFitValues;
77 double binWidth = (HISTOGRAM_RANGE - (-HISTOGRAM_RANGE)) / NUMBER_OF_HISTOGRAM_BINS;
78 double minGausFitRange = 0;
79 double maxGausFitRange = 0;
80 double MaxValOfHistogram = 0.0;
82 for (
int iBin = 0; iBin < NUMBER_OF_HISTOGRAM_BINS; ++iBin) {
83 channelHistogramData[iBin] = mHistogram.at(iBin,
channelID);
86 int maxElementIndex = std::max_element(channelHistogramData.begin(), channelHistogramData.end()) - channelHistogramData.begin();
87 int maxElement = *std::max_element(channelHistogramData.begin(), channelHistogramData.end());
90 minGausFitRange = (-HISTOGRAM_RANGE + (maxElementIndex -
sGausFitBins) * binWidth + binWidth / 2.0);
91 maxGausFitRange = (-HISTOGRAM_RANGE + (maxElementIndex +
sGausFitBins) * binWidth + binWidth / 2.0);
93 double returnCode = math_utils::fitGaus<double>(NUMBER_OF_HISTOGRAM_BINS, channelHistogramData.data(),
94 minGausFitRange, maxGausFitRange, outputGaussianFitValues);
96 MaxValOfHistogram = (-HISTOGRAM_RANGE + maxElementIndex * binWidth + binWidth / 2.0);
99 LOG(error) <<
"Gaussian fit error!";
100 return static_cast<int16_t
>(std::round(MaxValOfHistogram));
104 return static_cast<int16_t
>(std::round(outputGaussianFitValues[MEAN_VALUE_INDEX_IN_OUTPUT_VECTOR]));