File indexing completed on 2023-03-17 13:03:00
0001 #ifndef Geometry_GEMGeometry_ME0Geometry_h
0002 #define Geometry_GEMGeometry_ME0Geometry_h
0003
0004 #include "DataFormats/DetId/interface/DetId.h"
0005 #include "Geometry/CommonDetUnit/interface/TrackingGeometry.h"
0006 #include "Geometry/GEMGeometry/interface/ME0EtaPartition.h"
0007 #include "Geometry/GEMGeometry/interface/ME0Layer.h"
0008 #include "Geometry/GEMGeometry/interface/ME0Chamber.h"
0009 #include <vector>
0010 #include <map>
0011
0012 class ME0Geometry : public TrackingGeometry {
0013 public:
0014
0015 ME0Geometry();
0016
0017
0018 ~ME0Geometry() override;
0019
0020
0021 const DetTypeContainer& detTypes() const override;
0022
0023
0024 const DetContainer& detUnits() const override;
0025
0026
0027 const DetContainer& dets() const override;
0028
0029
0030 const DetIdContainer& detUnitIds() const override;
0031
0032
0033 const DetIdContainer& detIds() const override;
0034
0035
0036 const GeomDet* idToDetUnit(DetId) const override;
0037
0038
0039 const GeomDet* idToDet(DetId) const override;
0040
0041
0042
0043
0044 const ME0EtaPartition* etaPartition(ME0DetId id) const;
0045
0046
0047 const ME0Layer* layer(ME0DetId id) const;
0048
0049
0050 const ME0Chamber* chamber(ME0DetId id) const;
0051
0052
0053 const std::vector<ME0EtaPartition const*>& etaPartitions() const;
0054
0055
0056 const std::vector<const ME0Layer*>& layers() const;
0057
0058
0059 const std::vector<const ME0Chamber*>& chambers() const;
0060
0061
0062 void add(ME0EtaPartition* etaPartition);
0063
0064
0065 void add(ME0Layer* layer);
0066
0067
0068 void add(ME0Chamber* chamber);
0069
0070 private:
0071 DetContainer theEtaPartitions;
0072 DetTypeContainer theEtaPartitionTypes;
0073 DetIdContainer theEtaPartitionIds;
0074 DetIdContainer theDetIds;
0075 DetContainer theDets;
0076
0077
0078 mapIdToDet theMap;
0079
0080 std::vector<ME0EtaPartition const*> allEtaPartitions;
0081 std::vector<ME0Layer const*> allLayers;
0082 std::vector<ME0Chamber const*> allChambers;
0083 };
0084
0085 #endif