Loading [MathJax]/jax/output/SVG/config.js
 |
ATLAS Offline Software
|
Go to the documentation of this file.
7 #include <GaudiKernel/IMessageSvc.h>
24 #define THROW_EXCEPT(MESSAGE) \
26 std::stringstream except_sstr{}; \
27 except_sstr<<__FILE__<<":"<<__LINE__<<" ("; \
28 except_sstr<<idHelperSvc()->toString(identify())<<") "; \
29 except_sstr<<MESSAGE; \
30 throw std::runtime_error(except_sstr.str()); \
50 return m_gasPlaneZ[gg - 1] * Amg::Vector3D::UnitX();
101 constexpr std::array<double, 4> nDivInChamberPhi{29.5, 29.5, 29.5, 31.5};
108 dphi = 360. *
CLHEP::degree / 36. / nDivInChamberPhi[iStation - 1];
185 if (1 < strip && strip < 32) {
189 return std::max(stripNextCen - stripCurrCen , stripCurrCen - stripPrevCen);
190 }
else if (strip == 1) {
192 }
else if (strip == 32) {
203 double z = localPos.z();
214 double x = localPos.x();
215 double z = localPos.z();
249 for (
int gp = 1; gp <=
nGasGaps(); ++gp) {
251 for (
bool isStrip : {
false,
true}) {
257 surfaceTRotation.col(0) = muonTRotation.col(1);
258 surfaceTRotation.col(1) = muonTRotation.col(2);
259 surfaceTRotation.col(2) = muonTRotation.col(0);
263 trans.pretranslate(trans3D.translation());
264 m_surfaceData->m_layerTransforms.push_back(std::move(trans));
265 m_surfaceData->m_layerSurfaces.emplace_back(std::make_unique<Trk::PlaneSurface>(*
this,
id));
277 m_surfaceData->m_surfBounds.emplace_back(std::make_unique<Trk::RotatedTrapezoidBounds>(
getRsize() / 2.,
284 if (gasGap < 1 || gasGap >
nGasGaps())
return false;
299 THROW_EXCEPT(
"distanceToReadout() -- method not implemented");
303 THROW_EXCEPT(
"stripNumber() -- method not implemented");
329 Amg::intersect<3>(lEtaHitPos, Amg::Vector3D::UnitX(), lPhiHitPos, phiHitDir).value_or(0) * phiHitDir;
double physicalDistanceFromBase() const
double stripPosOnShortBase(int strip) const
std::string m_readout_name
virtual const Amg::Transform3D & transform() const override
Return local to global transform.
const TgcIdHelper & m_idHelper
Ensure that the Athena extensions are properly loaded.
virtual double distanceToReadout(const Amg::Vector2D &pos, const Identifier &id) const override
distance to readout.
Amg::Vector3D localStripDir(int gasGap, int strip) const
Returns the local strip direction of a strip.
const Amg::Transform3D & absTransform() const
double chamberWidth(double z) const
virtual bool spacePointPosition(const Identifier &phiId, const Identifier &etaId, Amg::Vector2D &pos) const override
space point position for a given pair of phi and eta identifiers The LocalPosition is expressed in th...
int gasGap(const Identifier &id) const override
get the hashes
double stripHighEdgeLocX(int gasGap, int strip, double radialPos) const
Returns the local X of the right edge of the strip at a given local radial position.
virtual int stripNumber(const Amg::Vector2D &pos, const Identifier &id) const override final
strip number corresponding to local position.
Eigen::Matrix< double, 2, 1 > Vector2D
double stripDeltaPhi() const
double stripCenterLocX(int gasGap, int strip, double radialPos) const
Returns the local X of the strip center at a given local radial position.
bool validGap(int gasGap) const
Returns whether the gasGap is within the allowed range [1-nGasGaps()].
double wireGangBottomX(int gasGap, int gangNum) const
Returns the local X of the bottom wire in the wireGang i in gasGap j.
int findGang(int gasGap, const Amg::Vector3D &extPos) const
Returns the gang number that's closest to the given external position.
double m_stripSlope
Cache of the function call 1.
#define ATH_MSG_VERBOSE(x)
bool isValid(const T &p)
Av: we implement here an ATLAS-sepcific convention: all particles which are 99xxxxx are fine.
double getLongSsize() const
virtual bool stripPosition(const Identifier &id, Amg::Vector2D &pos) const override
strip position If the strip number is outside the range of valid strips, the function will return fal...
virtual const Trk::PlaneSurface & surface() const override
access to chamber surface (phi orientation), uses the first gas gap
double stripLowEdgeLocX(int gasGap, int strip, double radialPos) const
Returns the local X of the left edge of the strip at a given local radial position.
int nGasGaps() const
Returns the number of gas gaps associated with the readout element (2 or 3)
Amg::Vector3D channelPos(const Identifier &id) const
Returns the position of the active channel (wireGang or strip)
Amg::Transform3D getRotateZ3D(double angle)
get a rotation transformation around Z-axis
int channel(const Identifier &id) const override
const Muon::IMuonIdHelperSvc * idHelperSvc() const
std::unique_ptr< SurfaceData > m_surfaceData
void setPlaneZ(double value, int gasGap)
Set the local Z coordinate of the i-th gasGap [1-3].
double wireGangTopX(int gasGap, int gangNum) const
Returns the local X of the top wire in the wireGang i in gasGap j.
#define THROW_EXCEPT(MESSAGE)
std::pair< double, int > stripNumberToFetch(int gasGap, int inStrip) const
Returns whether a strip needs to be flipped and the final strip number parsed to the TgcReadoutParams...
std::string toString(const Translation3D &translation, int precision=4)
GeoPrimitvesToStringConverter.
double gangLongWidth(int gasGap, int gang) const
Returns the length of the most top wire in the gang.
virtual bool containsId(const Identifier &id) const override
double stripWidth(int gasGap, int strip) const
Returns the width of a given strip in the gasGap i.
std::array< double, s_maxGasGap > m_gasPlaneZ
CalibratedSpacePoint::Covariance_t inverse(const CalibratedSpacePoint::Covariance_t &mat)
Inverts the parsed matrix.
Amg::Vector3D localGasGapPos(int gg) const
Returns the local position of the gasGap in the AMDB coordinate system.
double frameXwidth() const
double gangShortWidth(int gasGap, int gang) const
Returns the length of the most bottom wire in the gang.
int nWires(int gasGap) const
Returns the total number of wires in a given gas gap.
bool validStrip(int gasGap, int strip) const
Returns whether the strip in the given gasgap is within the allowed range
Eigen::Affine3d Transform3D
double gangRadialLength(int gasGap, int gang) const
Returns the length of the wire gang along the radial direction [pitch x N_{wire}^{gang}].
Amg::Vector3D localSpacePoint(const Identifier &stripId, const Amg::Vector3D &etaHitPos, const Amg::Vector3D &phiHitPos) const
double gangCentralWidth(int gasGap, int gang) const
Returns the length of the central wire in the gang.
int nStrips(int gasGap) const
Returns the number of strips in a given gas gap.
int isStrip(const Identifier &id) const
isStrip corresponds to measuresPhi
bool validGang(int gasGap, int wireGang) const
Returns whether the wire gang in the given gasgap is within the allowed range.
int nWireGangs(int gasGap) const
Returns the number of wire gangs (Random grouping of wires) in a given gas gap.
void setStationName(const std::string &)
GeoModel::TransientConstSharedPtr< TgcReadoutParams > m_readoutParams
Ensure that the ATLAS eigen extensions are properly loaded.
double stripLongWidth(int, int) const
double wireGangLocalX(const int gasGap, const int gangNum) const
Returns the local X of the wire gang in gasGap i
double frameZwidth() const
TgcReadoutElement(GeoVFullPhysVol *pv, const std::string &stName, MuonDetectorManager *mgr)
Eigen::Matrix< double, 3, 1 > Vector3D
double wirePitch() const
Returns the pitch of the wires.
void setReadOutName(const std::string &rName)
void setReadOutParams(GeoModel::TransientConstSharedPtr< TgcReadoutParams > pars)
double stripShortWidth(int, int) const
double stripPitch(int gasGap, int strip) const
Returns the pitch of the given strip in gasGap i.
The MuonDetectorManager stores the transient representation of the Muon Spectrometer geometry and pro...
#define ATH_MSG_WARNING(x)
Eigen::Matrix< double, 3, 3 > RotationMatrix3D
std::string getStationType() const
Eigen::Translation< double, 3 > Translation3D
Identifier identify() const override final
Returns the ATLAS Identifier of the MuonReadOutElement.
double stripPosOnLargeBase(int strip) const
int findStrip(int gasGap, const Amg::Vector3D &extPos) const
Returns the strip number that's closest to the given external position.
int atoi(std::string_view str)
Helper functions to unpack numbers decoded in string into integers and doubles The strings are requir...
Identifier channelID(int stationName, int stationEta, int stationPhi, int gasGap, int isStrip, int channel) const
double stripLocalX(const int stripNum, const double locY, const double refPoint) const
Returns the local X given the reference point E.g.
void setFrameThickness(const double frameH, const double frameAB)
virtual void fillCache() override
Polygon globalToLocal(const Polygon &pol, float z, const Trk::PlaneSurface &surf)
int getStationEta() const