File indexing completed on 2024-04-06 12:11:46
0001 #ifndef GEOMETRY_FWTGEO_RECO_GEOMETRY_H
0002 #define GEOMETRY_FWTGEO_RECO_GEOMETRY_H
0003
0004 #include <cassert>
0005 #include <map>
0006 #include <string>
0007 #include <vector>
0008
0009 #include "DataFormats/GeometryVector/interface/GlobalPoint.h"
0010
0011 class TGeoManager;
0012
0013 class FWTGeoRecoGeometry {
0014 public:
0015 FWTGeoRecoGeometry(void);
0016 virtual ~FWTGeoRecoGeometry(void);
0017
0018 static const int maxCorner_ = 8;
0019 static const int maxPoints_ = 3 * maxCorner_;
0020 struct Info {
0021 std::string name;
0022 float points[maxPoints_];
0023 float topology[9];
0024 Info(const std::string& iname) : name(iname) { init(); }
0025 Info(void) { init(); }
0026 void init(void) {
0027 for (unsigned int i = 0; i < maxPoints_; ++i)
0028 points[i] = 0;
0029 for (unsigned int i = 0; i < 9; ++i)
0030 topology[i] = 0;
0031 }
0032 void fillPoints(std::vector<GlobalPoint>::const_iterator begin, std::vector<GlobalPoint>::const_iterator end) {
0033 unsigned int index(0);
0034 for (std::vector<GlobalPoint>::const_iterator i = begin; i != end; ++i) {
0035 assert(index < maxCorner_);
0036 points[index * 3] = i->x();
0037 points[index * 3 + 1] = i->y();
0038 points[index * 3 + 2] = i->z();
0039 ++index;
0040 }
0041 }
0042 };
0043 typedef std::map<unsigned int, FWTGeoRecoGeometry::Info> InfoMap;
0044
0045 InfoMap idToName;
0046
0047 TGeoManager* manager(void) const { return m_manager; }
0048 void manager(TGeoManager* geom) { m_manager = geom; }
0049
0050 private:
0051 TGeoManager* m_manager;
0052 };
0053
0054 #endif