ATLAS Offline Software
Loading...
Searching...
No Matches
MuonCalib::TrSimplePolynomial Class Reference

#include <TrSimplePolynomial.h>

Inheritance diagram for MuonCalib::TrSimplePolynomial:
Collaboration diagram for MuonCalib::TrSimplePolynomial:

Public Types

using ParVec = std::vector<double>

Public Member Functions

 TrSimplePolynomial (const ParVec &vecvec)
virtual std::string name () const override final
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 the boundaries.
virtual std::optional< double > driftTimePrime (const double r) const override final
virtual std::optional< double > driftTime2Prime (const double r) const override final
virtual double minRadius () const override final
 Returns the minimum drift-radius.
virtual double maxRadius () const override final
 Returns the maximum drift-radius.
virtual unsigned nDoF () const override final
 Returns the number of degrees of freedom of the tr relation.
virtual std::string typeName () const override final
double getReducedR (const double r) const
 Maps the radius interval [minRadius;maxRadius] to [-1;1] where the minimal radius is on the lower end.
double getReducedRPrime () const
 Returns the derivative of the reduced radisu w.r.t r.
unsigned int nPar () const
const ParVec & parameters () const
double par (unsigned int index) const

Private Attributes

ParVec m_parameters {}

Detailed Description

Definition at line 11 of file TrSimplePolynomial.h.

Member Typedef Documentation

◆ ParVec

using MuonCalib::CalibFunc::ParVec = std::vector<double>
inherited

Definition at line 35 of file CalibFunc.h.

Constructor & Destructor Documentation

◆ TrSimplePolynomial()

MuonCalib::TrSimplePolynomial::TrSimplePolynomial ( const ParVec & vec)

Definition at line 9 of file TrSimplePolynomial.cxx.

10 if (minRadius() >= maxRadius()) {
11 THROW_EXCEPTION("Minimum radius greater than maximum radius!");
12 }
13 }
std::vector< size_t > vec
ITrRelation(const ParVec &parameters)
Constructor taking the input r-t relation & the vector of parameters.
Definition ITrRelation.h:20
virtual double minRadius() const override final
Returns the minimum drift-radius.
virtual double maxRadius() const override final
Returns the maximum drift-radius.
#define THROW_EXCEPTION(MESSAGE)
Definition throwExcept.h:10

Member Function Documentation

◆ driftTime()

std::optional< double > MuonCalib::TrSimplePolynomial::driftTime ( const double r) const
finaloverridevirtual

Interface method for fetching the drift-time from the radius Returns a nullopt if the time is out of the boundaries.

Implements MuonCalib::ITrRelation.

Definition at line 16 of file TrSimplePolynomial.cxx.

16 {
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 }
#define x
double par(unsigned int index) const
Definition CalibFunc.h:41
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
virtual unsigned nDoF() const override final
Returns the number of degrees of freedom of the tr relation.
int r
Definition globals.cxx:22
time(flags, cells_name, *args, **kw)

◆ driftTime2Prime()

std::optional< double > MuonCalib::TrSimplePolynomial::driftTime2Prime ( const double r) const
finaloverridevirtual

Implements MuonCalib::ITrRelation.

Definition at line 37 of file TrSimplePolynomial.cxx.

37 {
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 }
double getReducedRPrime() const
Returns the derivative of the reduced radisu w.r.t r.
Definition ITrRelation.h:46

◆ driftTimePrime()

std::optional< double > MuonCalib::TrSimplePolynomial::driftTimePrime ( const double r) const
finaloverridevirtual

Implements MuonCalib::ITrRelation.

Definition at line 27 of file TrSimplePolynomial.cxx.

27 {
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 }

◆ getReducedR()

double MuonCalib::ITrRelation::getReducedR ( const double r) const
inlineinherited

Maps the radius interval [minRadius;maxRadius] to [-1;1] where the minimal radius is on the lower end.

Definition at line 42 of file ITrRelation.h.

42 {
44 }
virtual double maxRadius() const =0
Returns the maximum drift-radius.
virtual double minRadius() const =0
Returns the minimum drift-radius.
double mapToUnitInterval(const double x, const double lowerEdge, const double upperEdge)
Maps the number x which is in [lowEdge;upperEdge] to the interval [-1;1].
Definition UtilFunc.h:12

◆ getReducedRPrime()

double MuonCalib::ITrRelation::getReducedRPrime ( ) const
inlineinherited

Returns the derivative of the reduced radisu w.r.t r.

Definition at line 46 of file ITrRelation.h.

46 {
48 }
double unitIntervalPrime(const double lowerEdge, const double upperEdge)
Definition UtilFunc.h:15

◆ maxRadius()

double MuonCalib::TrSimplePolynomial::maxRadius ( ) const
finaloverridevirtual

Returns the maximum drift-radius.

Implements MuonCalib::ITrRelation.

Definition at line 47 of file TrSimplePolynomial.cxx.

47{ return par(1); }

◆ minRadius()

double MuonCalib::TrSimplePolynomial::minRadius ( ) const
finaloverridevirtual

Returns the minimum drift-radius.

Implements MuonCalib::ITrRelation.

Definition at line 46 of file TrSimplePolynomial.cxx.

46{ return par(0); }

◆ name()

std::string MuonCalib::TrSimplePolynomial::name ( ) const
finaloverridevirtual

Implements MuonCalib::CalibFunc.

Definition at line 14 of file TrSimplePolynomial.cxx.

14{ return "TrSimplePolynomial"; }

◆ nDoF()

unsigned MuonCalib::TrSimplePolynomial::nDoF ( ) const
finaloverridevirtual

Returns the number of degrees of freedom of the tr relation.

Implements MuonCalib::ITrRelation.

Definition at line 48 of file TrSimplePolynomial.cxx.

48{ return nPar() -2; }
unsigned int nPar() const
Definition CalibFunc.h:39

◆ nPar()

unsigned int MuonCalib::CalibFunc::nPar ( ) const
inlineinherited

Definition at line 39 of file CalibFunc.h.

39{ return m_parameters.size(); }

◆ par()

double MuonCalib::CalibFunc::par ( unsigned int index) const
inlineinherited

Definition at line 41 of file CalibFunc.h.

41 {
42 return index < nPar() ? m_parameters[index] : 0.;
43 }
str index
Definition DeMoScan.py:362

◆ parameters()

const ParVec & MuonCalib::CalibFunc::parameters ( ) const
inlineinherited

Definition at line 40 of file CalibFunc.h.

40{ return m_parameters; }

◆ typeName()

virtual std::string MuonCalib::ITrRelation::typeName ( ) const
inlinefinaloverridevirtualinherited

Implements MuonCalib::CalibFunc.

Definition at line 24 of file ITrRelation.h.

24{ return "ITrRelation"; }

Member Data Documentation

◆ m_parameters

ParVec MuonCalib::CalibFunc::m_parameters {}
privateinherited

Definition at line 48 of file CalibFunc.h.

48{};

The documentation for this class was generated from the following files: