CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Types | Public Member Functions | Private Member Functions | Private Attributes
EcalTrapezoidParameters Class Reference

#include <EcalTrapezoidParameters.h>

Public Types

typedef std::vector
< HepGeom::Point3D< double > > 
VertexList
 

Public Member Functions

double a () const
 
double A () const
 
double a1 () const
 
double a4 () const
 
double alp1 () const
 
double alp2 () const
 
double b () const
 
double B () const
 
double bl1 () const
 
double bl2 () const
 
double c () const
 
double C () const
 
double d () const
 
double D () const
 
double dz () const
 
 EcalTrapezoidParameters (double aHalfLengthXNegZLoY, double aHalfLengthXPosZLoY, double aHalfLengthXPosZHiY, double aHalfLengthYNegZ, double aHalfLengthYPosZ, double aHalfLengthZ, double aAngleAD, double aCoord15X, double aCoord15Y)
 
double h () const
 
double H () const
 
double h1 () const
 
double h2 () const
 
double hAa () const
 
double hBb () const
 
double hCc () const
 
double hDd () const
 
double L () const
 
double phi () const
 
double theta () const
 
double tl1 () const
 
double tl2 () const
 
VertexList vertexList () const
 
double x15 () const
 
double y15 () const
 

Private Member Functions

 EcalTrapezoidParameters ()
 
 EcalTrapezoidParameters (const EcalTrapezoidParameters &)
 
const EcalTrapezoidParametersoperator= (const EcalTrapezoidParameters &)
 

Private Attributes

double m_a
 
double m_A
 
double m_a1
 
double m_a4
 
double m_alp1
 
double m_alp2
 
double m_b
 
double m_B
 
double m_bl1
 
double m_bl2
 
double m_c
 
double m_C
 
double m_d
 
double m_D
 
double m_dz
 
double m_h
 
double m_H
 
double m_h1
 
double m_h2
 
double m_hAa
 
double m_hBb
 
double m_hCc
 
double m_hDd
 
double m_L
 
double m_ph
 
double m_th
 
double m_tl1
 
double m_tl2
 
double m_x15
 
double m_y15
 

Detailed Description

Definition at line 66 of file EcalTrapezoidParameters.h.

Member Typedef Documentation

Definition at line 72 of file EcalTrapezoidParameters.h.

Constructor & Destructor Documentation

EcalTrapezoidParameters::EcalTrapezoidParameters ( double  aHalfLengthXNegZLoY,
double  aHalfLengthXPosZLoY,
double  aHalfLengthXPosZHiY,
double  aHalfLengthYNegZ,
double  aHalfLengthYPosZ,
double  aHalfLengthZ,
double  aAngleAD,
double  aCoord15X,
double  aCoord15Y 
)

Definition at line 38 of file EcalTrapezoidParameters.cc.

References funct::cos(), benchmark_cfg::fc, m_a, m_A, m_a1, m_a4, m_alp1, m_alp2, m_b, m_B, m_bl1, m_bl2, m_c, m_C, m_d, m_D, m_dz, m_h, m_H, m_h1, m_h2, m_hAa, m_hBb, m_hCc, m_hDd, m_L, m_ph, M_PI, M_PI_2, m_th, m_tl1, m_tl2, m_x15, m_y15, funct::sin(), mathSSE::sqrt(), and funct::tan().

