![Logo](../../ATLAS-Logo-Square-Blue-RGB.png) |
ATLAS Offline Software
|
Go to the documentation of this file.
5 #include <GeoModelKernel/GeoTube.h>
6 #include <GeoModelKernel/GeoAccessVolumeAction.h>
8 #include <GeoModelHelpers/TransformSorter.h>
9 #include <GeoModelHelpers/GeoPhysVolSorter.h>
18 if (&
a.layerTransform() != &
b.layerTransform()) {
19 static const GeoTrf::TransformSorter trfSort{};
20 const int trfCmp = trfSort.compare(
a.layerTransform(),
b.layerTransform());
21 if (trfCmp)
return trfCmp < 0;
23 if (
a.m_layerNode !=
b.m_layerNode) {
24 static const GeoPhysVolSorter physSort{};
25 return physSort(
a.m_layerNode,
b.m_layerNode);
30 return (*
this)(*
a, *
b);
35 const GeoIntrusivePtr<const GeoTransform> toLayTrf):
36 m_layerNode{std::move(
layer)},
37 m_layTrf{std::move(toLayTrf)} {}
48 GeoGetChild (
size_t n) :
m_n (
n) {}
49 virtual void operator() (GeoNodeAction&
action,
52 const GeoVPhysVol* volume)
override
69 std::stringstream except{};
70 except<<__FILE__<<
":"<<__LINE__<<
" "<<
m_layerNode->getLogVol()->getName()<<
" has only "<<
nTubes()<<
" tubes. But "<<
tube<<
" is requested. Please check.";
71 throw std::out_of_range(except.str());
85 std::stringstream except{};
86 except<<__FILE__<<
":"<<__LINE__<<
" "<<
m_layerNode->getLogVol()->getName()<<
" has only "<<
nTubes()<<
" tubes. But "<<
tube<<
" is requested. Please check.";
87 throw std::out_of_range(except.str());
89 GeoAccessVolumeAction volAcc{
tube,
nullptr};
104 const GeoShape* shape = child->getLogVol()->getShape();
105 const GeoTube* tubeShape =
static_cast<const GeoTube*
>(shape);
106 return tubeShape->getZHalfLength();
The TransientConstSharedPtr allows non-const access if the pointer itself is non-const but in the con...
const Amg::Transform3D & layerTransform() const
: Returns the transformation from the layer to the muon station
Helper struct to retrieve the tube lengths and the tube centers directly from the GeoModel tree.
MdtTubeLayer(const PVConstLink layer, const GeoIntrusivePtr< const GeoTransform > toLayTrf)
Standard constructor of a MdtTube layer.
Visitor to process all volumes under a GeoModel node.
A muon chamber is a collection of readout elements belonging to the same station.
Eigen::Affine3d Transform3D
PVConstLink getTubeNode(unsigned int tube) const
returns the PVConst link to the n-th tube [0 - nTubes() -1]
bool operator()(const MdtTubeLayer &a, const MdtTubeLayer &b) const
unsigned int nTubes() const
Returns the number of tubes in the layer.
double tubeHalfLength(const unsigned int tube) const
Returns the half-length of the given tube.
Eigen::Matrix< double, 3, 1 > Vector3D
const Amg::Transform3D tubeTransform(const unsigned int tube) const
Returns the transformation of the tube to the muon station Index counting [0 - nTubes()-1].
GeoVolumeCursor tubeCursor() const
Return a cursor object over the tubes in the layer.
Visitor to process all volumes under a GeoModel node.
GeoIntrusivePtr< const GeoTransform > m_layTrf
const Amg::Vector3D tubePosInLayer(const unsigned int tube) const
Returns the tube position within the given tube layer.
const GeoVPhysVol * m_node