ATLAS Offline Software
Loading...
Searching...
No Matches
MuonR4::SpacePoint Class Reference

The muon space point is the combination of two uncalibrated measurements one of them measures the eta and the other the phi coordinate. More...

#include <SpacePoint.h>

Collaboration diagram for MuonR4::SpacePoint:

Public Types

enum class  CovIdx : std::uint8_t { phiCov = Acts::toUnderlying(SeedingAux::ResidualIdx::nonBending) , etaCov = Acts::toUnderlying(SeedingAux::ResidualIdx::bending) , timeCov = Acts::toUnderlying(SeedingAux::ResidualIdx::time) }
using Cov_t = std::array<double, 3>
 Abrivation of the covariance type.
using SeedingAux = Acts::Experimental::detail::CompSpacePointAuxiliaries
 Enum to define the components of the covariance array.

Public Member Functions

 SpacePoint (const xAOD::MuonMeasurement *primMeas, const xAOD::MuonMeasurement *secondMeas=nullptr)
const Amg::Vector3DlocalPosition () const
const Amg::Vector3DsensorDirection () const
const Amg::Vector3DtoNextSensor () const
const Amg::Vector3DplaneNormal () const
 Returns the vector pointing out of the measurement plane.
double time () const
 Returns the measurement's recorded time.
bool isStraw () const
 Returns whether the measurement is a Mdt.
bool hasTime () const
 Returns whether the measurement carries time information.
bool measuresLoc0 () const
 Returns whether the measurement constains the non-bending direction.
bool measuresLoc1 () const
 Returns whether the measurement constains the bending direction.
double driftRadius () const
 : Returns the size of the drift radius
const Cov_tcovariance () const
 Returns the covariance array.
void setCovariance (Cov_t &&cov)
void setDirection (const Amg::Vector3D &sensorDir, const Amg::Vector3D &toNextSensor)
 Setter for the direction of the measurement channel in the sector frame.
void setPosition (const Amg::Vector3D &pos)
const xAOD::MuonMeasurementprimaryMeasurement () const
const xAOD::MuonMeasurementsecondaryMeasurement () const
const MuonGMR4::SpectrometerSectormsSector () const
const MuonGMR4::Chamberchamber () const
 : Pointer to the associated chamber
xAOD::UncalibMeasType type () const
bool measuresPhi () const
 : Does the space point contain a phi measurement
bool measuresEta () const
 : Does the space point contain an eta measurement
const Identifieridentify () const
 : Identifier of the primary measurement
bool operator== (const SpacePoint &other) const
 : Equality check by checking the prd pointers
void setInstanceCounts (std::shared_ptr< unsigned > etaCounts, std::shared_ptr< unsigned > phiCounts)
 Set the number of space points built with the same eta / phi prd.
unsigned nEtaInstanceCounts () const
 How many space points have been built in total with the same eta prd.
unsigned nPhiInstanceCounts () const
 How many space points have been built in total with the same phi prd.
unsigned dimension () const
 Is the space point a 1D or combined 2D measurement.

Static Public Member Functions

static std::string toString (const CovIdx idx)
 Convert the covariance index to string.

Private Member Functions

void print (std::ostream &ostr) const

Private Attributes

const xAOD::MuonMeasurementm_primaryMeas {nullptr}
const xAOD::MuonMeasurementm_secondaryMeas {nullptr}
bool m_measEta {!m_primaryMeas->measuresPhi() || isStraw()}
 Flag indicating that the measurement is an eta measurement.
Amg::Vector3D m_pos {Amg::Vector3D::Zero()}
 Local position inside the msSector.
Amg::Vector3D m_dir {Amg::Vector3D::Zero()}
 Local sensor direction.
Amg::Vector3D m_toNext {Amg::Vector3D::Zero()}
 Direction to the next sensor.
Amg::Vector3D m_normal {Amg::Vector3D::Zero()}
 Direction vector pointing outside the sensor plane.
Cov_t m_measCovariance {Acts::filledArray<double, 3>(0.)}
 Measurement covariance.
