CMS 3D CMS Logo

EcalTrapezoidParameters.h
Go to the documentation of this file.
1 #ifndef ECALCOMMONDATA_ECALTRAPEZOIDPARAMETERS_H
2 #define ECALCOMMONDATA_ECALTRAPEZOIDPARAMETERS_H
3 // -*- C++ -*-
4 //
5 // Package: EcalCommonData
6 // Module: EcalTrapezoidParameters
7 //
8 // Description: Dimensionally, all you need to know about a trapezoid
9 //
10 // Usage:
11 // This class exists because there are many lengths and
12 // angles of interest in a trapezoidal polyhedron,
13 // and it makes more sense to put them in one place.
14 //
15 //
16 // Our naming convention is as follows: lower case abcdh at +Z
17 // upper case ABCDH at -Z
18 // L = full length in Z
19 // a1, a4 = angles at vertices 1,4
20 // hXx = perp distance between X, x
21 // (x15,y15) = coord of v5 wrt v1
22 // B
23 // 6____________________________________________________________________ 7
24 // \ /\ /
25 // \ | /
26 // \ hBb b /
27 // \ 2 _____\/__________________________ 3 /
28 // \ \ /\ / /
29 // \ \ | / /
30 // \ \ | / /
31 // \ \ | / /
32 // D \ d \ h / c / C Y
33 // \ \ | / / ^
34 // \ \ a1 | / / |
35 // \ \______\/__/ / |
36 // \ 1/\ a 4 / |
37 // \ | / |_____ X
38 // \ | / /
39 // \ y15=hAa / /
40 // \ | a4 / /
41 // \__\/___________/ Z (out of page)
42 // 5 | | A 8
43 // --->|x15|<----
44 //
45 //
46 // Specifying the minimal parameters for a GEANT TRAP
47 // requires 9 numbers, *NOT* 11 as used in GEANT or DDD.
48 //
49 // We choose the following 9:
50 // L/2, a/2, b/2, h/2, a1, A/2, H/2, hAa, x15
51 // In GEANT these correspond to
52 // dz, bl2, tl2, h2, -, bl1, h1, -, -
53 //
54 // Author: Brian K. Heltsley
55 // Created: Wed Aug 12 09:25:08 EDT 1998
56 
57 #include <vector>
58 #include <CLHEP/Geometry/Point3D.h>
59 
61 
63 {
64  public:
65 
68 
69  EcalTrapezoidParameters( TPFloat aHalfLengthXNegZLoY , // bl1, A/2
70  TPFloat aHalfLengthXPosZLoY , // bl2, a/2
71  TPFloat aHalfLengthXPosZHiY , // tl2, b/2
72  TPFloat aHalfLengthYNegZ , // h1, H/2
73  TPFloat aHalfLengthYPosZ , // h2, h/2
74  TPFloat aHalfLengthZ , // dz, L/2
75  TPFloat aAngleAD , // alfa1
76  TPFloat aCoord15X , // x15
77  TPFloat aCoord15Y // y15
78  );
79 
80  // GEANT parameters, in order
81  TPFloat dz() const ;
82  TPFloat theta() const ;
83  TPFloat phi() const ;
84  TPFloat h1() const ;
85  TPFloat bl1() const ;
86  TPFloat tl1() const ;
87  TPFloat alp1() const ;
88  TPFloat h2() const ;
89  TPFloat bl2() const ;
90  TPFloat tl2() const ;
91  TPFloat alp2() const ;
92 
93  // everything else
94  TPFloat x15() const ;
95  TPFloat y15() const ;
96  TPFloat hAa() const ;
97  TPFloat hBb() const ;
98  TPFloat hCc() const ;
99  TPFloat hDd() const ;
100  TPFloat a1() const ;
101  TPFloat a4() const ;
102 
103  TPFloat L() const ;
104  TPFloat a() const ;
105  TPFloat b() const ;
106  TPFloat c() const ;
107  TPFloat d() const ;
108  TPFloat h() const ;
109  TPFloat A() const ;
110  TPFloat B() const ;
111  TPFloat C() const ;
112  TPFloat D() const ;
113  TPFloat H() const ;
114 
115  VertexList vertexList() const ; // order is as in picture above: index=vtx-1
116 
117  EcalTrapezoidParameters() = delete;
120 
121  private:
122 
127 };
128 
129 #endif /* ECALCOMMONDATA_ECALTRAPEZOIDPARAMETERS_H */
EcalTrapezoidParameters()=delete
std::vector< Pt3D > Pt3DVec
CaloCellGeometry::CCGFloat TPFloat
const EcalTrapezoidParameters & operator=(const EcalTrapezoidParameters &)=delete
CaloCellGeometry::Pt3DVec VertexList