File indexing completed on 2024-04-06 12:14:27
0001 #ifndef DTGeometryBuilder_DTGeometryBuilderFromDDD_h
0002 #define DTGeometryBuilder_DTGeometryBuilderFromDDD_h
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 #include "DataFormats/GeometrySurface/interface/Plane.h"
0013 #include "DataFormats/GeometrySurface/interface/RectangularPlaneBounds.h"
0014
0015 #include <vector>
0016
0017 class DTGeometry;
0018 class DDCompactView;
0019 class DDFilteredView;
0020 class DTChamber;
0021 class DTSuperLayer;
0022 class DTLayer;
0023 class Bounds;
0024 class MuonGeometryConstants;
0025
0026 namespace dtGeometryBuilder {
0027
0028 RectangularPlaneBounds* getRecPlaneBounds(const std::vector<double>::const_iterator& shapeStart);
0029 }
0030
0031 class DTGeometryBuilderFromDDD {
0032 public:
0033
0034 DTGeometryBuilderFromDDD();
0035
0036
0037 virtual ~DTGeometryBuilderFromDDD();
0038
0039
0040 void build(DTGeometry& theGeometry, const DDCompactView* cview, const MuonGeometryConstants& muonConstants);
0041
0042 private:
0043
0044 DTChamber* buildChamber(DDFilteredView& fv,
0045 const std::string& type,
0046 const MuonGeometryConstants& muonConstants) const;
0047
0048
0049 DTSuperLayer* buildSuperLayer(DDFilteredView& fv,
0050 DTChamber* chamber,
0051 const std::string& type,
0052 const MuonGeometryConstants& muonConstants) const;
0053
0054
0055 DTLayer* buildLayer(DDFilteredView& fv,
0056 DTSuperLayer* sl,
0057 const std::string& type,
0058 const MuonGeometryConstants& muonConstants) const;
0059
0060
0061 std::vector<double> extractParameters(DDFilteredView& fv) const;
0062
0063 typedef ReferenceCountingPointer<Plane> RCPPlane;
0064
0065 RCPPlane plane(const DDFilteredView& fv, Bounds* bounds) const;
0066
0067 void buildGeometry(DTGeometry& theGeometry, DDFilteredView& fv, const MuonGeometryConstants& muonConstants) const;
0068 };
0069 #endif