49 {
50  m_dz = aHalfLengthZ ;
51  m_h1 = aHalfLengthYNegZ ;
52  m_bl1 = aHalfLengthXNegZLoY ;
53  m_h2 = aHalfLengthYPosZ ;
54  m_bl2 = aHalfLengthXPosZLoY ;
55  m_tl2 = aHalfLengthXPosZHiY ;
56 
57  m_a1 = aAngleAD ;
58  m_y15 = aCoord15Y ;
59  m_x15 = aCoord15X ;
60 
61  m_hAa = fabs( m_y15 ) ;
62 
63  m_L = 2*m_dz ;
64  m_h = 2*m_h2 ;
65  m_a = 2*m_bl2 ;
66  m_b = 2*m_tl2 ;
67  m_H = 2*m_h1 ;
68  m_A = 2*m_bl1 ;
69 
70  // derive everything else
71  const double sina1 ( sin( m_a1 ) ) ;
72  const double cosa1 ( cos( m_a1 ) ) ;
73  const double tana1 ( tan( m_a1 - M_PI_2 ) ) ;
74 
75  const double tana4 ( ( m_tl2 - m_bl2 - m_h2*tana1 )/m_h2 ) ;
76 
77  m_a4 = M_PI_2 + atan( tana4 ) ;
78 
79  m_tl1 = m_bl1 + m_h1*( tana1 + tana4 ) ;
80 
81  m_d = m_h/sina1 ;
82  m_D = m_H/sina1 ;
83 
84  const double tanalp1 ( ( m_D*cosa1 + m_tl1 - m_bl1 )/m_H ) ;
85  const double tanalp2 ( ( m_d*cosa1 + m_tl2 - m_bl2 )/m_h ) ;
86  m_alp1 = atan( tanalp1 ) ;
87  m_alp2 = atan( tanalp2 ) ;
88 
89  const double sina4 ( sin( m_a4 ) ) ;
90  m_c = m_h/sina4 ;
91  m_C = m_H/sina4 ;
92  m_B = 2*m_tl1 ; // same as m_A - m_D*cosa1 - m_C*cos( m_a4 ) ;
93 
94  m_hDd = fabs( m_x15 )*sina1 - m_hAa*cosa1 ;
95 
96  const double xd5 ( ( m_hAa + m_hDd*cosa1 )/sina1 ) ;
97  const double xd6 ( m_D - m_d - xd5 ) ;
98  const double z6 ( sqrt( m_hDd*m_hDd + xd6*xd6 ) ) ;
99  double gb6 ;
100  if( 0. == z6 || 1. < fabs( m_hDd/z6 ) )
101  {
102  gb6 = 0 ;
103  }
104  else
105  {
106  gb6 = M_PI - m_a1 - asin( m_hDd/z6 ) ;
107  }
108  m_hBb = z6*sin( gb6 ) ;
109 
110  const double xb6 ( z6*cos( gb6 ) ) ;
111  const double xb7 ( m_B - xb6 - m_b ) ;
112  const double z7 ( sqrt( m_hBb*m_hBb + xb7*xb7 ) ) ;
113  double gc7 ;
114  if( 0 == z7 || 1. < fabs( m_hBb/z7 ) )
115  {
116  gc7 = 0 ;
117  }
118  else
119  {
120  gc7 = M_PI - m_a4 - asin( m_hBb/z7 ) ;
121  }
122  m_hCc = z7*sin( gc7 ) ;
123 
124  const HepGeom::Point3D<double> fc ( m_bl2 + m_h2*tanalp2, m_h2, 0 ) ;
125  const HepGeom::Point3D<double> v5 ( m_x15 , m_y15 , -m_L ) ;
126  const HepGeom::Point3D<double> bc ( v5 +
127  HepGeom::Point3D<double> ( m_bl1 + m_h1*tanalp1, m_h1, 0 ) ) ;
128  const HepGeom::Point3D<double> dc ( fc - bc ) ;
129 
130  m_th = dc.theta() ;
131  m_ph = dc.phi() ;
132 }
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
#define M_PI_2
T sqrt(T t)
Definition: SSEVec.h:28
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
#define M_PI
Definition: BFit3D.cc:3
EcalTrapezoidParameters::EcalTrapezoidParameters ( )
private
EcalTrapezoidParameters::EcalTrapezoidParameters ( const EcalTrapezoidParameters )
private

Member Function Documentation

double EcalTrapezoidParameters::a ( ) const
double EcalTrapezoidParameters::A ( ) const
double EcalTrapezoidParameters::a1 ( ) const

Definition at line 184 of file EcalTrapezoidParameters.cc.

References m_a1.

Referenced by vertexList().

184 { return m_a1 ; }
double EcalTrapezoidParameters::a4 ( ) const

Definition at line 185 of file EcalTrapezoidParameters.cc.

References m_a4.

185 { return m_a4 ; }
double EcalTrapezoidParameters::alp1 ( ) const

Definition at line 172 of file EcalTrapezoidParameters.cc.

References m_alp1.

Referenced by DDEcalBarrelAlgo::mytrap(), DDEcalBarrelNewAlgo::mytrap(), and vertexList().

172 { return m_alp1 ; }
double EcalTrapezoidParameters::alp2 ( ) const

Definition at line 176 of file EcalTrapezoidParameters.cc.

References m_alp2.

Referenced by DDEcalBarrelAlgo::mytrap(), DDEcalBarrelNewAlgo::mytrap(), and vertexList().

176 { return m_alp2 ; }
double EcalTrapezoidParameters::b ( ) const
double EcalTrapezoidParameters::B ( ) const

