Geometry
ForwardCommonData
plugins
dd4hep
DDTotemAngular.cc
Go to the documentation of this file.
1
#include "
DataFormats/GeometryVector/interface/Phi.h
"
2
#include "
DataFormats/Math/interface/GeantUnits.h
"
3
#include "
DetectorDescription/Core/interface/DDSplit.h
"
4
#include "
DetectorDescription/DDCMS/interface/DDPlugins.h
"
5
#include "
FWCore/MessageLogger/interface/MessageLogger.h
"
6
#include "DD4hep/DetFactoryHelper.h"
7
8
//#define EDM_ML_DEBUG
9
using namespace
geant_units::operators
;
10
11
static
long
algorithm
(
dd4hep::Detector
&
/* description */
,
cms::DDParsingContext
& ctxt, xml_h
e
) {
12
cms::DDNamespace
ns(ctxt,
e
,
true
);
13
cms::DDAlgoArguments
args
(ctxt,
e
);
14
double
startAngle =
args
.value<
double
>(
"startAngle"
);
15
double
stepAngle =
args
.value<
double
>(
"stepAngle"
);
16
double
zoffset =
args
.value<
double
>(
"zoffset"
);
17
double
roffset =
args
.value<
double
>(
"roffset"
);
18
int
n
=
args
.value<
int
>(
"n"
);
19
int
startCopyNo =
args
.value<
int
>(
"startCopyNo"
);
20
int
incrCopyNo =
args
.value<
int
>(
"incrCopyNo"
);
21
#ifdef EDM_ML_DEBUG
22
edm::LogVerbatim
(
"ForwardGeom"
) <<
"DDTotemAngular: Parameters for positioning-- "
<<
n
<<
" copies in steps of "
23
<<
convertRadToDeg
(stepAngle) <<
" from "
<<
convertRadToDeg
(startAngle)
24
<<
" \tZoffset "
<< zoffset <<
" \tRoffset "
<< roffset
25
<<
"\tStart and inremental copy nos "
<< startCopyNo <<
", "
<< incrCopyNo;
26
#endif
27
std::string
childName =
args
.value<
std::string
>(
"ChildName"
);
28
dd4hep::Volume
parent
= ns.
volume
(
args
.parentName());
29
dd4hep::Volume
child
= ns.
volume
(ns.
prepend
(childName));
30
#ifdef EDM_ML_DEBUG
31
edm::LogVerbatim
(
"ForwardGeom"
) <<
"DDTotemAngular debug: Parent "
<<
parent
.name() <<
"\tChild "
<<
child
.name();
32
#endif
33
34
double
phi = startAngle;
35
int
copyNo = startCopyNo;
36
37
for
(
int
ii
= 0;
ii
<
n
;
ii
++) {
38
Geom::Phi0To2pi<double>
phitmp = phi;
39
#ifdef EDM_ML_DEBUG
40
edm::LogVerbatim
(
"ForwardGeom"
) <<
"DDTotemAngular: Creating a new rotation \t90, "
41
<<
convertRadToDeg
(phitmp + 90._deg) <<
", 0, 0, 90, "
<<
convertRadToDeg
(phitmp);
42
#endif
43
dd4hep::Rotation3D
rotation
=
cms::makeRotation3D
(90._deg, 90._deg + phitmp, 0., 0., 90._deg, phitmp);
44
dd4hep::Position
tran(roffset *
cos
(phi), roffset *
sin
(phi), zoffset);
45
46
parent
.placeVolume(
child
, copyNo, dd4hep::Transform3D(
rotation
, tran));
47
#ifdef EDM_ML_DEBUG
48
edm::LogVerbatim
(
"ForwardGeom"
) <<
"DDTotemAngular: "
<<
child
.name() <<
" number "
<< copyNo <<
" positioned in "
49
<<
parent
.name() <<
" at "
<< tran <<
" with "
<<
rotation
;
50
#endif
51
phi += stepAngle;
52
copyNo += incrCopyNo;
53
}
54
return
1;
55
}
56
57
// first argument is the type from the xml file
58
DECLARE_DDCMS_DETELEMENT
(DDCMS_forward_DDTotemAngular,
algorithm
)
Phi.h
writedatasetfile.args
args
Definition:
writedatasetfile.py:18
MessageLogger.h
dqmiodumpmetadata.n
n
Definition:
dqmiodumpmetadata.py:28
DECLARE_DDCMS_DETELEMENT
#define DECLARE_DDCMS_DETELEMENT(name, func)
Definition:
DDPlugins.h:25
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
DDSplit.h
cms::makeRotation3D
DDRotationMatrix makeRotation3D(double thetaX, double phiX, double thetaY, double phiY, double thetaZ, double phiZ)
Definition:
DDAlgoArguments.cc:20
geant_units::operators
Definition:
GeantUnits.h:18
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
algorithm
static long algorithm(dd4hep::Detector &, cms::DDParsingContext &ctxt, xml_h e)
Definition:
DDTotemAngular.cc:11
cms::DDNamespace::prepend
std::string prepend(const std::string &) const
Definition:
DDNamespace.cc:60
PixelTestBeamValidation_cfi.Position
Position
Definition:
PixelTestBeamValidation_cfi.py:75
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition:
AlCaHLTBitMon_QueryRunRegistry.py:256
cms::Volume
dd4hep::Volume Volume
Definition:
DDFilteredView.h:47
idealTransformation.rotation
dictionary rotation
Definition:
idealTransformation.py:1
GeantUnits.h
DDPlugins.h
Geom::Phi
Definition:
Phi.h:52
cms::DDAlgoArguments
Definition:
DDAlgoArguments.h:28
align::Detector
Definition:
StructureType.h:86
edm::LogVerbatim
Log< level::Info, true > LogVerbatim
Definition:
MessageLogger.h:128
child
Definition:
simpleInheritance.h:11
class-composition.parent
parent
Definition:
class-composition.py:88
cuy.ii
ii
Definition:
cuy.py:590
cms::DDNamespace::volume
dd4hep::Volume volume(const std::string &name, bool exc=true) const
Definition:
DDNamespace.cc:205
MillePedeFileConverter_cfg.e
e
Definition:
MillePedeFileConverter_cfg.py:37
Generated for CMSSW Reference Manual by
1.8.16