ATLAS Offline Software
Loading...
Searching...
No Matches
RadialStripDesign.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4#ifndef MUONREADOUTGEOMETRYR4_RADIALSTRIPDESIGN_H
5#define MUONREADOUTGEOMETRYR4_RADIALSTRIPDESIGN_H
6
8
9namespace 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*/
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
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
113using RadialStripDesignSet = std::set<RadialStripDesignPtr, RadialDesignSorter>;
114
115}
117#endif
static Double_t a
The TransientConstSharedPtr allows non-const access if the pointer itself is non-const but in the con...
Amg::Vector2D stripLeftTop(int stripNumber) const
: Returns the intersection of the left strip edge at the top panel's edge
Amg::Vector2D stripRightTop(int stripNumber) const
: Returns the intersecetion fo the right strip edge at the top panel's edge
void addStrip(const double posOnBottom, const double posOnTop)
: Defines a new radial strip.
Amg::Vector2D stripNormal(int stripNumber) const
@bief: Returns the vector perpendicular to the stripDir and pointing to the next strip
double stripLength(int stripNumb) const override
Returns the length of the associated strip.
Amg::Vector2D stripLeftEdge(int stripNumber) const
: Returns the direction of the left edge
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...
stripEdgeVec::const_iterator stripEdgeVecItr
double stripPitch(int stripNumb) const
Returns the pitch of the radial strip evaluated at the strip center.
Amg::Vector2D stripDir(int stripNumber) const
: Returns the direction of the radial strip (Pointing from the bottom edge to the top edge)
Amg::Vector2D stripRightBottom(int stripNumber) const
: Returns the intersecton of the strip right edge at the bottom panel's edge
Amg::Vector2D stripRightEdge(int stripNumber) const
: Returns the direction of the right edge
CheckVector2D rightInterSect(int stripNum, bool uncapped=false) const override final
std::vector< stripEdges > stripEdgeVec
int numStrips() const override
Returns the number of defined strips.
int stripNumber(const Amg::Vector2D &extPos) const override final
Returns the associated channel number of an external vector.
bool operator<(const RadialStripDesign &other) const
set sorting operator
Amg::Vector2D stripLeftBottom(int stripNumber) const
: Returns the intersection of the left strip edge at the bottom panel's edge
std::optional< Amg::Vector2D > CheckVector2D
Definition StripDesign.h:82
Eigen::Matrix< double, 2, 1 > Vector2D
The ReadoutGeomCnvAlg converts the Run4 Readout geometry build from the GeoModelXML into the legacy M...
std::set< RadialStripDesignPtr, RadialDesignSorter > RadialStripDesignSet
GeoModel::TransientConstSharedPtr< RadialStripDesign > RadialStripDesignPtr
bool operator()(const RadialStripDesignPtr &a, const RadialStripDesignPtr &b) const
bool operator()(const RadialStripDesign &a, const RadialStripDesign &b) const
stripEdges(double dBot, double dTop, const RadialStripDesign &parent_)
Standard constrcutor.