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::UncalibratedMeasurement *primMeas, const xAOD::UncalibratedMeasurement *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::UncalibratedMeasurementprimaryMeasurement () const
const xAOD::UncalibratedMeasurementsecondaryMeasurement () 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.

Private Member Functions

void print (std::ostream &ostr) const

Private Attributes

const xAOD::UncalibratedMeasurementm_primaryMeas {nullptr}
const xAOD::UncalibratedMeasurementm_secondaryMeas {nullptr}
const MuonGMR4::Chamberm_chamber {xAOD::muonReadoutElement(m_primaryMeas)->chamber()}
const MuonGMR4::SpectrometerSectorm_msSector {m_chamber->parent()}
bool m_measEta {!m_msSector->idHelperSvc()->measuresPhi(identify())}
 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 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 24 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 27 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 29 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 30 of file MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/MuonSpacePoint/SpacePoint.h.

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

Constructor & Destructor Documentation

◆ SpacePoint()

SpacePoint::SpacePoint ( const xAOD::UncalibratedMeasurement * primMeas,
const xAOD::UncalibratedMeasurement * 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

Temporary hack to activate the measures phi flag for micromegas

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

33 :
34 m_primaryMeas{primMeas},
35 m_secondaryMeas{secondMeas} {
39 if (primMeas->numDimensions() == 2) {
41 }
43 if (primMeas->type() == xAOD::UncalibMeasType::MMClusterType) {
44 const auto* clust = static_cast<const xAOD::MMCluster*>(primMeas);
45 if (clust->readoutElement()->stripLayer(clust->layerHash()).design().hasStereoAngle()) {
47 }
48 }
49 }
virtual unsigned int numDimensions() const =0
Returns the number of dimensions of the measurement.
virtual xAOD::UncalibMeasType type() const =0
Returns the type of the measurement type as a simple enumeration.
MMCluster_v1 MMCluster

Member Function Documentation

◆ chamber()

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

: Pointer to the associated chamber

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

◆ covariance()

const Cov_t & SpacePoint::covariance ( ) const

◆ dimension()

unsigned int SpacePoint::dimension ( ) const

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

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

107 {
108 return (secondaryMeasurement() != nullptr) + 1;
109 }
const xAOD::UncalibratedMeasurement * secondaryMeasurement() const

◆ driftRadius()

double SpacePoint::driftRadius ( ) const

: Returns the size of the drift radius

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

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

◆ hasTime()

bool SpacePoint::hasTime ( ) const

Returns whether the measurement carries time information.

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

63{ return false; }

◆ identify()

const Identifier & SpacePoint::identify ( ) const

: Identifier of the primary measurement

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

97 {
99 }
const Identifier & identify(const UncalibratedMeasurement *meas)
Returns the associated identifier from the muon measurement.

◆ isStraw()

bool SpacePoint::isStraw ( ) const

Returns whether the measurement is a Mdt.

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

◆ localPosition()

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

◆ measuresEta()

bool SpacePoint::measuresEta ( ) const

: Does the space point contain an eta measurement

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

94 {
96 }
bool m_measEta
Flag indicating that the measurement is an eta measurement.

◆ measuresLoc0()

bool SpacePoint::measuresLoc0 ( ) const

Returns whether the measurement constains the non-bending direction.

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

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

◆ measuresLoc1()

bool SpacePoint::measuresLoc1 ( ) const

Returns whether the measurement constains the bending direction.

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

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

◆ measuresPhi()

bool SpacePoint::measuresPhi ( ) const

: Does the space point contain a phi measurement

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

91 {
93 }

◆ msSector()

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

◆ nEtaInstanceCounts()

unsigned int SpacePoint::nEtaInstanceCounts ( ) const

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

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

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

◆ nPhiInstanceCounts()

unsigned int SpacePoint::nPhiInstanceCounts ( ) const

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

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

106{ 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 93 of file MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/MuonSpacePoint/SpacePoint.h.

93 {
94 return primaryMeasurement() == other.primaryMeasurement() &&
95 secondaryMeasurement() == other.secondaryMeasurement();
96 }
const xAOD::UncalibratedMeasurement * primaryMeasurement() const

◆ planeNormal()

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

Returns the vector pointing out of the measurement plane.

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

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

◆ primaryMeasurement()

const xAOD::UncalibratedMeasurement * SpacePoint::primaryMeasurement ( ) const

◆ print()

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

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

110 {
111
112 ostr<<"Uncalibrated SP "<<msSector()->idHelperSvc()->toString(identify());
113 ostr<<" @ "<<Amg::toString(localPosition());
115 ostr<<", wire: "<<Amg::toString(sensorDirection())<<", drift R: "<<driftRadius();
116 } else {
117 ostr<<", (dir/toNext/planeNormal): "<<Amg::toString(sensorDirection())
119 }
120 auto boolToStr = [](const bool B) -> std::string {
121 return B ? "yay" : "nay";
122 };
123 if (hasTime()) {
124 ostr<<", time: "<<time();
125 }
126 ostr<<", measures eta/phi/time: "<<boolToStr(measuresEta())
127 <<"/"<<boolToStr(measuresPhi())<<"/"<<boolToStr(hasTime());
128 ostr<<", covariance (eta/phi/time): ("<<m_measCovariance[Acts::toUnderlying(CovIdx::etaCov)]
129 <<", "<<m_measCovariance[Acts::toUnderlying(CovIdx::phiCov)]
130 <<", "<<m_measCovariance[Acts::toUnderlying(CovIdx::timeCov)]<<")";
131 }
const Muon::IMuonIdHelperSvc * idHelperSvc() const
Returns the IdHelpeSvc.
bool hasTime() const
Returns whether the measurement carries time information.
const Amg::Vector3D & planeNormal() const
Returns the vector pointing out of the measurement plane.
const Identifier & identify() const
: Identifier of the primary measurement
double time() const
Returns the measurement's recorded time.
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::UncalibratedMeasurement * SpacePoint::secondaryMeasurement ( ) const

◆ sensorDirection()

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

◆ setCovariance()

void SpacePoint::setCovariance ( Cov_t && cov)

◆ setDirection()

void 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 67 of file MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/src/SpacePoint.cxx.

68 {
69 m_dir = sensorDir;
71 m_normal = m_dir.cross(m_toNext).unit();
72 }

◆ setInstanceCounts()

void 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 100 of file MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/src/SpacePoint.cxx.

101 {
102 updateInstanceCounts(m_etaInstances, std::move(etaCounts));
103 updateInstanceCounts(m_phiInstances, std::move(phiCounts));
104 }

◆ setPosition()

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

◆ time()

double SpacePoint::time ( ) const

Returns the measurement's recorded time.

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

58 {
59 return 0.;
60 }

◆ toNextSensor()

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

◆ type()

xAOD::UncalibMeasType SpacePoint::type ( ) const

◆ operator<<

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

The print-out operator.

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

107 {
108 sp.print(ostr);
109 return ostr;
110 }
static Double_t sp

Member Data Documentation

◆ m_chamber

const MuonGMR4::Chamber* MuonR4::SpacePoint::m_chamber {xAOD::muonReadoutElement(m_primaryMeas)->chamber()}
private

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

const Chamber * chamber() const
Returns the pointer to the chamber enclosing this readout element.
const MuonGMR4::MuonReadoutElement * muonReadoutElement(const UncalibratedMeasurement *meas)
Returns the associated readout element to the measurement.

◆ m_dir

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

Local sensor direction.

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

123{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 134 of file MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/MuonSpacePoint/SpacePoint.h.

134{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 132 of file MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/MuonSpacePoint/SpacePoint.h.

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

◆ m_measEta

bool MuonR4::SpacePoint::m_measEta {!m_msSector->idHelperSvc()->measuresPhi(identify())}
private

Flag indicating that the measurement is an eta measurement.

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

119{!m_msSector->idHelperSvc()->measuresPhi(identify())};

◆ m_msSector

const MuonGMR4::SpectrometerSector* MuonR4::SpacePoint::m_msSector {m_chamber->parent()}
private

◆ m_normal

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

Direction vector pointing outside the sensor plane.

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

127{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 136 of file MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/MuonSpacePoint/SpacePoint.h.

136{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 121 of file MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/MuonSpacePoint/SpacePoint.h.

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

◆ m_primaryMeas

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

◆ m_secondaryMeas

const xAOD::UncalibratedMeasurement* 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 125 of file MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/MuonSpacePoint/SpacePoint.h.

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

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