std::shared_ptr< const unsigned > m_etaInstances {std::make_shared<unsigned>(1)}
 In how many space points is the eta measurement used.
std::shared_ptr< const unsigned > m_phiInstances {std::make_shared<unsigned>(1)}
 In how many space points is the phi measurement used.

Friends

std::ostream & operator<< (std::ostream &ostr, const CovIdx idx)
 The ostream opeator.
std::ostream & operator<< (std::ostream &ostr, const SpacePoint &sp)
 The print-out operator.

Detailed Description

The muon space point is the combination of two uncalibrated measurements one of them measures the eta and the other the phi coordinate.

In cases, without a complementary measurment the spacepoint just represents the single measurement and hence has a uncertainty into the other direction corresponding to the half-length of the measurement channel

Definition at line 25 of file MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/MuonSpacePoint/SpacePoint.h.

Member Typedef Documentation

◆ Cov_t

using MuonR4::SpacePoint::Cov_t = std::array<double, 3>

Abrivation of the covariance type.

Definition at line 28 of file MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/MuonSpacePoint/SpacePoint.h.

◆ SeedingAux

using MuonR4::SpacePoint::SeedingAux = Acts::Experimental::detail::CompSpacePointAuxiliaries

Enum to define the components of the covariance array.

Definition at line 30 of file MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/MuonSpacePoint/SpacePoint.h.

Member Enumeration Documentation

◆ CovIdx

enum class MuonR4::SpacePoint::CovIdx : std::uint8_t
strong
Enumerator
phiCov 
etaCov 
timeCov 

Definition at line 31 of file MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/MuonSpacePoint/SpacePoint.h.

31 : std::uint8_t {
32 phiCov = Acts::toUnderlying(SeedingAux::ResidualIdx::nonBending),
33 etaCov = Acts::toUnderlying(SeedingAux::ResidualIdx::bending),
34 timeCov = Acts::toUnderlying(SeedingAux::ResidualIdx::time)
35 };

Constructor & Destructor Documentation

◆ SpacePoint()

MuonR4::SpacePoint::SpacePoint ( const xAOD::MuonMeasurement * primMeas,
const xAOD::MuonMeasurement * secondMeas = nullptr )

In case of 2D measurements like sTgc-pads or BI-RPC strips we can directly take the covariance from the measurement itself. To indicate that the space point measures both, eta & phi coordinate set the secondary measurement to be the primary one

Definition at line 33 of file MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/src/SpacePoint.cxx.

34 :
35 m_primaryMeas{primMeas},
36 m_secondaryMeas{secondMeas} {
37
38 assert(m_primaryMeas != nullptr);
42 if (!secondMeas && primMeas->numDimensions() == 2) {
44 }
45 }
virtual unsigned int numDimensions() const =0
Returns the number of dimensions of the measurement.

Member Function Documentation

◆ chamber()

const MuonGMR4::Chamber * MuonR4::SpacePoint::chamber ( ) const

: Pointer to the associated chamber

Definition at line 77 of file MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/src/SpacePoint.cxx.

77 {
78 return m_primaryMeas->readoutElement()->chamber();
79 }

◆ covariance()

const Cov_t & MuonR4::SpacePoint::covariance ( ) const

◆ dimension()

unsigned int MuonR4::SpacePoint::dimension ( ) const

Is the space point a 1D or combined 2D measurement.

Definition at line 102 of file MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/src/SpacePoint.cxx.

102 {
103 return (secondaryMeasurement() != nullptr) + 1;
104 }

◆ driftRadius()

double MuonR4::SpacePoint::driftRadius ( ) const

: Returns the size of the drift radius

Definition at line 50 of file MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/src/SpacePoint.cxx.

50 {
52 static_cast<const xAOD::MdtDriftCircle*>(m_primaryMeas)->driftRadius() : 0.;
53 }
double driftRadius() const
: Returns the size of the drift radius
MdtDriftCircle_v1 MdtDriftCircle

