Geometry
TrackerCommonData
plugins
dd4hep
DDTECPhiAlgo.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
double
startAngle =
args
.value<
double
>(
"StartAngle"
);
//Start angle
17
double
incrAngle =
args
.value<
double
>(
"IncrAngle"
);
//Increment in angle
18
double
zIn =
args
.value<
double
>(
"ZIn"
);
//z position for the even ones
19
double
zOut =
args
.value<
double
>(
"ZOut"
);
//z position for the odd ones
20
int
number
=
args
.value<
double
>(
"Number"
);
//Number of copies
21
int
startCopyNo =
args
.find(
"StartCopyNo"
) ?
args
.value<
int
>(
"StartCopyNo"
) : 1;
//Start copy number
22
int
incrCopyNo =
args
.find(
"IncrCopyNo"
) ?
args
.value<
int
>(
"IncrCopyNo"
) : 1;
//Increment in copy number
23
24
LogDebug
(
"TECGeom"
) <<
"debug: Parameters for "
25
<<
"positioning--"
26
<<
"\tStartAngle "
<<
convertRadToDeg
(startAngle) <<
"\tIncrAngle "
<<
convertRadToDeg
(incrAngle)
27
<<
"\tZ in/out "
<< zIn <<
", "
<< zOut <<
"\tCopy Numbers "
<<
number
<<
" Start/Increment "
28
<< startCopyNo <<
", "
<< incrCopyNo;
29
LogDebug
(
"TECGeom"
) <<
"debug: Parent "
<< mother.name() <<
"\tChild "
<<
child
.name() <<
" NameSpace "
<< ns.
name
();
30
31
if
(
number
> 0) {
32
double
theta
= 90._deg;
33
int
copyNo = startCopyNo;
34
for
(
int
i
= 0;
i
<
number
;
i
++) {
35
double
phix = startAngle +
i
* incrAngle;
36
double
phiy = phix + 90._deg;
37
Rotation3D
rotation
=
makeRotation3D
(
theta
, phix,
theta
, phiy, 0, 0);
38
Position
tran(0., 0., (
i
% 2 == 0) ? zIn : zOut);
39
/* PlacedVolume pv = */
mother.placeVolume(
child
, copyNo, Transform3D(
rotation
, tran));
40
LogDebug
(
"TECGeom"
) <<
"test: "
<<
child
.name() <<
" number "
<< copyNo <<
" positioned in "
<< mother.name()
41
<<
" at "
<< tran <<
" with "
<<
rotation
;
42
copyNo += incrCopyNo;
43
}
44
}
45
return
1;
46
}
47
48
// first argument is the type from the xml file
49
DECLARE_DDCMS_DETELEMENT
(DDCMS_track_DDTECPhiAlgo,
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
algorithm
static long algorithm(Detector &, cms::DDParsingContext &ctxt, xml_h e)
Definition:
DDTECPhiAlgo.cc:11
cms::DDParsingContext
Definition:
DDParsingContext.h:13
angle_units::operators::convertRadToDeg
constexpr NumType convertRadToDeg(NumType radians)
Definition:
angle_units.h:21
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
contentValuesFiles.number
number
Definition:
contentValuesFiles.py:53
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
idealTransformation.rotation
dictionary rotation
Definition:
idealTransformation.py:1
DDPlugins.h
cms::DDAlgoArguments
Definition:
DDAlgoArguments.h:28
align::Detector
Definition:
StructureType.h:92
std
Definition:
JetResolutionObject.h:76
dd4hep
Definition:
DDPlugins.h:8
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