 |
ATLAS Offline Software
|
Go to the documentation of this file.
20 m_idHelperSvc{idHelperSvc}, m_dbData{dbData} {
21 m_geometry.resize(m_idHelperSvc->mdtIdHelper().detectorElement_hash_max());
22 for (
unsigned int n = 0;
n < m_geometry.size(); ++
n) {
27 m_geometry[id_hash] = std::make_unique<Muon::MdtIntersectGeometry>(
log, mdt_ele->
identify(), idHelperSvc, detMgr, dbData);
36 std::vector<std::shared_ptr<const Muon::MdtIntersectGeometry>> stations;
37 stations.reserve(chambers.size());
41 std::shared_ptr<const MdtIntersectGeometry> chamb =
getChamber(chId);
42 if (chamb) stations.push_back(std::move(chamb));
49 if (idHelper.get_detectorElement_hash(idHelper.multilayerID(chId),
hash))
return nullptr;
56 std::vector<std::shared_ptr<const Muon::MdtIntersectGeometry>> stations =
getStationGeometry(
id);
59 for (std::shared_ptr<const Muon::MdtIntersectGeometry>&
it : stations) {
61 tubeIntersects.insert(tubeIntersects.end(),
intersect.tubeIntersects().begin(),
intersect.tubeIntersects().end());
69 std::vector<Identifier> chIds;
76 int chEtaLeft = stEta - 1;
77 int chEtaRight = stEta + 1;
82 if (chEtaLeft < stEtaMin) chEtaLeft = -999;
85 if (chEtaRight > stEtaMax) chEtaRight = -999;
87 using namespace MuonStationIndex;
98 if (chEtaLeft == 0) chEtaLeft -= 1;
99 if (chEtaRight == 0) chEtaRight += 1;
102 if (chEtaLeft == 0) chEtaLeft = -999;
103 if (chEtaRight == 0) chEtaRight = -999;
114 if (std::abs(chEtaLeft) == 8) chEtaLeft = -999;
115 if (std::abs(chEtaRight) == 8) chEtaRight = -999;
120 if( std::abs(chEtaLeft) != 5 && std::abs(chEtaLeft) != 4 ) chEtaLeft = -999;
121 if( std::abs(chEtaRight) != 5 && std::abs(chEtaRight) != 4 ) chEtaRight = -999;
124 if (chEtaLeft != -999 &&
128 if (chEtaRight != -999 &&
bool validElement(const Identifier &id) const
bool isGood(const Identifier &Id) const
Returns if the identifier (tube/multiLayer/chamber) is masked in the conditions database.
std::vector< std::shared_ptr< MdtIntersectGeometry > > m_geometry
virtual bool hasCSC() const =0
returns whether the CSC identifiers are loaded
const std::string & stName(StIndex index)
convert StIndex into a string
std::vector< std::shared_ptr< const MdtIntersectGeometry > > getStationGeometry(const Identifier &id) const
get geometry description of the given chamber + neighbouring chambers
const MdtCondDbData * m_dbData
int stationName(const Identifier &id) const
NRpcCablingAlg reads raw condition data and writes derived condition data to the condition store.
std::vector< std::string > intersection(std::vector< std::string > &v1, std::vector< std::string > &v2)
const IMuonIdHelperSvc * m_idHelperSvc
ChIndex chIndex(const std::string &index)
convert ChIndex name string to enum
int getMultilayer() const
Returns the multilayer represented by the readout element.
std::pair< int, int > stationEtaMinMax(const Identifier &id) const
virtual MuonStationIndex::ChIndex chamberIndex(const Identifier &id) const =0
calculate chamber index from Identifier
std::shared_ptr< const MdtIntersectGeometry > getChamber(const Identifier &id) const
get a pointer to the cached chamber
int stationPhi(const Identifier &id) const
virtual const MdtIdHelper & mdtIdHelper() const =0
access to MdtIdHelper
bool isBarrel(const Identifier &id) const
int stationEta(const Identifier &id) const
Eigen::Matrix< double, 3, 1 > Vector3D
Identifier elementID(int stationName, int stationEta, int stationPhi) const
Muon::MuonStationIntersect tubesCrossedByTrack(const MuonGM::MuonDetectorManager *detMgr, const Identifier &id, const Amg::Vector3D &pos, const Amg::Vector3D &dir) const
std::optional< double > intersect(const AmgVector(N)&posA, const AmgVector(N)&dirA, const AmgVector(N)&posB, const AmgVector(N)&dirB)
Calculates the point B' along the line B that's closest to a second line A.
The MuonDetectorManager stores the transient representation of the Muon Spectrometer geometry and pro...
std::vector< Identifier > binPlusneighbours(const Identifier &id) const
Identifier identify() const override final
Returns the ATLAS Identifier of the MuonReadOutElement.
Interface for Helper service that creates muon Identifiers and can be used to print Identifiers.
ChIndex
enum to classify the different chamber layers in the muon spectrometer
This is a "hash" representation of an Identifier. This encodes a 32 bit index which can be used to lo...
std::vector< MuonTubeIntersect > TubeIntersects