6#include "GaudiKernel/PhysicalConstants.h"
19#include <GeoModelKernel/throwExcept.h>
22 ostr<<
"adc: "<<input.adc()<<
", ";
23 ostr<<
"tdc: "<<input.tdc()<<
", ";
24 ostr<<
"closest approach: "<<
Amg::toString(input.closestApproach(), 2)<<
", ";
25 ostr<<
"global direction: "<<
Amg::toString(input.trackDirection(), 2)<<
", ";
26 ostr<<
"prop distance: "<<input.signalPropagationDistance()<<
", ";
27 ostr<<
"ToF: "<<input.timeOfFlight()<<
", ";
28 ostr<<
"trigger time: "<<input.triggerTime();
48 detMgr.getMdtReadoutElement(digit.
identify()), gctx){}
62 detMgr.getMdtReadoutElement(digit.
identify())) {}
71 m_RE{prd.readoutElement()},
72 m_hash{prd.measurementHash()},
78 m_adc{static_cast<int16_t>(prd.
adc())},
79 m_tdc{static_cast<int16_t>(prd.
tdc())},
80 m_RE{prd.detectorElement()},
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*>) {
170 const double tubeR = std::visit([](
const auto&
re) ->
double {
171 using REType = std::decay_t<
decltype(
re)>;
172 if constexpr(std::is_same_v<REType, const MuonGMR4::MdtReadoutElement*>){
173 return re->innerTubeRadius();
174 }
else if (std::is_same_v<REType, const MuonGM::MdtReadoutElement*>) {
175 return re->innerTubeRadius();
182 const double roSide = std::visit([
this](
const auto&
re) ->
double{
183 using REType = std::decay_t<
decltype(
re)>;
184 if constexpr(std::is_same_v<REType, const MuonGMR4::MdtReadoutElement*>){
185 return re->getParameters().readoutSide;
186 }
else if (std::is_same_v<REType, const MuonGM::MdtReadoutElement*>) {
187 return re->tubeFrame_localROPos(
identify()).z() > 0. ? 1. : -1.;
194 using REType = std::decay_t<
decltype(
re)>;
195 if constexpr(std::is_same_v<REType, const MuonGMR4::MdtReadoutElement*>){
196 assert(
m_gctx !=
nullptr);
198 }
else if (std::is_same_v<REType, const MuonGM::MdtReadoutElement*>) {
const boost::regex re(r_e)
virtual const Trk::Surface & surface() const override final
Return surface associated with this detector element.
The MuonDetectorManager stores the transient representation of the Muon Spectrometer geometry and pro...
Class to represent measurements from the Monitored Drift Tubes.
Class for a StraightLineSurface in the ATLAS detector to describe dirft tube and straw like detectors...
const Amg::Vector3D & center() const
Returns the center position of the Surface.
T * get(TKey *tobj)
get a TObject* from a TKey* (why can't a TObject be a TKey?)
std::string toString(const Translation3D &translation, int precision=4)
GeoPrimitvesToStringConverter.
Eigen::Affine3d Transform3D
Eigen::Matrix< double, 2, 1 > Vector2D
Eigen::Matrix< double, 3, 1 > Vector3D
The ReadoutGeomCnvAlg converts the Run4 Readout geometry build from the GeoModelXML into the legacy M...
MdtDriftCircle_v1 MdtDriftCircle