Definition at line 193 of file EcalTrapezoidParameters.cc.

References m_B.

Referenced by vertexList(), DDEcalBarrelAlgo::web(), and DDEcalBarrelNewAlgo::web().

193 { return m_B ; }
double EcalTrapezoidParameters::bl1 ( ) const
double EcalTrapezoidParameters::bl2 ( ) const

Definition at line 174 of file EcalTrapezoidParameters.cc.

References m_bl2.

Referenced by DDEcalBarrelAlgo::mytrap(), DDEcalBarrelNewAlgo::mytrap(), and vertexList().

174 { return m_bl2 ; }
double EcalTrapezoidParameters::c ( ) const

Definition at line 189 of file EcalTrapezoidParameters.cc.

References m_c.

189 { return m_c ; }
double EcalTrapezoidParameters::C ( ) const

Definition at line 194 of file EcalTrapezoidParameters.cc.

References m_C.

194 { return m_C ; }
double EcalTrapezoidParameters::d ( ) const

Definition at line 190 of file EcalTrapezoidParameters.cc.

References m_d.

190 { return m_d ; }
double EcalTrapezoidParameters::D ( ) const

Definition at line 195 of file EcalTrapezoidParameters.cc.

References m_D.

195 { return m_D ; }
double EcalTrapezoidParameters::dz ( ) const
double EcalTrapezoidParameters::h ( ) const
double EcalTrapezoidParameters::H ( ) const

Definition at line 196 of file EcalTrapezoidParameters.cc.

References m_H.

Referenced by DDEcalBarrelAlgo::execute(), DDEcalBarrelNewAlgo::execute(), and vertexList().

196 { return m_H ; }
double EcalTrapezoidParameters::h1 ( ) const
double EcalTrapezoidParameters::h2 ( ) const

Definition at line 173 of file EcalTrapezoidParameters.cc.

References m_h2.

Referenced by DDEcalBarrelAlgo::mytrap(), DDEcalBarrelNewAlgo::mytrap(), and vertexList().

173 { return m_h2 ; }
double EcalTrapezoidParameters::hAa ( ) const

Definition at line 180 of file EcalTrapezoidParameters.cc.

References m_hAa.

180 { return m_hAa ; }
double EcalTrapezoidParameters::hBb ( ) const

Definition at line 181 of file EcalTrapezoidParameters.cc.

References m_hBb.

181 { return m_hBb ; }
double EcalTrapezoidParameters::hCc ( ) const

Definition at line 182 of file EcalTrapezoidParameters.cc.

References m_hCc.

182 { return m_hCc ; }
double EcalTrapezoidParameters::hDd ( ) const

Definition at line 183 of file EcalTrapezoidParameters.cc.

References m_hDd.

183 { return m_hDd ; }
double EcalTrapezoidParameters::L ( ) const
const EcalTrapezoidParameters& EcalTrapezoidParameters::operator= ( const EcalTrapezoidParameters )
private
double EcalTrapezoidParameters::phi ( void  ) const

Definition at line 168 of file EcalTrapezoidParameters.cc.

References m_ph.

Referenced by DDEcalBarrelAlgo::mytrap(), DDEcalBarrelNewAlgo::mytrap(), and vertexList().

168 { return m_ph ; }
double EcalTrapezoidParameters::theta ( ) const

Definition at line 167 of file EcalTrapezoidParameters.cc.

References m_th.

Referenced by DDEcalBarrelAlgo::mytrap(), DDEcalBarrelNewAlgo::mytrap(), and vertexList().

167 { return m_th ; }
double EcalTrapezoidParameters::tl1 ( ) const

Definition at line 171 of file EcalTrapezoidParameters.cc.

References m_tl1.

Referenced by DDEcalBarrelAlgo::mytrap(), and DDEcalBarrelNewAlgo::mytrap().

171 { return m_tl1 ; }
double EcalTrapezoidParameters::tl2 ( ) const

Definition at line 175 of file EcalTrapezoidParameters.cc.

References m_tl2.

Referenced by DDEcalBarrelAlgo::mytrap(), and DDEcalBarrelNewAlgo::mytrap().

175 { return m_tl2 ; }
EcalTrapezoidParameters::VertexList EcalTrapezoidParameters::vertexList ( ) const

Definition at line 199 of file EcalTrapezoidParameters.cc.

