ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
MuonSpectrometer
MuonCalib
MuonCalibUtils
MuonCalibMath
src
BaseFunctionFitter.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
MuonCalibMath/BaseFunctionFitter.h
"
6
#include "GeoModelKernel/throwExcept.h"
7
#include <cmath>
8
9
namespace
MuonCalib
{
10
BaseFunctionFitter::BaseFunctionFitter
() {
11
init
();
12
}
13
BaseFunctionFitter::BaseFunctionFitter
(
const
unsigned
nb_coefficients) {
14
init
(nb_coefficients);
15
}
16
void
BaseFunctionFitter::init
() {
init
(5); }
17
18
void
BaseFunctionFitter::init
(
const
unsigned
nb_coefficients) {
19
m_A
=
Amg::MatrixX
(nb_coefficients,nb_coefficients);
20
m_A
.setZero();
21
m_b
=
Amg::VectorX
(nb_coefficients);
22
m_b
.setZero();
23
m_alpha
=
Amg::VectorX
(nb_coefficients);
24
m_alpha
.setZero();
25
m_nb_coefficients
= nb_coefficients;
26
}
27
int
BaseFunctionFitter::number_of_coefficients
()
const
{
28
return
m_nb_coefficients
;
29
}
30
const
Amg::VectorX
&
BaseFunctionFitter::coefficients
()
const
{
31
return
m_alpha
;
32
}
33
void
BaseFunctionFitter::set_number_of_coefficients
(
const
unsigned
nb_coefficients) {
34
init
(nb_coefficients);
35
}
36
void
BaseFunctionFitter::fit_parameters
(
const
std::vector<SamplePoint> & sample_point,
37
const
unsigned
int
first_point,
38
const
unsigned
int
last_point,
39
const
BaseFunction
& base_function) {
40
if
(first_point<1 || first_point>sample_point.size()) {
41
THROW_EXCEPTION
(
"BaseFunctionFitter::fit_parameters() - ERROR: Illegal first point "
42
<<first_point<<
", must be >=1 and <="
<<sample_point.size());
43
}
44
if
(last_point<first_point || last_point>sample_point.size()) {
45
THROW_EXCEPTION
(
"BaseFunctionFitter::fit_parameters() - ERROR: Illegal last point "
<<last_point
46
<<
", must be >="
<<first_point<<
" and <="
<<sample_point.size());
47
}
48
// clear the objects //
49
init
(
m_nb_coefficients
);
50
51
for
(
unsigned
j=0; j<
m_nb_coefficients
; ++j) {
52
for
(
unsigned
p=j; p<
m_nb_coefficients
; ++p) {
53
for
(
unsigned
k=first_point-1; k<last_point; ++k) {
54
m_A
.fillSymmetric(j,p,
m_A
(j,p)+base_function.
value
(j,sample_point[k].x1())
55
*base_function.
value
(p,sample_point[k].x1()) /
56
std::pow(sample_point[k].error(), 2));
57
}
58
}
59
for
(
unsigned
k=first_point-1; k<last_point; k++) {
60
m_b
[j] =
m_b
[j]+sample_point[k].x2()* base_function.
value
(j, sample_point[k].x1()) /
61
std::pow(sample_point[k].
error
(), 2);
62
}
63
}
64
// perform the minimization //
65
m_alpha
=
m_A
.inverse()*
m_b
;
66
}
67
}
BaseFunctionFitter.h
MuonCalib::BaseFunctionFitter::init
void init()
default initialization method
Definition
BaseFunctionFitter.cxx:16
MuonCalib::BaseFunctionFitter::coefficients
const Amg::VectorX & coefficients() const
get the coefficients determined by the fit to the sample points
Definition
BaseFunctionFitter.cxx:30
MuonCalib::BaseFunctionFitter::BaseFunctionFitter
BaseFunctionFitter()
default constructor, the number of fit parameters will be set to 5
Definition
BaseFunctionFitter.cxx:10
MuonCalib::BaseFunctionFitter::number_of_coefficients
int number_of_coefficients() const
get the number of fit parameters (coefficients) of the base functions to be fitted
Definition
BaseFunctionFitter.cxx:27
MuonCalib::BaseFunctionFitter::fit_parameters
void fit_parameters(const std::vector< SamplePoint > &sample_point, const unsigned int first_point, const unsigned int last_point, const BaseFunction &base_function)
perform a fit of the base functions (base_function) to the sample points as given in "sample_point" s...
Definition
BaseFunctionFitter.cxx:36
MuonCalib::BaseFunctionFitter::m_b
Amg::VectorX m_b
m_A*m_alpha = m_b;
Definition
BaseFunctionFitter.h:46
MuonCalib::BaseFunctionFitter::m_alpha
Amg::VectorX m_alpha
coefficients of the base functions after the fit
Definition
BaseFunctionFitter.h:45
MuonCalib::BaseFunctionFitter::set_number_of_coefficients
void set_number_of_coefficients(const unsigned nb_coefficients)
set the number of fit parameters (coefficients) of the base functions to nb_coefficients
Definition
BaseFunctionFitter.cxx:33
MuonCalib::BaseFunctionFitter::m_A
Amg::MatrixX m_A
coefficient matrix for the fit
Definition
BaseFunctionFitter.h:44
MuonCalib::BaseFunctionFitter::m_nb_coefficients
unsigned int m_nb_coefficients
number of coefficients
Definition
BaseFunctionFitter.h:43
MuonCalib::BaseFunction
This is an abstract base class for a set of base functions for fits to sample points.
Definition
BaseFunction.h:16
MuonCalib::BaseFunction::value
virtual double value(const int k, const double x) const =0
get the value of the k-th base function at x
Amg::MatrixX
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Dynamic Matrix - dynamic allocation.
Definition
EventPrimitives.h:27
Amg::VectorX
Eigen::Matrix< double, Eigen::Dynamic, 1 > VectorX
Dynamic Vector - dynamic allocation.
Definition
EventPrimitives.h:30
MuonCalib
CscCalcPed - algorithm that finds the Cathode Strip Chamber pedestals from an RDO.
Definition
CscCalcPed.cxx:21
error
Definition
IImpactPoint3dEstimator.h:72
THROW_EXCEPTION
#define THROW_EXCEPTION(MESSAGE)
Definition
throwExcept.h:10
Generated on
for ATLAS Offline Software by
1.17.0