File indexing completed on 2024-04-06 12:14:39
0001 #include <utility>
0002
0003 #include "Geometry/GEMGeometry/interface/GEMStation.h"
0004 #include "Geometry/GEMGeometry/interface/GEMRing.h"
0005 #include "Geometry/GEMGeometry/interface/GEMSuperChamber.h"
0006
0007 GEMStation::GEMStation(int region, int station) : region_(region), station_(station) {}
0008
0009 GEMStation::~GEMStation() {}
0010
0011 std::vector<GEMDetId> GEMStation::ids() const {
0012 std::vector<GEMDetId> result;
0013 for (auto& ri : rings_) {
0014 std::vector<GEMDetId> newIds(ri->ids());
0015 result.insert(result.end(), newIds.begin(), newIds.end());
0016 }
0017 return result;
0018 }
0019
0020 bool GEMStation::operator==(const GEMStation& st) const { return (region_ == st.region() && station_ == st.station()); }
0021
0022 void GEMStation::add(GEMRing* ring) { rings_.emplace_back(ring); }
0023
0024 std::vector<const GeomDet*> GEMStation::components() const {
0025 std::vector<const GeomDet*> result;
0026 for (auto ri : rings_) {
0027 auto newSch(ri->components());
0028 result.insert(result.end(), newSch.begin(), newSch.end());
0029 }
0030 return result;
0031 }
0032
0033 const GeomDet* GEMStation::component(DetId id) const {
0034 auto detId(GEMDetId(id.rawId()));
0035 return ring(detId.ring())->component(id);
0036 }
0037
0038 const GEMSuperChamber* GEMStation::superChamber(GEMDetId id) const {
0039 if (id.region() != region_ || id.station() != station_)
0040 return nullptr;
0041 return ring(id.ring())->superChamber(id.chamber());
0042 }
0043
0044 std::vector<const GEMSuperChamber*> GEMStation::superChambers() const {
0045 std::vector<const GEMSuperChamber*> result;
0046 for (auto ri : rings_) {
0047 std::vector<const GEMSuperChamber*> newSch(ri->superChambers());
0048 result.insert(result.end(), newSch.begin(), newSch.end());
0049 }
0050 return result;
0051 }
0052
0053 const GEMRing* GEMStation::ring(int ring) const {
0054 for (auto ri : rings_) {
0055 if (ring == ri->ring()) {
0056 return ri;
0057 }
0058 }
0059 return nullptr;
0060 }
0061
0062 const std::vector<const GEMRing*>& GEMStation::rings() const { return rings_; }
0063
0064 int GEMStation::nRings() const { return rings_.size(); }
0065
0066 void GEMStation::setName(std::string name) { name_ = std::move(name); }
0067
0068 const std::string GEMStation::getName() const { return name_; }
0069
0070 int GEMStation::region() const { return region_; }
0071
0072 int GEMStation::station() const { return station_; }