CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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 public:
66 
67  EcalTrapezoidParameters(TPFloat aHalfLengthXNegZLoY, // bl1, A/2
68  TPFloat aHalfLengthXPosZLoY, // bl2, a/2
69  TPFloat aHalfLengthXPosZHiY, // tl2, b/2
70  TPFloat aHalfLengthYNegZ, // h1, H/2
71  TPFloat aHalfLengthYPosZ, // h2, h/2
72  TPFloat aHalfLengthZ, // dz, L/2
73  TPFloat aAngleAD, // alfa1
74  TPFloat aCoord15X, // x15
75  TPFloat aCoord15Y // y15
76  );
77 
78  // GEANT parameters, in order
79  TPFloat dz() const;
80  TPFloat theta() const;
81  TPFloat phi() const;
82  TPFloat h1() const;
83  TPFloat bl1() const;
84  TPFloat tl1() const;
85  TPFloat alp1() const;
86  TPFloat h2() const;
87  TPFloat bl2() const;
88  TPFloat tl2() const;
89  TPFloat alp2() const;
90 
91  // everything else
92  TPFloat x15() const;
93  TPFloat y15() const;
94  TPFloat hAa() const;
95  TPFloat hBb() const;
96  TPFloat hCc() const;
97  TPFloat hDd() const;
98  TPFloat a1() const;
99  TPFloat a4() const;
100 
101  TPFloat L() const;
102  TPFloat a() const;
103  TPFloat b() const;
104  TPFloat c() const;
105  TPFloat d() const;
106  TPFloat h() const;
107  TPFloat A() const;
108  TPFloat B() const;
109  TPFloat C() const;
110  TPFloat D() const;
111  TPFloat H() const;
112 
113  VertexList vertexList() const; // order is as in picture above: index=vtx-1
114 
115  EcalTrapezoidParameters() = delete;
118 
119 private:
124 };
125 
126 #endif /* ECALCOMMONDATA_ECALTRAPEZOIDPARAMETERS_H */
EcalTrapezoidParameters()=delete
std::vector< Pt3D > Pt3DVec
CaloCellGeometry::CCGFloat TPFloat
const EcalTrapezoidParameters & operator=(const EcalTrapezoidParameters &)=delete
CaloCellGeometry::Pt3DVec VertexList