Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:14:38

0001 #ifndef Geometry_ForwardGeometry_IdealZDCTrapezoid_H
0002 #define Geometry_ForwardGeometry_IdealZDCTrapezoid_H 1
0003 
0004 #include "Geometry/CaloGeometry/interface/CaloCellGeometry.h"
0005 
0006 /** \class IdealZDCTrapezoid
0007     
0008   Trapezoid class used for ZDC volumes.  
0009   
0010   Required parameters for an ideal zdc trapezoid:
0011   
0012   - dz, dx, dy 
0013   - locaton x, y and z of faceCenter
0014   - tilt angle of z faces
0015   
0016   Total: 7 parameters 
0017   
0018   $Revision: 1.9 $
0019   \author E. Garcia - UIC
0020   */
0021 
0022 class IdealZDCTrapezoid : public CaloCellGeometry {
0023 public:
0024   typedef CaloCellGeometry::CCGFloat CCGFloat;
0025   typedef CaloCellGeometry::Pt3D Pt3D;
0026   typedef CaloCellGeometry::Pt3DVec Pt3DVec;
0027   typedef CaloCellGeometry::Tr3D Tr3D;
0028 
0029   IdealZDCTrapezoid();
0030 
0031   IdealZDCTrapezoid(const IdealZDCTrapezoid& idzt);
0032 
0033   IdealZDCTrapezoid& operator=(const IdealZDCTrapezoid& idzt);
0034 
0035   IdealZDCTrapezoid(const GlobalPoint& faceCenter, CornersMgr* mgr, const CCGFloat* parm);
0036 
0037   ~IdealZDCTrapezoid() override;
0038 
0039   CCGFloat an() const;
0040   CCGFloat dx() const;
0041   CCGFloat dy() const;
0042   CCGFloat dz() const;
0043   CCGFloat ta() const;
0044   CCGFloat dt() const;
0045 
0046   void vocalCorners(Pt3DVec& vec, const CCGFloat* pv, Pt3D& ref) const override;
0047 
0048   static void localCorners(Pt3DVec& vec, const CCGFloat* pv, Pt3D& ref);
0049 
0050 private:
0051   void initCorners(CaloCellGeometry::CornersVec&) override;
0052 };
0053 
0054 std::ostream& operator<<(std::ostream& s, const IdealZDCTrapezoid& cell);
0055 
0056 #endif