11 rad*sinf( phi )/coshf( eta ) ,
29 z*sinf( phi )/sinhf( eta ) ,
33 std::vector<HepGeom::Point3D<double> >
35 HepGeom::Point3D<double> & ref )
44 const double dEta ( pv[0] ) ;
45 const double dPhi ( pv[1] ) ;
46 const double dz ( pv[2] ) ;
47 const double eta ( pv[3] ) ;
48 const double z ( pv[4] ) ;
50 std::vector<GlobalPoint> gc ( 8,
GlobalPoint(0,0,0) ) ;
51 std::vector<HepGeom::Point3D<double> > lc ( 8, HepGeom::Point3D<double> ( 0,0,0) ) ;
55 const float z_near ( z ) ;
56 const float z_far ( z*( 1 - 2*dz/p.
mag() ) ) ;
57 gc[ 0 ] =
etaPhiZ( eta + dEta , +dPhi , z_near ) ;
58 gc[ 1 ] =
etaPhiZ( eta + dEta , -dPhi , z_near ) ;
59 gc[ 2 ] =
etaPhiZ( eta - dEta , -dPhi , z_near ) ;
60 gc[ 3 ] =
etaPhiZ( eta - dEta , +dPhi , z_near ) ;
66 for(
unsigned int i ( 0 ) ;
i != 8 ; ++
i )
68 lc[
i] = HepGeom::Point3D<double> ( gc[
i].x(), gc[
i].y(), gc[
i].z() ) ;
71 ref = 0.25*( lc[0] + lc[1] + lc[2] + lc[3] ) ;
84 const float z_near ( p.
z() ) ;
85 const float z_far ( z_near + 2*
dz()*p.
z()/fabs( p.
z() ) ) ;
86 const float eta ( p.
eta() ) ;
87 const float phi ( p.
phi() ) ;
93 corners[ 4 ] =
GlobalPoint( corners[0].
x(), corners[0].
y(), z_far );
94 corners[ 5 ] =
GlobalPoint( corners[1].
x(), corners[1].
y(), z_far );
95 corners[ 6 ] =
GlobalPoint( corners[2].
x(), corners[2].
y(), z_far );
96 corners[ 7 ] =
GlobalPoint( corners[3].
x(), corners[3].
y(), z_far );
103 s <<
"Center: " << cell.
getPosition() << std::endl ;
104 s <<
"dEta = " << cell.
dEta() <<
", dPhi = " << cell.
dPhi() <<
", dz = " << cell.
dz() << std::endl ;
static GlobalPoint etaPhiPerp(float eta, float phi, float perp)
Geom::Phi< T > phi() const
static std::vector< HepGeom::Point3D< double > > localCorners(const double *pv, HepGeom::Point3D< double > &ref)
Global3DPoint GlobalPoint
static GlobalPoint etaPhiZ(float eta, float phi, float z)
CornersVec & setCorners() const
static GlobalPoint etaPhiR(float eta, float phi, float rad)
T perp() const
Magnitude of transverse component.
virtual const CornersVec & getCorners() const
bool uninitialized() const
std::ostream & operator<<(std::ostream &s, const IdealObliquePrism &cell)
const GlobalPoint & getPosition() const
virtual const CornersVec & getCorners() const =0