CMS 3D CMS Logo

DDTotemAngular.cc
Go to the documentation of this file.
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);
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