|
ATLAS Offline Software
|
Go to the documentation of this file.
10 #ifndef MUONREADOUTGEOMETRY_MUONPADDESIGN_H
11 #define MUONREADOUTGEOMETRY_MUONPADDESIGN_H
18 #include "CLHEP/Units/SystemOfUnits.h"
73 int channelId(
const std::pair<int, int>& padId)
const;
113 return std::make_pair( ((
channel -1) % 18) + 1, ( (
channel -1) / 18) + 1);
116 return 1 + (padId.first - 1) + (padId.second - 1 ) * 18;
122 std::pair<int, int> pad{};
132 if (!measPhi)
return (
pos.y() - chPos.y());
136 return (
pos.x() - chPos.x());
146 if (!measPhi)
return corners.at(2)[1] - corners.at(0)[1];
153 if (!preciseMeas)
return corners.at(3)[0] - corners.at(2)[0];
161 double WidthTop = corners.at(3)[0] - corners.at(2)[0];
162 double WidthBot = corners.at(1)[0] - corners.at(0)[0];
163 return WidthBot + (WidthTop - WidthBot) * (
pos.y() - corners.at(0)[1]) / (corners.at(2)[1]-corners.at(0)[1]);
169 #endif // MUONREADOUTGEOMETRY_MUONPADDESIGN_H
std::pair< int, int > channelNumber(const Amg::Vector2D &pos) const
calculate local channel number, range 1=nstrips like identifiers.
Ensure that the Athena extensions are properly loaded.
std::array< Amg::Vector2D, 4 > CornerArray
calculate local channel corners for a given channel number
bool channelPosition(const std::pair< int, int > &pad, Amg::Vector2D &pos) const
calculate local channel position for a given channel number
Eigen::Matrix< double, 2, 1 > Vector2D
double maxAbsSensitiveX(const double &y) const
largest (abs, local) x of the sensitive volume
MuonGM::MuonPadDesign::CornerArray CornerArray
double minSensitiveY() const
lowest y (local) of the sensitive volume
double radialDistance
DT-2015-11-29 distance from the beamline to the center of the module.
static constexpr double largeSectorOpeningAngle
int channelId(const std::pair< int, int > &padId) const
double maxSensitiveY() const
highest y (local) of the sensitive volume
void setR(double R)
access to cache
double gasGapThickness() const
thickness of gas gap
Class to provide easy MsgStream access and capabilities.
double channelWidth(const Amg::Vector2D &pos, bool measPhi, bool preciseMeas=false) const
calculate local channel width
bool channelCorners(const std::pair< int, int > &pad, CornerArray &corners) const
double distanceToChannel(const Amg::Vector2D &pos, bool measPhi, int channel=0) const
distance to channel - residual
double sectorOpeningAngle
bool withinSensitiveArea(const Amg::Vector2D &pos) const
whether pos is within the sensitive area of the module
static constexpr double smallSectorOpeningAngle
Amg::Vector2D distanceToPad(const Amg::Vector2D &pos, int channel) const
std::pair< int, int > etaPhiId(const int channel) const