ATLAS Offline Software
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 
6 #include "GeoModelKernel/throwExcept.h"
7 #include <cmath>
8 namespace MuonCalib{
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 
TrSimplePolynomial.h
beamspotman.r
def r
Definition: beamspotman.py:674
MuonCalib::TrSimplePolynomial::name
virtual std::string name() const override final
Definition: TrSimplePolynomial.cxx:14
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
vec
std::vector< size_t > vec
Definition: CombinationsGeneratorTest.cxx:9
x
#define x
MuonCalib::CalibFunc::par
double par(unsigned int index) const
Definition: CalibFunc.h:41
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::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::driftTime2Prime
virtual std::optional< double > driftTime2Prime(const double r) const override final
Definition: TrSimplePolynomial.cxx:37
MuonCalib
CscCalcPed - algorithm that finds the Cathode Strip Chamber pedestals from an RDO.
Definition: CscCalcPed.cxx:22
MuonCalib::CalibFunc::ParVec
std::vector< double > ParVec
Definition: CalibFunc.h:35
MuonCalib::TrSimplePolynomial::minRadius
virtual double minRadius() const override final
Returns the minimum drift-radius.
Definition: TrSimplePolynomial.cxx:46
MuonCalib::TrSimplePolynomial::driftTimePrime
virtual std::optional< double > driftTimePrime(const double r) const override final
Definition: TrSimplePolynomial.cxx:27
THROW_EXCEPTION
#define THROW_EXCEPTION(MESSAGE)
Definition: throwExcept.h:10
MuonCalib::ITrRelation::getReducedRPrime
double getReducedRPrime() const
Returns the derivative of the reduced radisu w.r.t r.
Definition: ITrRelation.h:46
MuonCalib::CalibFunc::nPar
unsigned int nPar() const
Definition: CalibFunc.h:39
pow
constexpr int pow(int base, int exp) noexcept
Definition: ap_fixedTest.cxx:15
fitman.k
k
Definition: fitman.py:528
MuonCalib::ITrRelation
Definition: ITrRelation.h:17