DetectorDescription
Core
src
Tubs.cc
Go to the documentation of this file.
1
#include "
DetectorDescription/Core/src/Tubs.h
"
2
3
#include <cmath>
4
#include <vector>
5
6
#include "
DetectorDescription/Core/interface/DDSolidShapes.h
"
7
#include "
DataFormats/Math/interface/GeantUnits.h
"
8
#include "
DetectorDescription/Core/src/Solid.h
"
9
10
using
std::fabs;
11
using namespace
geant_units::operators
;
12
13
DDI::Tubs::Tubs
(
double
zhalf,
double
rIn,
double
rOut,
double
startPhi,
double
deltaPhi
) :
Solid
(
DDSolidShape
::
ddtubs
) {
14
p_
.emplace_back(zhalf);
15
p_
.emplace_back(rIn);
16
p_
.emplace_back(rOut);
17
p_
.emplace_back(startPhi);
18
p_
.emplace_back(
deltaPhi
);
19
}
20
21
void
DDI::Tubs::stream
(std::ostream& os)
const
{
22
os <<
" zhalf="
<<
convertMmToCm
(p_[0]) <<
" rIn="
<<
convertMmToCm
(p_[1]) <<
" rOut="
<<
convertMmToCm
(p_[2])
23
<<
" startPhi="
<<
convertRadToDeg
(p_[3]) <<
" deltaPhi="
<<
convertRadToDeg
(p_[4]);
24
}
25
26
double
DDI::Tubs::volume
()
const
{
27
double
volume = 0;
28
double
z = 2. * p_[0];
29
double
rIn = p_[1];
30
double
rOut = p_[2];
31
double
phi = p_[4];
32
33
double
volume1 = 1_pi * rIn * rIn * z;
34
double
volume2 = 1_pi * rOut * rOut * z;
35
36
double
slice
= fabs(phi / (2_pi));
37
38
volume =
slice
* (volume2 - volume1);
39
40
return
volume;
41
}
DDSolidShapes.h
DDSolidShape
DDSolidShape
Definition:
DDSolidShapes.h:6
Tubs.h
angle_units::operators::convertRadToDeg
constexpr NumType convertRadToDeg(NumType radians)
Definition:
angle_units.h:21
geant_units::operators
Definition:
GeantUnits.h:18
DDI::Tubs::Tubs
Tubs(double zhalf, double rIn, double rOut, double startPhi, double deltaPhi)
Definition:
Tubs.cc:13
Solid.h
DDSolidShape::ddtubs
SiPixelRawToDigiRegional_cfi.deltaPhi
deltaPhi
Definition:
SiPixelRawToDigiRegional_cfi.py:9
DDI::Tubs::volume
double volume() const override
Definition:
Tubs.cc:26
GeantUnits.h
DDI::Solid
Definition:
Solid.h:10
geant_units::operators::convertMmToCm
constexpr NumType convertMmToCm(NumType millimeters)
Definition:
GeantUnits.h:62
mergeAndRegister.slice
slice
Definition:
mergeAndRegister.py:121
DDI::Tubs::stream
void stream(std::ostream &) const override
Definition:
Tubs.cc:21
DDI::Solid::p_
std::vector< double > p_
Definition:
Solid.h:30
Generated for CMSSW Reference Manual by
1.8.16