Main Page
Namespaces
Classes
Package Documentation
DetectorDescription
Core
src
Cons.cc
Go to the documentation of this file.
1
#include "
DetectorDescription/Core/src/Cons.h
"
2
3
#include <cmath>
4
#include <ostream>
5
#include <vector>
6
7
#include "CLHEP/Units/GlobalPhysicalConstants.h"
8
#include "CLHEP/Units/GlobalSystemOfUnits.h"
9
#include "CLHEP/Units/SystemOfUnits.h"
10
#include "
DetectorDescription/Core/interface/DDSolidShapes.h
"
11
#include "
DetectorDescription/Core/src/Solid.h
"
12
13
DDI::Cons::Cons
(
double
zhalf,
14
double
rInMinusZ,
15
double
rOutMinusZ,
16
double
rInPlusZ,
17
double
rOutPlusZ,
18
double
startPhi,
19
double
deltaPhi
)
20
:
Solid
(
ddcons
)
21
{
22
p_
.push_back(zhalf);
23
p_
.push_back(rInMinusZ);
24
p_
.push_back(rOutMinusZ);
25
p_
.push_back(rInPlusZ);
26
p_
.push_back(rOutPlusZ);
27
p_
.push_back(startPhi);
28
p_
.push_back(deltaPhi);
29
30
}
31
32
33
void
DDI::Cons::stream
(std::ostream & os)
const
34
{
35
os <<
" zhalf="
<<
p_
[0]/cm
36
<<
" rIn-Z="
<<
p_
[1]/cm
37
<<
" rOut-Z="
<<
p_
[2]/cm
38
<<
" rIn+Z="
<<
p_
[3]/cm
39
<<
" rOut+Z="
<<
p_
[4]/cm
40
<<
" startPhi="
<<
p_
[5]/deg
41
<<
" deltaPhi="
<<
p_
[6]/deg;
42
}
43
44
double
DDI::Cons::volume
()
const
45
{
46
/* zhalf is the half length of the cone,
47
phiTo is always clockwise rotated from phiFrom
48
rInMinusZ is always smaller than rOutMinusZ (same for r*PlusZ)
49
They are the distances relative to the rotation axes */
50
51
/* calculation normalize from 0 to z */
52
53
/* The function f=rInMinusZ+((rInPlusZ-rInMinusZ)/z)*x defines
54
the radius of the the rotation from 0 to z. Raised to the power
55
of 2 integrated on x from 0 to z. Multiplied by pi, gives the
56
volume that needs to substracted from the other volume */
57
58
/* f^2=rInMinusZ*rInMinusZ+2*rInMinusZ*((rInPlusZ-rInMinusZ)/z)*x+((rInPlusZ-rInMinusZ)*(rInPlusZ-rInMinusZ)*x*x)/(z*z) */
59
60
/* primitive of f^2 is: rInMinusZ*rInMinusZ*x+rInMinusZ*((rInPlusZ-rInMinusZ)/z)*(x*x)+(rInPlusZ-rInMinusZ)*(rInPlusZ-rInMinusZ)*(x*x*x)/(3*z*z) */
61
62
/*integration from 0 to z yields: pi*( rInMinusZ*rInMinusZ*z+rInMinusZ*(rInPlusZ-rInMinusZ)*z+((rInPlusZ-rInMinusZ)*(rInPlusZ-rInMinusZ)*z)/(3) ) */
63
64
double
zhalf=
p_
[0];
65
double
rInMinusZ=
p_
[1];
66
double
rOutMinusZ=
p_
[2];
67
double
rInPlusZ=
p_
[3];
68
double
rOutPlusZ=
p_
[4];
69
//double phiFrom=p_[5]/rad;
70
double
deltaPhi
=fabs(
p_
[6]/rad);
71
double
z=2*zhalf;
72
73
double
volume1=
pi
*(rInPlusZ*rInPlusZ+rInMinusZ*rInMinusZ+rInMinusZ*rInPlusZ)*z/3;
74
75
double
volume2=
pi
*(rOutPlusZ*rOutPlusZ+rOutMinusZ*rOutMinusZ+rOutMinusZ*rOutPlusZ)*z/3;
76
77
double
slice=deltaPhi/(2*
pi
);
78
double
volume
=slice*(volume2-volume1);
79
80
return
volume
;
81
82
}
83
84
pi
const Double_t pi
Definition:
trackSplitPlot.h:35
DDI::Cons::Cons
Cons(double zhalf, double rInMinusZ, double rOutMinusZ, double rInPlusZ, double rOutPlusZ, double startPhi, double deltaPhi)
Definition:
Cons.cc:13
ddcons
Definition:
DDSolidShapes.h:7
DDSolidShapes.h
Solid.h
Cons.h
DDI::Cons::stream
void stream(std::ostream &) const
Definition:
Cons.cc:33
DDI::Cons::volume
double volume() const
Definition:
Cons.cc:44
DDI::Solid
Definition:
Solid.h:10
DDI::Solid::p_
std::vector< double > p_
Definition:
Solid.h:32
MuonCkfTrajectoryBuilder_cfi.deltaPhi
deltaPhi
Definition:
MuonCkfTrajectoryBuilder_cfi.py:27
Generated for CMSSW Reference Manual by
1.8.11