References a(), A(), a1(), alp1(), alp2(), b(), B(), bl1(), bl2(), funct::cos(), dz(), connectstrParser::f1, connectstrParser::f2, connectstrParser::f3, connectstrParser::f4, connectstrParser::f5, connectstrParser::f6, benchmark_cfg::fc, h(), H(), h1(), h2(), M_PI_2, phi(), funct::sin(), funct::tan(), and theta().

Referenced by DDEcalBarrelAlgo::execute(), DDEcalBarrelNewAlgo::execute(), DDEcalBarrelAlgo::web(), and DDEcalBarrelNewAlgo::web().

200 {
201  VertexList vtx ;
202  vtx.reserve( 8 ) ;
203 
204  const double dztanth ( dz()*tan( theta() ) ) ;
205 
206  const double ph ( phi() ) ;
207  const HepGeom::Point3D<double> fc ( dztanth*cos(ph), dztanth*sin(ph), dz() ) ;
208 
209  const double h_ ( h() ) ;
210  const double H_ ( H() ) ;
211  const double b_ ( b() ) ;
212  const double B_ ( B() ) ;
213  const double a_ ( a() ) ;
214  const double A_ ( A() ) ;
215 
216 // const double tl1 ( tl1() ) ;
217 
218  const double tanalp1 ( tan(alp1()) ) ;
219 
220  const double tanalp2 ( tan(alp2()) ) ;
221 
222  const double tana1 ( tan( a1() - M_PI_2 ) ) ;
223 
224  const HepGeom::Point3D<double> f1 ( -HepGeom::Point3D<double> ( bl2() + h2()*tanalp2, h2(), 0 ) ) ;
225 
226  const HepGeom::Point3D<double> f2 ( HepGeom::Point3D<double> ( -h_*tana1, h_, 0 ) + f1 ) ;
227 
228  const HepGeom::Point3D<double> f3 ( f2 + HepGeom::Point3D<double> ( b_,0,0 ) ) ;
229 
230  const HepGeom::Point3D<double> f4 ( HepGeom::Point3D<double> ( a_,0,0 ) + f1 ) ;
231 
232 
233  const HepGeom::Point3D<double> f5 ( -HepGeom::Point3D<double> ( bl1() + h1()*tanalp1, h1(), 0 ) ) ;
234 
235  const HepGeom::Point3D<double> f6 ( HepGeom::Point3D<double> ( -H_*tana1, H_, 0 ) + f5 ) ;
236 
237  const HepGeom::Point3D<double> f7 ( f6 + HepGeom::Point3D<double> ( B_,0,0 ) ) ;
238 
239  const HepGeom::Point3D<double> f8 ( HepGeom::Point3D<double> ( A_,0,0 ) + f5 ) ;
240 
241  vtx.push_back( fc + f1 ) ;
242  vtx.push_back( fc + f2 ) ;
243  vtx.push_back( fc + f3 ) ;
244  vtx.push_back( fc + f4 ) ;
245  vtx.push_back( -fc + f5 ) ;
246  vtx.push_back( -fc + f6 ) ;
247  vtx.push_back( -fc + f7 ) ;
248  vtx.push_back( -fc + f8 ) ;
249 
250  return vtx ;
251 }
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
#define M_PI_2
std::vector< HepGeom::Point3D< double > > VertexList
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
double EcalTrapezoidParameters::x15 ( ) const

Definition at line 178 of file EcalTrapezoidParameters.cc.

References m_x15.

178 { return m_x15 ; }
double EcalTrapezoidParameters::y15 ( ) const

Definition at line 179 of file EcalTrapezoidParameters.cc.

References m_y15.

179 { return m_y15 ; }

Member Data Documentation

double EcalTrapezoidParameters::m_a
private

Definition at line 149 of file EcalTrapezoidParameters.h.

Referenced by a(), and EcalTrapezoidParameters().

double EcalTrapezoidParameters::m_A
private

Definition at line 149 of file EcalTrapezoidParameters.h.

Referenced by A(), and EcalTrapezoidParameters().

double EcalTrapezoidParameters::m_a1
private

Definition at line 147 of file EcalTrapezoidParameters.h.

Referenced by a1(), and EcalTrapezoidParameters().

double EcalTrapezoidParameters::m_a4
private

Definition at line 148 of file EcalTrapezoidParameters.h.

Referenced by a4(), and EcalTrapezoidParameters().

double EcalTrapezoidParameters::m_alp1
private

Definition at line 145 of file EcalTrapezoidParameters.h.

Referenced by alp1(), and EcalTrapezoidParameters().

