File indexing completed on 2024-04-06 12:04:14
0001 #include "DataFormats/GeometrySurface/interface/BoundingBox.h"
0002 #include "DataFormats/GeometrySurface/interface/BoundPlane.h"
0003 #include "DataFormats/GeometryVector/interface/LocalPoint.h"
0004
0005 BoundingBox::BoundingBox(const BoundPlane& plane) {
0006 float hLen = plane.bounds().length() / 2;
0007 float hWid = plane.bounds().width() / 2;
0008 float hThick = plane.bounds().thickness() / 2;
0009
0010 m_corners[0] = plane.toGlobal(LocalPoint(hWid, hLen, hThick));
0011 m_corners[1] = plane.toGlobal(LocalPoint(hWid, hLen, -hThick));
0012 m_corners[2] = plane.toGlobal(LocalPoint(hWid, -hLen, hThick));
0013 m_corners[3] = plane.toGlobal(LocalPoint(hWid, -hLen, -hThick));
0014 m_corners[4] = plane.toGlobal(LocalPoint(-hWid, hLen, hThick));
0015 m_corners[5] = plane.toGlobal(LocalPoint(-hWid, hLen, -hThick));
0016 m_corners[6] = plane.toGlobal(LocalPoint(-hWid, -hLen, hThick));
0017 m_corners[7] = plane.toGlobal(LocalPoint(-hWid, -hLen, -hThick));
0018 }
0019
0020 std::vector<GlobalPoint> BoundingBox::corners(const BoundPlane& plane) {
0021 std::vector<GlobalPoint> result;
0022 result.reserve(8);
0023
0024 float hLen = plane.bounds().length() / 2;
0025 float hWid = plane.bounds().width() / 2;
0026 float hThick = plane.bounds().thickness() / 2;
0027
0028 result.push_back(plane.toGlobal(LocalPoint(hWid, hLen, hThick)));
0029 result.push_back(plane.toGlobal(LocalPoint(hWid, hLen, -hThick)));
0030 result.push_back(plane.toGlobal(LocalPoint(hWid, -hLen, hThick)));
0031 result.push_back(plane.toGlobal(LocalPoint(hWid, -hLen, -hThick)));
0032 result.push_back(plane.toGlobal(LocalPoint(-hWid, hLen, hThick)));
0033 result.push_back(plane.toGlobal(LocalPoint(-hWid, hLen, -hThick)));
0034 result.push_back(plane.toGlobal(LocalPoint(-hWid, -hLen, hThick)));
0035 result.push_back(plane.toGlobal(LocalPoint(-hWid, -hLen, -hThick)));
0036
0037 return result;
0038 }