test
Main Page
Namespaces
Classes
Package Documentation
GIT Directory
WorkBook
Offline Guide
Release schedule
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Pages
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
SiPixelRawToDigiRegional_cfi.deltaPhi
tuple deltaPhi
Definition:
SiPixelRawToDigiRegional_cfi.py:9
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
Generated for CMSSW Reference Manual by
1.8.5