2 #include "CLHEP/Geometry/Plane3D.h" 3 #include "CLHEP/Geometry/Transform3D.h" 25 if( &idct !=
this ) CaloCellGeometry::operator=( idct ) ;
54 return (
dxl()+
dxh() )/2. ;
118 assert( 8 == lc.size() ) ;
132 assert( 0 < (dxl*dxh) ) ;
134 lc[ 0 ] =
Pt3D ( -dx, -dy , dzb ) ;
135 lc[ 1 ] =
Pt3D ( -dx, +dy , dzs ) ;
136 lc[ 2 ] =
Pt3D ( +2*dxh -dx, +dy , dzs ) ;
137 lc[ 3 ] =
Pt3D ( +2*dxl -dx, -dy , dzb ) ;
138 lc[ 4 ] =
Pt3D ( -dx, -dy , -dzs ) ;
139 lc[ 5 ] =
Pt3D ( -dx, +dy , -dzb ) ;
140 lc[ 6 ] =
Pt3D ( +2*dxh -dx, +dy , -dzb ) ;
141 lc[ 7 ] =
Pt3D ( +2*dxl -dx, -dy , -dzs ) ;
143 ref = 0.25*( lc[0] + lc[1] + lc[2] + lc[3] ) ;
152 const CCGFloat zsign ( 0 < p.
z() ? 1. : -1. ) ;
158 const Pt3D lb ( lf.x() , lf.y() , lf.z() - 2.*
dz() ) ;
159 const Pt3D ls ( lf.x() -
dx(), lf.y(), lf.z() ) ;
163 const Pt3D gb (
gf.x() ,
gf.y() ,
gf.z() + 2.*zsign*
dz() ) ;
171 const Tr3D tr ( lf, lb,
ls,
174 for(
unsigned int i ( 0 ) ;
i != 8 ; ++
i )
176 const Pt3D gl ( tr*lc[
i] ) ;
184 s <<
"Center: " << cell.
getPosition() << std::endl ;
virtual ~IdealCastorTrapezoid()
CaloCellGeometry::CCGFloat CCGFloat
CaloCellGeometry::Pt3D Pt3D
Sin< T >::type sin(const T &t)
Global3DPoint GlobalPoint
CaloCellGeometry::Pt3DVec Pt3DVec
HepGeom::Transform3D Tr3D
std::vector< Pt3D > Pt3DVec
virtual void vocalCorners(Pt3DVec &vec, const CCGFloat *pv, Pt3D &ref) const override
const CCGFloat * param() const
CaloCellGeometry::Tr3D Tr3D
Cos< T >::type cos(const T &t)
IdealCastorTrapezoid & operator=(const IdealCastorTrapezoid &idct)
virtual void initCorners(CornersVec &) override
CaloCellGeometry::Pt3D Pt3D
HepGeom::Point3D< CCGFloat > Pt3D
bool uninitialized() const
std::ostream & operator<<(std::ostream &s, const IdealCastorTrapezoid &cell)
static void localCorners(Pt3DVec &vec, const CCGFloat *pv, Pt3D &ref)
const GlobalPoint & getPosition() const
Returns the position of reference for this cell.