◆ hasTime()

bool MuonR4::SpacePoint::hasTime ( ) const

Returns whether the measurement carries time information.

Definition at line 59 of file MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/src/SpacePoint.cxx.

59{ return false; }

◆ identify()

const Identifier & MuonR4::SpacePoint::identify ( ) const

: Identifier of the primary measurement

Definition at line 92 of file MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/src/SpacePoint.cxx.

92 {
93 return m_primaryMeas->identify();
94 }

◆ isStraw()

bool MuonR4::SpacePoint::isStraw ( ) const

Returns whether the measurement is a Mdt.

Definition at line 58 of file MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/src/SpacePoint.cxx.

◆ localPosition()

const Amg::Vector3D & MuonR4::SpacePoint::localPosition ( ) const

◆ measuresEta()

bool MuonR4::SpacePoint::measuresEta ( ) const

: Does the space point contain an eta measurement

Definition at line 89 of file MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/src/SpacePoint.cxx.

89 {
91 }
bool m_measEta
Flag indicating that the measurement is an eta measurement.

◆ measuresLoc0()

bool MuonR4::SpacePoint::measuresLoc0 ( ) const

Returns whether the measurement constains the non-bending direction.

Definition at line 60 of file MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/src/SpacePoint.cxx.

60{ return measuresPhi(); }
bool measuresPhi() const
: Does the space point contain a phi measurement

◆ measuresLoc1()

bool MuonR4::SpacePoint::measuresLoc1 ( ) const

Returns whether the measurement constains the bending direction.

Definition at line 61 of file MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/src/SpacePoint.cxx.

61{ return measuresEta(); }
bool measuresEta() const
: Does the space point contain an eta measurement

◆ measuresPhi()

bool MuonR4::SpacePoint::measuresPhi ( ) const

: Does the space point contain a phi measurement

Definition at line 86 of file MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/src/SpacePoint.cxx.

86 {
88 }

◆ msSector()

const MuonGMR4::SpectrometerSector * MuonR4::SpacePoint::msSector ( ) const

Definition at line 80 of file MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/src/SpacePoint.cxx.

80 {
81 return m_primaryMeas->readoutElement()->msSector();
82 }

◆ nEtaInstanceCounts()

unsigned int MuonR4::SpacePoint::nEtaInstanceCounts ( ) const

How many space points have been built in total with the same eta prd.

Definition at line 100 of file MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/src/SpacePoint.cxx.

100{ return (*m_etaInstances); }
std::shared_ptr< const unsigned > m_etaInstances
In how many space points is the eta measurement used.

◆ nPhiInstanceCounts()

unsigned int MuonR4::SpacePoint::nPhiInstanceCounts ( ) const

How many space points have been built in total with the same phi prd.

Definition at line 101 of file MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/src/SpacePoint.cxx.

101{ return (*m_phiInstances); }
std::shared_ptr< const unsigned > m_phiInstances
In how many space points is the phi measurement used.

◆ operator==()

bool MuonR4::SpacePoint::operator== ( const SpacePoint & other) const
inline

: Equality check by checking the prd pointers

Definition at line 99 of file MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/MuonSpacePoint/SpacePoint.h.

99 {
100 return primaryMeasurement() == other.primaryMeasurement() &&
101 secondaryMeasurement() == other.secondaryMeasurement();
102 }

◆ planeNormal()

const Amg::Vector3D & MuonR4::SpacePoint::planeNormal ( ) const

Returns the vector pointing out of the measurement plane.

Definition at line 49 of file MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/src/SpacePoint.cxx.

49{ return m_normal; }
Amg::Vector3D m_normal
Direction vector pointing outside the sensor plane.

◆ primaryMeasurement()

const xAOD::MuonMeasurement * MuonR4::SpacePoint::primaryMeasurement ( ) const

◆ print()

void MuonR4::SpacePoint::print ( std::ostream & ostr) const
private

Definition at line 105 of file MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/src/SpacePoint.cxx.

