File indexing completed on 2024-04-06 12:14:16
0001 #ifndef PreshowerStrip_h
0002 #define PreshowerStrip_h
0003
0004 #include "Geometry/CaloGeometry/interface/CaloCellGeometry.h"
0005 #include <CLHEP/Geometry/Point3D.h>
0006 #include <CLHEP/Geometry/Plane3D.h>
0007 #include <CLHEP/Geometry/Vector3D.h>
0008 #include <CLHEP/Geometry/Transform3D.h>
0009 #include <vector>
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021 class PreshowerStrip : public CaloCellGeometry {
0022 public:
0023 typedef CaloCellGeometry::CCGFloat CCGFloat;
0024 typedef CaloCellGeometry::Pt3D Pt3D;
0025 typedef CaloCellGeometry::Pt3DVec Pt3DVec;
0026 typedef CaloCellGeometry::Tr3D Tr3D;
0027
0028 PreshowerStrip();
0029
0030 PreshowerStrip(const PreshowerStrip& tr);
0031
0032 PreshowerStrip& operator=(const PreshowerStrip& tr);
0033
0034 PreshowerStrip(const GlobalPoint& po, CornersMgr* mgr, const CCGFloat* parm) : CaloCellGeometry(po, mgr, parm) {
0035 initSpan();
0036 }
0037
0038 ~PreshowerStrip() override;
0039
0040 CCGFloat dx() const { return param()[0]; }
0041 CCGFloat dy() const { return param()[1]; }
0042 CCGFloat dz() const { return param()[2]; }
0043 CCGFloat tilt() const { return param()[3]; }
0044
0045 void vocalCorners(Pt3DVec& vec, const CCGFloat* pv, Pt3D& ref) const override { localCorners(vec, pv, ref); }
0046
0047 static void localCorners(Pt3DVec& vec, const CCGFloat* pv, Pt3D& ref);
0048
0049 void getTransform(Tr3D& tr, Pt3DVec* ) const override {}
0050
0051 private:
0052 void initCorners(CaloCellGeometry::CornersVec&) override;
0053 };
0054
0055 std::ostream& operator<<(std::ostream& s, const PreshowerStrip& cell);
0056
0057 #endif