double EcalTrapezoidParameters::m_alp2
private

Definition at line 145 of file EcalTrapezoidParameters.h.

Referenced by alp2(), and EcalTrapezoidParameters().

double EcalTrapezoidParameters::m_b
private

Definition at line 149 of file EcalTrapezoidParameters.h.

Referenced by b(), and EcalTrapezoidParameters().

double EcalTrapezoidParameters::m_B
private

Definition at line 149 of file EcalTrapezoidParameters.h.

Referenced by B(), and EcalTrapezoidParameters().

double EcalTrapezoidParameters::m_bl1
private

Definition at line 145 of file EcalTrapezoidParameters.h.

Referenced by bl1(), and EcalTrapezoidParameters().

double EcalTrapezoidParameters::m_bl2
private

Definition at line 145 of file EcalTrapezoidParameters.h.

Referenced by bl2(), and EcalTrapezoidParameters().

double EcalTrapezoidParameters::m_c
private

Definition at line 149 of file EcalTrapezoidParameters.h.

Referenced by c(), and EcalTrapezoidParameters().

double EcalTrapezoidParameters::m_C
private

Definition at line 149 of file EcalTrapezoidParameters.h.

Referenced by C(), and EcalTrapezoidParameters().

double EcalTrapezoidParameters::m_d
private

Definition at line 149 of file EcalTrapezoidParameters.h.

Referenced by d(), and EcalTrapezoidParameters().

double EcalTrapezoidParameters::m_D
private

Definition at line 149 of file EcalTrapezoidParameters.h.

Referenced by D(), and EcalTrapezoidParameters().

double EcalTrapezoidParameters::m_dz
private

Definition at line 145 of file EcalTrapezoidParameters.h.

Referenced by dz(), and EcalTrapezoidParameters().

double EcalTrapezoidParameters::m_h
private

Definition at line 149 of file EcalTrapezoidParameters.h.

Referenced by EcalTrapezoidParameters(), and h().

double EcalTrapezoidParameters::m_H
private

Definition at line 149 of file EcalTrapezoidParameters.h.

Referenced by EcalTrapezoidParameters(), and H().

double EcalTrapezoidParameters::m_h1
private

Definition at line 145 of file EcalTrapezoidParameters.h.

Referenced by EcalTrapezoidParameters(), and h1().

double EcalTrapezoidParameters::m_h2
private

Definition at line 145 of file EcalTrapezoidParameters.h.

Referenced by EcalTrapezoidParameters(), and h2().

double EcalTrapezoidParameters::m_hAa
private

Definition at line 147 of file EcalTrapezoidParameters.h.

Referenced by EcalTrapezoidParameters(), and hAa().

double EcalTrapezoidParameters::m_hBb
private

Definition at line 148 of file EcalTrapezoidParameters.h.

Referenced by EcalTrapezoidParameters(), and hBb().

double EcalTrapezoidParameters::m_hCc
private

Definition at line 148 of file EcalTrapezoidParameters.h.

Referenced by EcalTrapezoidParameters(), and hCc().

double EcalTrapezoidParameters::m_hDd
private

Definition at line 148 of file EcalTrapezoidParameters.h.

Referenced by EcalTrapezoidParameters(), and hDd().

double EcalTrapezoidParameters::m_L
private

Definition at line 149 of file EcalTrapezoidParameters.h.

Referenced by EcalTrapezoidParameters(), and L().

double EcalTrapezoidParameters::m_ph
private

Definition at line 145 of file EcalTrapezoidParameters.h.

Referenced by EcalTrapezoidParameters(), and phi().

double EcalTrapezoidParameters::m_th
private

Definition at line 145 of file EcalTrapezoidParameters.h.

Referenced by EcalTrapezoidParameters(), and theta().

double EcalTrapezoidParameters::m_tl1
private

Definition at line 145 of file EcalTrapezoidParameters.h.

Referenced by EcalTrapezoidParameters(), and tl1().

double EcalTrapezoidParameters::m_tl2
private

Definition at line 145 of file EcalTrapezoidParameters.h.

Referenced by EcalTrapezoidParameters(), and tl2().

double EcalTrapezoidParameters::m_x15
private

Definition at line 147 of file EcalTrapezoidParameters.h.

Referenced by EcalTrapezoidParameters(), and x15().

double EcalTrapezoidParameters::m_y15
private

Definition at line 147 of file EcalTrapezoidParameters.h.

Referenced by EcalTrapezoidParameters(), and y15().