CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
TruncatedPyramid.h
Go to the documentation of this file.
1 #ifndef TruncatedPyramid_h
2 #define TruncatedPyramid_h
3 
5 #include <CLHEP/Geometry/Point3D.h>
6 #include <CLHEP/Geometry/Plane3D.h>
7 #include <CLHEP/Geometry/Vector3D.h>
8 #include <CLHEP/Geometry/Transform3D.h>
9 #include <vector>
10 
20 public:
21 
26 
27  TruncatedPyramid( void );
28 
29  TruncatedPyramid( const TruncatedPyramid& tr ) ;
30 
31  TruncatedPyramid& operator=( const TruncatedPyramid& tr ) ;
32 
33  TruncatedPyramid( const CornersMgr* cMgr ,
34  const GlobalPoint& fCtr ,
35  const GlobalPoint& bCtr ,
36  const GlobalPoint& cor1 ,
37  const CCGFloat* parV ) ;
38 
39  TruncatedPyramid( const CornersVec& corn ,
40  const CCGFloat* par ) ;
41 
42  virtual ~TruncatedPyramid() ;
43 
44  const GlobalPoint getPosition( CCGFloat depth ) const ;
45 
46  virtual const CornersVec& getCorners() const ;
47 
48  // Return thetaAxis polar angle of axis of the crystal
49  CCGFloat getThetaAxis() const ;
50 
51  // Return phiAxis azimuthal angle of axis of the crystal
52  CCGFloat getPhiAxis() const ;
53 
54  const GlobalVector& axis() const ;
55 
56  // for geometry creation in other classes
57  static void createCorners( const std::vector<CCGFloat>& pv ,
58  const Tr3D& tr ,
59  std::vector<GlobalPoint>& co ) ;
60 
61  virtual void vocalCorners( Pt3DVec& vec ,
62  const CCGFloat* pv ,
63  Pt3D& ref ) const ;
64 
65  static void localCorners( Pt3DVec& vec ,
66  const CCGFloat* pv ,
67  Pt3D& ref ) ;
68 
69  static void localCornersReflection( Pt3DVec& vec ,
70  const CCGFloat* pv ,
71  Pt3D& ref ) ;
72 
73  static void localCornersSwap( Pt3DVec& vec ,
74  const CCGFloat* pv ,
75  Pt3D& ref ) ;
76 
77  virtual void getTransform( Tr3D& tr, Pt3DVec* lptr ) const ;
78 
79 private:
80  GlobalVector makeAxis( void );
81 
82  const GlobalPoint backCtr( void ) const;
85 };
86 
87 std::ostream& operator<<( std::ostream& s, const TruncatedPyramid& cell ) ;
88 
89 #endif
GloballyPositioned< float >::GlobalPoint GlobalPoint
Definition: MagVolume.h:20
HepGeom::Transform3D Tr3D
std::vector< Pt3D > Pt3DVec
std::ostream & operator<<(std::ostream &out, const ALILine &li)
Definition: ALILine.cc:187
CaloCellGeometry::CCGFloat CCGFloat
CaloCellGeometry::Pt3DVec Pt3DVec
HepGeom::Point3D< CCGFloat > Pt3D
Definition: EZMgrFL.h:8
GloballyPositioned< float >::GlobalVector GlobalVector
Definition: MagVolume.h:21
A base class to handle the particular shape of Ecal Xtals. Taken from ORCA Calorimetry Code...
CaloCellGeometry::Tr3D Tr3D
GlobalVector m_axis
CaloCellGeometry::Pt3D Pt3D
Unlimited (trivial) bounds.