File indexing completed on 2024-04-25 02:14:10
0001 #ifndef RecoTracker_MkFit_MkFitGeometry_h
0002 #define RecoTracker_MkFit_MkFitGeometry_h
0003
0004 #include "DataFormats/DetId/interface/DetId.h"
0005 #include "RecoTracker/MkFitCore/interface/TrackerInfo.h"
0006
0007 #include <memory>
0008 #include <unordered_map>
0009 #include <vector>
0010
0011 namespace mkfit {
0012 class LayerNumberConverter;
0013 }
0014
0015 class DetLayer;
0016 class GeometricSearchTracker;
0017 class TrackerGeometry;
0018 class TrackerTopology;
0019
0020
0021
0022
0023 class MkFitGeometry {
0024 public:
0025 explicit MkFitGeometry(const TrackerGeometry& geom,
0026 const GeometricSearchTracker& tracker,
0027 const TrackerTopology& ttopo,
0028 std::unique_ptr<mkfit::TrackerInfo> trackerInfo,
0029 const mkfit::LayerNumberConverter& layNConv);
0030 ~MkFitGeometry();
0031
0032 int mkFitLayerNumber(DetId detId) const;
0033 mkfit::LayerNumberConverter const& layerNumberConverter() const { return *lnc_; }
0034 bool isPhase1() const;
0035 bool isPhase2() const;
0036 mkfit::TrackerInfo const& trackerInfo() const { return *trackerInfo_; }
0037 const std::vector<const DetLayer*>& detLayers() const { return dets_; }
0038 unsigned int uniqueIdInLayer(int layer, unsigned int detId) const {
0039 return trackerInfo_->layer(layer).short_id(detId);
0040 }
0041 const TrackerTopology* topology() const { return ttopo_; }
0042
0043 private:
0044 const TrackerTopology* ttopo_;
0045 std::unique_ptr<mkfit::LayerNumberConverter> lnc_;
0046 std::unique_ptr<mkfit::TrackerInfo> trackerInfo_;
0047 std::vector<const DetLayer*> dets_;
0048 };
0049
0050 #endif