ATLAS Offline Software
RadialStripDesign.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 #ifndef MUONREADOUTGEOMETRYR4_RADIALSTRIPDESIGN_H
5 #define MUONREADOUTGEOMETRYR4_RADIALSTRIPDESIGN_H
6 
8 
9 namespace MuonGMR4{
10 
11 /* The phi readout channels of the Tgc chambers are an essamble of wires that are readout
12  * together. The wires are equi-distant, but not every wire group in a gas gap contains the
13  * same number of wires. Hence, the channel width & pitch vary across the board. The wire group
14  * design accounts for this detector design feature. It inherits from the StripDesign class and
15  * overloads the stripPosition feature to place the measurement onto the middle wire of each group.
16  * Nevertheless, it's important to know about the position and the lenghts of each wire seperately
17  * as these quantities are fed into the digitization. Therefore, extra methods are added to the design
18  * to provide this information as well.
19 */
20 class RadialStripDesign;
22 
24  public:
25  RadialStripDesign() = default;
27  bool operator<(const RadialStripDesign& other) const;
28 
33  void addStrip(const double posOnBottom,
34  const double posOnTop);
35 
54 
56  int numStrips() const override;
58  int stripNumber(const Amg::Vector2D& extPos) const override final;
60  double stripLength(int stripNumb) const override;
62  double stripPitch(int stripNumb) const;
63  private:
64  CheckVector2D leftInterSect(int stripNum, bool uncapped = false) const override final;
65  CheckVector2D rightInterSect(int stripNum, bool uncapped = false) const override final;
70  struct stripEdges{
77  stripEdges(double dBot, double dTop,
78  const RadialStripDesign& _parent):
79  parent{_parent},
80  distOnBottom{dBot},
81  distOnTop{dTop} {}
82 
83  /* Returns the bottom mounting point */
85  /* Returns the top mounting point */
87  /* Returns the center point between bottom & top*/
89  /* Returns the connecting vector from bottom top */
91 
93  double distOnBottom{0.};
94  double distOnTop{0.};
95  };
96  using stripEdgeVec = std::vector<stripEdges>;
97  using stripEdgeVecItr = stripEdgeVec::const_iterator;
99 
100  bool m_reversedStripOrder{false};
101 
102 };
103 
106  return (*a) < (*b);
107  }
108  bool operator()(const RadialStripDesign&a ,const RadialStripDesign& b) const {
109  return a < b;
110  }
111 };
112 
113 using RadialStripDesignSet = std::set<RadialStripDesignPtr, RadialDesignSorter>;
114 
115 }
117 #endif
MuonGMR4::RadialStripDesign::leftInterSect
CheckVector2D leftInterSect(int stripNum, bool uncapped=false) const override final
Returns the intersection of a given strip with the left or right edge of the trapezoid If uncapped is...
MuonGMR4::RadialStripDesign::stripEdges::topMounting
Amg::Vector2D topMounting() const
GeoModel::TransientConstSharedPtr
The TransientConstSharedPtr allows non-const access if the pointer itself is non-const but in the con...
Definition: TransientConstSharedPtr.h:13
MuonGMR4::StripDesign
Definition: StripDesign.h:30
MuonGMR4::RadialStripDesign::stripLeftTop
Amg::Vector2D stripLeftTop(int stripNumber) const
: Returns the intersection of the left strip edge at the top panel's edge
RadialStripDesign.icc
MuonGMR4::RadialStripDesign::stripRightEdge
Amg::Vector2D stripRightEdge(int stripNumber) const
: Returns the direction of the right edge
MuonGMR4::RadialStripDesign::stripNumber
int stripNumber(const Amg::Vector2D &extPos) const override final
Returns the associated channel number of an external vector.
MuonGMR4::RadialStripDesign::stripLength
double stripLength(int stripNumb) const override
Returns the length of the associated strip.
Amg::Vector2D
Eigen::Matrix< double, 2, 1 > Vector2D
Definition: GeoPrimitives.h:48
MuonGMR4::RadialStripDesign::stripEdges::bottomMounting
Amg::Vector2D bottomMounting() const
MuonGMR4::RadialStripDesign::stripEdges::stripEdges
stripEdges(double dBot, double dTop, const RadialStripDesign &_parent)
Standard constrcutor.
Definition: RadialStripDesign.h:77
MuonGMR4::RadialStripDesign::stripLeftEdge
Amg::Vector2D stripLeftEdge(int stripNumber) const
: Returns the direction of the left edge
StripDesign.h
MuonGMR4::RadialStripDesign::stripRightTop
Amg::Vector2D stripRightTop(int stripNumber) const
: Returns the intersecetion fo the right strip edge at the top panel's edge
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:562
MuonGMR4::RadialStripDesign::addStrip
void addStrip(const double posOnBottom, const double posOnTop)
: Defines a new radial strip.
Definition: RadialStripDesign.cxx:20
MuonGMR4::RadialStripDesignSet
std::set< RadialStripDesignPtr, RadialDesignSorter > RadialStripDesignSet
Definition: RadialStripDesign.h:113
MuonGMR4::RadialStripDesign::stripRightBottom
Amg::Vector2D stripRightBottom(int stripNumber) const
: Returns the intersecton of the strip right edge at the bottom panel's edge
MuonGMR4::RadialStripDesign::m_reversedStripOrder
bool m_reversedStripOrder
Definition: RadialStripDesign.h:100
MuonGMR4::RadialStripDesign::operator<
bool operator<(const RadialStripDesign &other) const
set sorting operator
Definition: RadialStripDesign.cxx:6
MuonGMR4::RadialStripDesign::m_strips
stripEdgeVec m_strips
Definition: RadialStripDesign.h:98
MuonGMR4
A muon chamber is a collection of readout elements belonging to the same station.
Definition: ChamberAssembleTool.h:16
MuonGMR4::RadialDesignSorter
Definition: RadialStripDesign.h:104
MuonGMR4::RadialStripDesign::stripNormal
Amg::Vector2D stripNormal(int stripNumber) const
@bief: Returns the vector perpendicular to the stripDir and pointing to the next strip
test_pyathena.parent
parent
Definition: test_pyathena.py:15
MuonGMR4::RadialStripDesign::rightInterSect
CheckVector2D rightInterSect(int stripNum, bool uncapped=false) const override final
MuonGMR4::RadialStripDesign::stripLeftBottom
Amg::Vector2D stripLeftBottom(int stripNumber) const
: Returns the intersection of the left strip edge at the bottom panel's edge
MuonGMR4::RadialStripDesign::stripDir
Amg::Vector2D stripDir(int stripNumber) const
: Returns the direction of the radial strip (Pointing from the bottom edge to the top edge)
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
MuonGMR4::RadialStripDesign::stripEdgeVec
std::vector< stripEdges > stripEdgeVec
Definition: RadialStripDesign.h:96
MuonGMR4::RadialStripDesign::stripEdges::parent
const RadialStripDesign & parent
Definition: RadialStripDesign.h:92
MuonGMR4::RadialStripDesign::numStrips
int numStrips() const override
Returns the number of defined strips.
MuonGMR4::RadialDesignSorter::operator()
bool operator()(const RadialStripDesign &a, const RadialStripDesign &b) const
Definition: RadialStripDesign.h:108
MuonGMR4::RadialStripDesign::stripEdges::fromBottomToTop
Amg::Vector2D fromBottomToTop() const
MuonGMR4::RadialStripDesign::stripPitch
double stripPitch(int stripNumb) const
Returns the pitch of the radial strip evaluated at the strip center.
MuonGMR4::RadialStripDesign::stripEdges::center
Amg::Vector2D center() const
a
TList * a
Definition: liststreamerinfos.cxx:10
InDetDD::other
@ other
Definition: InDetDD_Defs.h:16
MuonGMR4::RadialStripDesign::RadialStripDesign
RadialStripDesign()=default
MuonGMR4::RadialDesignSorter::operator()
bool operator()(const RadialStripDesignPtr &a, const RadialStripDesignPtr &b) const
Definition: RadialStripDesign.h:105
MuonGMR4::RadialStripDesign::stripEdgeVecItr
stripEdgeVec::const_iterator stripEdgeVecItr
Definition: RadialStripDesign.h:97
MuonGMR4::RadialStripDesign
Definition: RadialStripDesign.h:23
MuonGMR4::StripDesign::CheckVector2D
std::optional< Amg::Vector2D > CheckVector2D
Definition: StripDesign.h:82
MuonGMR4::RadialStripDesign::stripEdges
Helper struct to cache the mounting points of the strips with the bottom & top edge of the Tgc panel.
Definition: RadialStripDesign.h:70