CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
EcalTrapezoidParameters.h
Go to the documentation of this file.
1 #if !defined(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 // system include files
57 
58 // user include files
59 
60 #include <vector>
61 #include <CLHEP/Geometry/Point3D.h>
62 
64 
65 // forward declarations
66 
67 
69 {
70  // ---------- friend classes and functions ---------------
71  public:
72  // ---------- constants, enums and typedefs --------------
73 
75 
77 
78  // ---------- Constructors and destructor ----------------
79 
80  EcalTrapezoidParameters( TPFloat aHalfLengthXNegZLoY , // bl1, A/2
81  TPFloat aHalfLengthXPosZLoY , // bl2, a/2
82  TPFloat aHalfLengthXPosZHiY , // tl2, b/2
83  TPFloat aHalfLengthYNegZ , // h1, H/2
84  TPFloat aHalfLengthYPosZ , // h2, h/2
85  TPFloat aHalfLengthZ , // dz, L/2
86  TPFloat aAngleAD , // alfa1
87  TPFloat aCoord15X , // x15
88  TPFloat aCoord15Y // y15
89  ) ;
90 
91  //virtual ~EcalTrapezoidParameters() ;
92 
93  // ---------- member functions ---------------------------
94  // ---------- const member functions ---------------------
95 
96  // GEANT parameters, in order
97  TPFloat dz() const ;
98  TPFloat theta() const ;
99  TPFloat phi() const ;
100  TPFloat h1() const ;
101  TPFloat bl1() const ;
102  TPFloat tl1() const ;
103  TPFloat alp1() const ;
104  TPFloat h2() const ;
105  TPFloat bl2() const ;
106  TPFloat tl2() const ;
107  TPFloat alp2() const ;
108 
109  // everything else
110  TPFloat x15() const ;
111  TPFloat y15() const ;
112  TPFloat hAa() const ;
113  TPFloat hBb() const ;
114  TPFloat hCc() const ;
115  TPFloat hDd() const ;
116  TPFloat a1() const ;
117  TPFloat a4() const ;
118 
119  TPFloat L() const ;
120  TPFloat a() const ;
121  TPFloat b() const ;
122  TPFloat c() const ;
123  TPFloat d() const ;
124  TPFloat h() const ;
125  TPFloat A() const ;
126  TPFloat B() const ;
127  TPFloat C() const ;
128  TPFloat D() const ;
129  TPFloat H() const ;
130 
131  VertexList vertexList() const ; // order is as in picture above: index=vtx-1
132 
133  // ---------- static member functions --------------------
134  protected:
135  // ---------- protected member functions -----------------
136  // ---------- protected const member functions -----------
137  private:
138  // ---------- Constructors and destructor ----------------
140  EcalTrapezoidParameters( const EcalTrapezoidParameters& ); // stop default
141 
142  // ---------- assignment operator(s) ---------------------
143  const EcalTrapezoidParameters& operator=( const EcalTrapezoidParameters& ); // stop default
144 
145  // ---------- private member functions -------------------
146  // ---------- private const member functions -------------
147  // ---------- data members -------------------------------
148 
153 
154  // ---------- static data members ------------------------
155 };
156 
157 // inline function definitions
158 
159 #endif /* ECALCOMMONDATA_ECALTRAPEZOIDPARAMETERS_H */
CaloCellGeometry::Pt3DVec VertexList
std::vector< Pt3D > Pt3DVec
const EcalTrapezoidParameters & operator=(const EcalTrapezoidParameters &)
CaloCellGeometry::CCGFloat TPFloat