ATLAS Offline Software
Loading...
Searching...
No Matches
CalibratedSpacePoint.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
6namespace {
7 static const Amg::Vector3D zero{Amg::Vector3D::Zero()};
8}
9namespace MuonR4{
11 switch (s){
12 case State::Valid:
13 return "valid";
14 case State::Outlier:
15 return "outlier";
16 case State::FailedCalib:
17 return "failed calibration";
18 case State::Duplicate:
19 return "duplicate";
20
21 }
22 return "unknown";
23 }
25 Amg::Vector3D&& posInChamber,
26 State st):
27 m_posInChamber{std::move(posInChamber)},
28 m_parent{uncalibSpacePoint},
29 m_state{st} {
30 }
34 static const Amg::Vector3D s_Dir{Amg::Vector3D::UnitX()};
35 return m_parent? m_parent->sensorDirection() : (m_beamLine ? (*m_beamLine) : s_Dir);
36 }
38 static const Amg::Vector3D s_Dir{Amg::Vector3D::UnitY()};
42 return m_parent? m_parent->toNextSensor() : (m_beamLine ? zero : s_Dir);
43 }
45 static const Amg::Vector3D s_Dir{Amg::Vector3D::UnitZ()};
46 return m_parent ? m_parent->planeNormal() : (m_beamLine ? zero : s_Dir);
47 }
50 return m_cov;
51 }
56 using enum xAOD::UncalibMeasType;
57 const auto t = type();
58 return t == MdtDriftCircleType || (t == Other && m_beamLine != nullptr);
59 }
61 return m_driftRadius;
62 }
67 double CalibratedSpacePoint::time() const { return m_time; }
69 m_time = t;
70 m_measuresTime = true;
71 }
72 bool CalibratedSpacePoint::measuresPhi() const { return !m_parent || m_parent->measuresPhi(); }
73 bool CalibratedSpacePoint::measuresEta() const { return !m_parent || m_parent->measuresEta(); }
76 unsigned CalibratedSpacePoint::dimension() const { return measuresEta() + measuresPhi(); }
79 m_beamLine = std::make_unique<Amg::Vector3D>(std::move(beamDir));
80 }
81
82 void CalibratedSpacePoint::print(std::ostream& ostr) const {
84 ostr<<"Calibrated SP "<<spacePoint()->msSector()->idHelperSvc()->toString(spacePoint()->identify());
85 } else {
86 ostr<<"Auxiliary measurement";
87 }
88 ostr<<" ("<<toString(fitState())<<")";
89 ostr<<" @ "<<Amg::toString(localPosition());
91 ostr<<", wire: "<<Amg::toString(sensorDirection())<<", drift R: "<<driftRadius();
92 } else {
93 ostr<<", (dir/toNext/planeNormal): "<<Amg::toString(sensorDirection())
95 }
96 auto boolToStr = [](const bool B) -> std::string {
97 return B ? "yay" : "nay";
98 };
99 if (hasTime()) {
100 ostr<<", time: "<<time();
101 }
102 ostr<<", measures eta/phi/time: "<<boolToStr(measuresEta())
103 <<"/"<<boolToStr(measuresPhi())<<"/"<<boolToStr(hasTime());
104 ostr<<", covariance (eta/phi/time): ("<<m_cov[Acts::toUnderlying(CovIdx::etaCov)]<<", "
105 <<m_cov[Acts::toUnderlying(CovIdx::phiCov)]<<", "<<m_cov[Acts::toUnderlying(CovIdx::timeCov)]<<")";
106 }
107}
const Muon::IMuonIdHelperSvc * idHelperSvc() const
Returns the IdHelpeSvc.
double driftRadius() const
: Returns the size of the drift radius
Amg::Vector3D m_posInChamber
Calibrated position.
void setDriftRadius(const double r)
Update the drift radius of the space point measurement.
void setTimeMeasurement(double t)
Set the time measurement.
const Amg::Vector3D & toNextSensor() const
const Amg::Vector3D & sensorDirection() const
bool hasTime() const
Returns whether the measurement carries time information.
bool m_measuresTime
time flag (By default true for Mdt detectors)
void setBeamDirection(Amg::Vector3D &&beamDir)
Sets the beamline direction.
bool measuresEta() const
Returns whether the calibrated space point measures eta.
const Amg::Vector3D & planeNormal() const
Returns the vector pointing out of the measurement plane.
double m_time
Calibrated time (Acts units)
const Amg::Vector3D & localPosition() const
bool isStraw() const
Returns whether the measurement is a Mdt.
static std::string toString(const State s)
Converts the state enum into a string.
void setFitState(State st)
Set the state of the calibrated space point.
bool measuresLoc1() const
Returns whether the measurement constains the bending direction.
bool measuresLoc0() const
Returns whether the measurement constains the non-bending direction.
void setCovariance(const Cov_t &cov)
Set the covariance matrix of the calibrated space point.
double time() const
Returns the measurement's recorded time.
State m_state
Calibration state.
CalibratedSpacePoint(const SpacePoint *uncalibSpacePoint, Amg::Vector3D &&posInChamber, State st=State::Valid)
Standard constructor.
void print(std::ostream &ostr) const
Print function.
const SpacePoint * spacePoint() const
The pointer to the space point out of which this space point has been built.
xAOD::UncalibMeasType type() const
Returns the space point type.
std::shared_ptr< Amg::Vector3D > m_beamLine
Direction of the beamline (Beamspot constraint)
const Cov_t & covariance() const
Returns the covariance array.
bool measuresPhi() const
Returns whether the calibrated space point measures phi.
unsigned dimension() const
Returns the local dimension of the measurement.
const SpacePoint * m_parent
Uncalibrated space point from which this space point is constructed.
State
State flag to distinguish different space point states.
double m_driftRadius
Calibrated drift radius.
State fitState() const
Returns the state of the calibrated space point.
The muon space point is the combination of two uncalibrated measurements one of them measures the eta...
virtual std::string toString(const Identifier &id) const =0
print all fields to string
void zero(TH2 *h)
zero the contents of a 2d histogram
int r
Definition globals.cxx:22
std::string toString(const Translation3D &translation, int precision=4)
GeoPrimitvesToStringConverter.
Eigen::Matrix< double, 3, 1 > Vector3D
This header ties the generic definitions in this package.
STL namespace.
UncalibMeasType
Define the type of the uncalibrated measurement.