Main Page
Namespaces
Namespace List
Namespace Members
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Functions
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Enumerations
a
b
c
d
e
f
g
h
i
j
k
l
m
o
p
q
r
s
t
u
v
w
z
Enumerator
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Classes
Class List
Class Index
Class Hierarchy
Class Members
All
:
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Functions
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Enumerations
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
Enumerator
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Properties
_
a
d
e
f
l
m
o
p
s
t
u
v
Related Functions
:
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
Package Documentation
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Modules
Pages
Geometry
TrackerCommonData
plugins
dd4hep
DDTrackerPhiAlgo.cc
Go to the documentation of this file.
1
#include "DD4hep/DetFactoryHelper.h"
2
#include "
DataFormats/Math/interface/CMSUnits.h
"
3
#include "
DetectorDescription/DDCMS/interface/DDPlugins.h
"
4
#include "
FWCore/MessageLogger/interface/MessageLogger.h
"
5
6
using namespace
std
;
7
using namespace
dd4hep
;
8
using namespace
cms
;
9
using namespace
cms_units::operators
;
10
11
static
long
algorithm
(
Detector
&
/* description */
,
cms::DDParsingContext
& ctxt, xml_h
e
) {
12
cms::DDNamespace
ns(ctxt,
e
,
true
);
13
DDAlgoArguments
args
(ctxt,
e
);
14
Volume
mother = ns.
volume
(
args
.parentName());
15
Volume
child
= ns.
volume
(
args
.childName());
16
int
startcn =
args
.find(
"StartCopyNo"
) ?
args
.value<
int
>(
"StartCopyNo"
) : 1;
17
int
incrcn =
args
.find(
"IncrCopyNo"
) ?
args
.value<
int
>(
"IncrCopyNo"
) : 1;
18
vector<double> phi =
args
.value<vector<double> >(
"Phi"
);
// Phi values
19
vector<double> zpos =
args
.value<vector<double> >(
"ZPos"
);
// Z positions
20
int
numcopies =
args
.find(
"NumCopies"
) ?
args
.value<
int
>(
"NumCopies"
) :
int
(phi.size());
21
double
radius
=
args
.value<
double
>(
"Radius"
);
22
double
tilt =
args
.value<
double
>(
"Tilt"
);
23
24
if
(numcopies !=
int
(phi.size())) {
25
LogDebug
(
"TrackerGeom"
) <<
"error: Parameter "
26
<<
"NumCopies does not agree with the size "
27
<<
"of the Phi vector. It was adjusted to "
28
<<
"be the size of the Phi vector and may "
29
<<
"lead to crashes or errors."
;
30
}
31
LogDebug
(
"TrackerGeom"
) <<
"debug: Parameters for position"
32
<<
"ing:: "
33
<<
" Radius "
<<
radius
<<
" Tilt "
<< tilt <<
" Copies "
<< phi.size() <<
" at"
;
34
for
(
int
i
= 0;
i
< (
int
)(phi.size());
i
++)
35
LogDebug
(
"TrackerGeom"
) <<
"\t["
<<
i
<<
"] phi = "
<< phi[
i
] <<
" z = "
<< zpos[
i
];
36
LogDebug
(
"TrackerGeom"
) <<
"debug: Parent "
<< mother.name() <<
"\tChild "
<<
child
.name() <<
" NameSpace "
37
<< ns.
name
();
38
39
double
theta
= 90._deg;
40
int
ci = startcn;
41
for
(
int
i
= 0;
i
< numcopies; ++
i
) {
42
double
phix = phi[
i
] + tilt;
43
double
phiy = phix + 90._deg;
44
double
xpos =
radius
*
cos
(phi[
i
]);
45
double
ypos =
radius
*
sin
(phi[
i
]);
46
Rotation3D
rot
=
makeRotation3D
(
theta
, phix,
theta
, phiy, 0., 0.);
47
Position
tran(xpos, ypos, zpos[
i
]);
48
/* PlacedVolume pv = */
mother.placeVolume(
child
, ci, Transform3D(
rot
, tran));
49
LogDebug
(
"TrackerGeom"
) <<
"test: "
<<
child
.name() <<
" number "
<< ci <<
" positioned in "
<< mother.name()
50
<<
" at "
<< tran <<
" with "
<<
rot
;
51
ci = ci + incrcn;
52
}
53
return
1;
54
}
55
56
// first argument is the type from the xml file
57
DECLARE_DDCMS_DETELEMENT
(DDCMS_track_DDTrackerPhiAlgo,
algorithm
)
writedatasetfile.args
args
Definition:
writedatasetfile.py:18
mps_fire.i
i
Definition:
mps_fire.py:428
cms_units::operators
Definition:
CMSUnits.h:13
MessageLogger.h
DECLARE_DDCMS_DETELEMENT
#define DECLARE_DDCMS_DETELEMENT(name, func)
Definition:
DDPlugins.h:25
cms::DDParsingContext
Definition:
DDParsingContext.h:13
cms::DDNamespace
Definition:
DDNamespace.h:16
cms::makeRotation3D
DDRotationMatrix makeRotation3D(double thetaX, double phiX, double thetaY, double phiY, double thetaZ, double phiZ)
Definition:
DDAlgoArguments.cc:20
funct::sin
Sin< T >::type sin(const T &t)
Definition:
Sin.h:22
funct::cos
Cos< T >::type cos(const T &t)
Definition:
Cos.h:22
theta
Geom::Theta< T > theta() const
Definition:
Basic3DVectorLD.h:150
PixelTestBeamValidation_cfi.Position
Position
Definition:
PixelTestBeamValidation_cfi.py:75
cms::Volume
dd4hep::Volume Volume
Definition:
DDFilteredView.h:47
LogDebug
#define LogDebug(id)
Definition:
MessageLogger.h:233
DDPlugins.h
createfilelist.int
int
Definition:
createfilelist.py:10
algorithm
static long algorithm(Detector &, cms::DDParsingContext &ctxt, xml_h e)
Definition:
DDTrackerPhiAlgo.cc:11
cms::DDAlgoArguments
Definition:
DDAlgoArguments.h:28
align::Detector
Definition:
StructureType.h:92
std
Definition:
JetResolutionObject.h:76
dd4hep
Definition:
DDPlugins.h:8
makeMuonMisalignmentScenario.rot
rot
Definition:
makeMuonMisalignmentScenario.py:322
CosmicsPD_Skims.radius
radius
Definition:
CosmicsPD_Skims.py:135
CMSUnits.h
child
Definition:
simpleInheritance.h:11
cms::DDNamespace::name
std::string_view name() const
Definition:
DDNamespace.h:72
cms::DDNamespace::volume
dd4hep::Volume volume(const std::string &name, bool exc=true) const
Definition:
DDNamespace.cc:205
cms
Namespace of DDCMS conversion namespace.
Definition:
ProducerAnalyzer.cc:21
MillePedeFileConverter_cfg.e
e
Definition:
MillePedeFileConverter_cfg.py:37
Generated for CMSSW Reference Manual by
1.8.16