105 {
106 ostr<<"Uncalibrated SP "<<msSector()->idHelperSvc()->toString(identify());
107 ostr<<" @ "<<Amg::toString(localPosition());
109 ostr<<", wire: "<<Amg::toString(sensorDirection())<<", drift R: "<<driftRadius();
110 } else {
111 ostr<<", (dir/toNext/planeNormal): "<<Amg::toString(sensorDirection())
113 }
114 auto boolToStr = [](const bool B) -> std::string {
115 return B ? "yay" : "nay";
116 };
117 if (hasTime()) {
118 ostr<<", time: "<<time();
119 }
120 ostr<<", measures eta/phi/time: "<<boolToStr(measuresEta())
121 <<"/"<<boolToStr(measuresPhi())<<"/"<<boolToStr(hasTime());
122 ostr<<", covariance (eta/phi/time): ("<<m_measCovariance[Acts::toUnderlying(CovIdx::etaCov)]
123 <<", "<<m_measCovariance[Acts::toUnderlying(CovIdx::phiCov)]
124 <<", "<<m_measCovariance[Acts::toUnderlying(CovIdx::timeCov)]<<")";
125 }
const Muon::IMuonIdHelperSvc * idHelperSvc() const
Returns the IdHelpeSvc.
bool hasTime() const
Returns whether the measurement carries time information.
const Identifier & identify() const
: Identifier of the primary measurement
double time() const
Returns the measurement's recorded time.
const Amg::Vector3D & planeNormal() const
Returns the vector pointing out of the measurement plane.
virtual std::string toString(const Identifier &id) const =0
print all fields to string
std::string toString(const Translation3D &translation, int precision=4)
GeoPrimitvesToStringConverter.

◆ secondaryMeasurement()

const xAOD::MuonMeasurement * MuonR4::SpacePoint::secondaryMeasurement ( ) const

◆ sensorDirection()

const Amg::Vector3D & MuonR4::SpacePoint::sensorDirection ( ) const

◆ setCovariance()

void MuonR4::SpacePoint::setCovariance ( Cov_t && cov)

◆ setDirection()

void MuonR4::SpacePoint::setDirection ( const Amg::Vector3D & sensorDir,
const Amg::Vector3D & toNextSensor )

Setter for the direction of the measurement channel in the sector frame.

Parameters
sensorDirDirection of the sensor
toNextSensorVector pointing to the next sensor inside the plane

Definition at line 63 of file MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/src/SpacePoint.cxx.

64 {
65 m_dir = sensorDir;
67 m_normal = m_dir.cross(m_toNext).unit();
68 }

◆ setInstanceCounts()

void MuonR4::SpacePoint::setInstanceCounts ( std::shared_ptr< unsigned > etaCounts,
std::shared_ptr< unsigned > phiCounts )

Set the number of space points built with the same eta / phi prd.

Definition at line 95 of file MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/src/SpacePoint.cxx.

96 {
97 updateInstanceCounts(m_etaInstances, std::move(etaCounts));
98 updateInstanceCounts(m_phiInstances, std::move(phiCounts));
99 }

◆ setPosition()

void MuonR4::SpacePoint::setPosition ( const Amg::Vector3D & pos)

◆ time()

double MuonR4::SpacePoint::time ( ) const

Returns the measurement's recorded time.

Definition at line 54 of file MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/src/SpacePoint.cxx.

54 {
55 return 0.;
56 }

◆ toNextSensor()

const Amg::Vector3D & MuonR4::SpacePoint::toNextSensor ( ) const

◆ toString()

std::string MuonR4::SpacePoint::toString ( const CovIdx idx)
static

Convert the covariance index to string.

Parameters
idxThe index to be converted

Definition at line 126 of file MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/src/SpacePoint.cxx.

126 {
127 switch (idx){
128 case CovIdx::etaCov: return "etaCov";
129 case CovIdx::phiCov: return "phiCov";
130 case CovIdx::timeCov: return "timeCov";
131 }
132 return "";
133 }

