ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
MuonSpectrometer
MuonCalib
MdtCalib
MdtCalibData
src
TrSimplePolynomial.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 <
MdtCalibData/TrSimplePolynomial.h
>
6
#include "GeoModelKernel/throwExcept.h"
7
#include <cmath>
8
namespace
MuonCalib
{
9
TrSimplePolynomial::TrSimplePolynomial
(
const
ParVec
&
vec
) :
ITrRelation
{
vec
} {
10
if
(
minRadius
() >=
maxRadius
()) {
11
THROW_EXCEPTION
(
"Minimum radius greater than maximum radius!"
);
12
}
13
}
14
std::string
TrSimplePolynomial::name
()
const
{
return
"TrSimplePolynomial"
; }
15
16
std::optional<double>
TrSimplePolynomial::driftTime
(
const
double
r
)
const
{
17
if
(
r
<
minRadius
() ||
r
>
maxRadius
())
return
std::nullopt;
18
double
time{0.};
19
const
double
x
=
getReducedR
(
r
);
20
for
(
unsigned
int
k = 0; k <
nDoF
(); ++k) {
21
time +=
par
(k+2) * std::pow(
x
,k);
22
}
23
return
std::make_optional(time);
24
25
26
}
27
std::optional<double>
TrSimplePolynomial::driftTimePrime
(
const
double
r
)
const
{
28
if
(
r
<
minRadius
() ||
r
>
maxRadius
())
return
std::nullopt;
29
double
dtdr{0.};
30
const
double
dXprime =
getReducedRPrime
();
31
for
(
unsigned
int
k = 1; k <
nDoF
(); ++k) {
32
dtdr +=
par
(k+2) * k * std::pow(
r
,k-1) * dXprime;
33
}
34
return
std::make_optional(dtdr);
35
36
}
37
std::optional<double>
TrSimplePolynomial::driftTime2Prime
(
const
double
r
)
const
{
38
if
(
r
<
minRadius
() ||
r
>
maxRadius
())
return
std::nullopt;
39
double
d2tdr2{0.};
40
const
double
dt_dr = std::pow(
getReducedRPrime
(), 2);
41
for
(
unsigned
int
k = 2; k <
nDoF
(); ++k) {
42
d2tdr2 +=
par
(k+2) *k * (k-1)* std::pow(
r
,k-2) * dt_dr;
43
}
44
return
std::make_optional(d2tdr2);
45
}
46
double
TrSimplePolynomial::minRadius
()
const
{
return
par
(0); }
47
double
TrSimplePolynomial::maxRadius
()
const
{
return
par
(1); }
48
unsigned
TrSimplePolynomial::nDoF
()
const
{
return
nPar
() -2; }
49
50
}
51
52
53
54
vec
std::vector< size_t > vec
Definition
CombinationsGeneratorTest.cxx:9
TrSimplePolynomial.h
x
#define x
MuonCalib::CalibFunc::par
double par(unsigned int index) const
Definition
CalibFunc.h:41
MuonCalib::CalibFunc::nPar
unsigned int nPar() const
Definition
CalibFunc.h:39
MuonCalib::CalibFunc::ParVec
std::vector< double > ParVec
Definition
CalibFunc.h:35
MuonCalib::ITrRelation::getReducedR
double getReducedR(const double r) const
Maps the radius interval [minRadius;maxRadius] to [-1;1] where the minimal radius is on the lower end...
Definition
ITrRelation.h:42
MuonCalib::ITrRelation::ITrRelation
ITrRelation(const ParVec ¶meters)
Constructor taking the input r-t relation & the vector of parameters.
Definition
ITrRelation.h:20
MuonCalib::ITrRelation::getReducedRPrime
double getReducedRPrime() const
Returns the derivative of the reduced radisu w.r.t r.
Definition
ITrRelation.h:46
MuonCalib::TrSimplePolynomial::minRadius
virtual double minRadius() const override final
Returns the minimum drift-radius.
Definition
TrSimplePolynomial.cxx:46
MuonCalib::TrSimplePolynomial::name
virtual std::string name() const override final
Definition
TrSimplePolynomial.cxx:14
MuonCalib::TrSimplePolynomial::driftTimePrime
virtual std::optional< double > driftTimePrime(const double r) const override final
Definition
TrSimplePolynomial.cxx:27
MuonCalib::TrSimplePolynomial::maxRadius
virtual double maxRadius() const override final
Returns the maximum drift-radius.
Definition
TrSimplePolynomial.cxx:47
MuonCalib::TrSimplePolynomial::nDoF
virtual unsigned nDoF() const override final
Returns the number of degrees of freedom of the tr relation.
Definition
TrSimplePolynomial.cxx:48
MuonCalib::TrSimplePolynomial::driftTime
virtual std::optional< double > driftTime(const double r) const override final
Interface method for fetching the drift-time from the radius Returns a nullopt if the time is out of ...
Definition
TrSimplePolynomial.cxx:16
MuonCalib::TrSimplePolynomial::TrSimplePolynomial
TrSimplePolynomial(const ParVec &vec)
Definition
TrSimplePolynomial.cxx:9
MuonCalib::TrSimplePolynomial::driftTime2Prime
virtual std::optional< double > driftTime2Prime(const double r) const override final
Definition
TrSimplePolynomial.cxx:37
r
int r
Definition
globals.cxx:22
MuonCalib
CscCalcPed - algorithm that finds the Cathode Strip Chamber pedestals from an RDO.
Definition
CscCalcPed.cxx:21
THROW_EXCEPTION
#define THROW_EXCEPTION(MESSAGE)
Definition
throwExcept.h:10
Generated on
for ATLAS Offline Software by
1.17.0