CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Trap.cc
Go to the documentation of this file.
3 
4 #include <cmath>
5 #include <vector>
6 
9 
10 using std::sqrt;
11 using namespace geant_units::operators;
12 
13 DDI::Trap::Trap(double pDz,
14  double pTheta,
15  double pPhi,
16  double pDy1,
17  double pDx1,
18  double pDx2,
19  double pAlp1,
20  double pDy2,
21  double pDx3,
22  double pDx4,
23  double pAlp2)
25  p_.emplace_back(pDz); // ......... 0
26  p_.emplace_back(pTheta); // .. 1
27  p_.emplace_back(pPhi); // ....... 2
28  p_.emplace_back(pDy1); // ........ 3
29  p_.emplace_back(pDx1); // ........ 4
30  p_.emplace_back(pDx2); // ........ 5
31  p_.emplace_back(pAlp1); // ....... 6
32  p_.emplace_back(pDy2); // ........ 7
33  p_.emplace_back(pDx3); // ......... 8
34  p_.emplace_back(pDx4); // ........ 9
35  p_.emplace_back(pAlp2);
36 }
37 
38 void DDI::Trap::stream(std::ostream& os) const {
39  os << " dz=" << convertMmToCm(p_[0]) << " theta=" << convertRadToDeg(p_[1]) << " phi=" << convertRadToDeg(p_[2])
40  << " dy1=" << convertMmToCm(p_[3]) << " dx1=" << convertMmToCm(p_[4]) << " dx2=" << convertMmToCm(p_[5])
41  << " alpha1=" << convertRadToDeg(p_[6]) << " dy2=" << convertMmToCm(p_[7]) << " dx3=" << convertMmToCm(p_[8])
42  << " dx4=" << convertMmToCm(p_[9]) << " alpha2=" << convertRadToDeg(p_[10]);
43 }
44 
45 double DDI::Trap::volume() const {
46  double volume = 0;
47 
48  double dz = p_[0] * 2.;
49  double dy1 = p_[3] * 2.;
50  double dx1 = p_[4] * 2.;
51  double dx2 = p_[5] * 2.;
52  double dy2 = p_[7] * 2.;
53  double dx3 = p_[8] * 2.;
54  double dx4 = p_[9] * 2.;
55 
56  volume = ((dx1 + dx2 + dx3 + dx4) * (dy1 + dy2) + (dx4 + dx3 - dx2 - dx1) * (dy2 - dy1) / 3) * dz * 0.125;
57 
58  return volume;
59 }
constexpr NumType convertRadToDeg(NumType radians)
Definition: angle_units.h:21
Trap(double pDz, double pTheta, double pPhi, double pDy1, double pDx1, double pDx2, double pAlp1, double pDy2, double pDx3, double pDx4, double pAlp2)
Definition: Trap.cc:13
double volume() const override
Definition: Trap.cc:45
T sqrt(T t)
Definition: SSEVec.h:19
constexpr NumType convertMmToCm(NumType millimeters)
Definition: angle_units.h:44
DDSolidShape
Definition: DDSolidShapes.h:6
std::vector< double > p_
Definition: Solid.h:30
void stream(std::ostream &) const override
Definition: Trap.cc:38