◆ type()

xAOD::UncalibMeasType MuonR4::SpacePoint::type ( ) const

Definition at line 83 of file MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/src/SpacePoint.cxx.

83 {
84 return m_primaryMeas->type();
85 }

◆ operator<< [1/2]

std::ostream & operator<< ( std::ostream & ostr,
const CovIdx idx )
friend

The ostream opeator.

Definition at line 40 of file MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/MuonSpacePoint/SpacePoint.h.

40 {
41 return (ostr<<toString(idx));
42 }
static std::string toString(const CovIdx idx)
Convert the covariance index to string.

◆ operator<< [2/2]

std::ostream & operator<< ( std::ostream & ostr,
const SpacePoint & sp )
friend

The print-out operator.

Definition at line 113 of file MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/MuonSpacePoint/SpacePoint.h.

113 {
114 sp.print(ostr);
115 return ostr;
116 }
static Double_t sp

Member Data Documentation

◆ m_dir

Amg::Vector3D MuonR4::SpacePoint::m_dir {Amg::Vector3D::Zero()}
private

Local sensor direction.

Definition at line 126 of file MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/MuonSpacePoint/SpacePoint.h.

126{Amg::Vector3D::Zero()};

◆ m_etaInstances

std::shared_ptr<const unsigned> MuonR4::SpacePoint::m_etaInstances {std::make_shared<unsigned>(1)}
private

In how many space points is the eta measurement used.

Definition at line 137 of file MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/MuonSpacePoint/SpacePoint.h.

137{std::make_shared<unsigned>(1)};

◆ m_measCovariance

Cov_t MuonR4::SpacePoint::m_measCovariance {Acts::filledArray<double, 3>(0.)}
private

Measurement covariance.

The first index represents the uncertainty in the phi-direction, the second the uncerainty in the precision direction and the last component is the time covariance. By convention a pure 1D measurement has the strip half-length filled in the complementary component

Definition at line 135 of file MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/MuonSpacePoint/SpacePoint.h.

135{Acts::filledArray<double, 3>(0.)};

◆ m_measEta

bool MuonR4::SpacePoint::m_measEta {!m_primaryMeas->measuresPhi() || isStraw()}
private

Flag indicating that the measurement is an eta measurement.

Definition at line 122 of file MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/MuonSpacePoint/SpacePoint.h.

122{!m_primaryMeas->measuresPhi() || isStraw()};
bool isStraw() const
Returns whether the measurement is a Mdt.

◆ m_normal

Amg::Vector3D MuonR4::SpacePoint::m_normal {Amg::Vector3D::Zero()}
private

Direction vector pointing outside the sensor plane.

Definition at line 130 of file MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/MuonSpacePoint/SpacePoint.h.

130{Amg::Vector3D::Zero()};

◆ m_phiInstances

std::shared_ptr<const unsigned> MuonR4::SpacePoint::m_phiInstances {std::make_shared<unsigned>(1)}
private

In how many space points is the phi measurement used.

Definition at line 139 of file MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/MuonSpacePoint/SpacePoint.h.

139{std::make_shared<unsigned>(1)};

◆ m_pos

Amg::Vector3D MuonR4::SpacePoint::m_pos {Amg::Vector3D::Zero()}
private

Local position inside the msSector.

Definition at line 124 of file MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/MuonSpacePoint/SpacePoint.h.

124{Amg::Vector3D::Zero()};

◆ m_primaryMeas

const xAOD::MuonMeasurement* MuonR4::SpacePoint::m_primaryMeas {nullptr}
private

◆ m_secondaryMeas

const xAOD::MuonMeasurement* MuonR4::SpacePoint::m_secondaryMeas {nullptr}
private

◆ m_toNext

Amg::Vector3D MuonR4::SpacePoint::m_toNext {Amg::Vector3D::Zero()}
private

Direction to the next sensor.

Definition at line 128 of file MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/MuonSpacePoint/SpacePoint.h.

128{Amg::Vector3D::Zero()};

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