Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2021-02-14 13:07:39

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    \class PreshowerStrip
0014 
0015    \brief A base class to handle the shape of preshower strips.
0016 
0017 \author F. Cossutti
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* /*lptr*/) 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