Loading [MathJax]/jax/output/SVG/config.js
 |
ATLAS Offline Software
|
Go to the documentation of this file.
6 #include "GaudiKernel/PhysicalConstants.h"
19 #include <GeoModelKernel/throwExcept.h>
22 ostr<<
"adc: "<<
input.adc()<<
", ";
23 ostr<<
"tdc: "<<
input.tdc()<<
", ";
26 ostr<<
"prop distance: "<<
input.signalPropagationDistance()<<
", ";
27 ostr<<
"ToF: "<<
input.timeOfFlight()<<
", ";
28 ostr<<
"trigger time: "<<
input.triggerTime();
42 m_hash{std::get<const MuonGMR4::MdtReadoutElement*>(m_RE)->measurementHash(m_id)} {}
71 m_RE{prd.readoutElement()},
72 m_hash{prd.measurementHash()},
73 m_approach{localToGlobal()* prd.localCirclePosition()} {}
78 m_adc{
static_cast<int16_t>(prd.adc())},
79 m_tdc{
static_cast<int16_t>(prd.tdc())},
80 m_RE{prd.detectorElement()},
81 m_approach{prd.globalPosition()} {
89 using REType = std::decay_t<decltype(
re)>;
90 if constexpr( std::is_same_v<REType, const MuonGM::MdtReadoutElement*>){
98 using REType = std::decay_t<decltype(
re)>;
99 if constexpr( std::is_same_v<REType, const MuonGMR4::MdtReadoutElement*>){
132 const double perpendComp = locTrkDir.block<2,1>(0,0).
dot(locBField.block<2,1>(0,0))
134 const double paralelComp = locBField.z();
140 assert(
re !=
nullptr);
144 const double propDist = std::visit([
this](
const auto&
re) ->
double {
145 using REType = std::decay_t<decltype(
re)>;
146 if constexpr(std::is_same_v<REType, const MuonGMR4::MdtReadoutElement*>){
147 assert(
m_gctx !=
nullptr);
149 }
else if (std::is_same_v<REType, const MuonGM::MdtReadoutElement*>) {
159 const double tubeLength = std::visit([
this](
const auto&
re) ->
double{
160 using REType = std::decay_t<decltype(
re)>;
161 if constexpr(std::is_same_v<REType, const MuonGMR4::MdtReadoutElement*>){
163 }
else if (std::is_same_v<REType, const MuonGM::MdtReadoutElement*>) {
171 const double roSide = std::visit([
this](
const auto&
re) ->
double{
172 using REType = std::decay_t<decltype(
re)>;
173 if constexpr(std::is_same_v<REType, const MuonGMR4::MdtReadoutElement*>){
174 return re->getParameters().readoutSide;
175 }
else if (std::is_same_v<REType, const MuonGM::MdtReadoutElement*>) {
176 return re->tubeFrame_localROPos(
identify()).z() > 0. ? 1. : -1.;
183 using REType = std::decay_t<decltype(
re)>;
184 if constexpr(std::is_same_v<REType, const MuonGMR4::MdtReadoutElement*>){
185 assert(
m_gctx !=
nullptr);
187 }
else if (std::is_same_v<REType, const MuonGM::MdtReadoutElement*>) {
const Identifier & identify(const UncalibratedMeasurement *meas)
Returns the associated identifier from the muon measurement.
Eigen::Matrix< double, 2, 1 > Vector2D
const Identifier & identify() const
: Returns the Athena identifier of the drift circle.
const Amg::Vector3D & center() const
Returns the center position of the Surface.
setScaleOne setStatusOne setSaturated int16_t
std::string toString(const Translation3D &translation, int precision=4)
GeoPrimitvesToStringConverter.
Eigen::Affine3d Transform3D
def dot(G, fn, nodesToHighlight=[])
Include the GeoPrimitives which need to be put first.
Identifier identify() const
return the identifier
Class to represent measurements from the Monitored Drift Tubes.
Eigen::Matrix< double, 3, 1 > Vector3D
The MuonDetectorManager stores the transient representation of the Muon Spectrometer geometry and pro...
const boost::regex re(r_e)
virtual const Trk::Surface & surface() const override final
Return surface associated with this detector element.
https://gitlab.cern.ch/atlas/athena/-/blob/master/MuonSpectrometer/MuonReconstruction/MuonRecEvent/Mu...