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 */,
13  xml_h e,
14  dd4hep::SensitiveDetector& /* sens */) {
15  cms::DDNamespace ns(ctxt, e, true);
17  double startAngle = args.value<double>("startAngle");
18  double stepAngle = args.value<double>("stepAngle");
19  double zoffset = args.value<double>("zoffset");
20  double roffset = args.value<double>("roffset");
21  int n = args.value<int>("n");
22  int startCopyNo = args.value<int>("startCopyNo");
23  int incrCopyNo = args.value<int>("incrCopyNo");
24 #ifdef EDM_ML_DEBUG
25  edm::LogVerbatim("ForwardGeom") << "DDTotemAngular: Parameters for positioning-- " << n << " copies in steps of "
26  << convertRadToDeg(stepAngle) << " from " << convertRadToDeg(startAngle)
27  << " \tZoffset " << zoffset << " \tRoffset " << roffset
28  << "\tStart and inremental copy nos " << startCopyNo << ", " << incrCopyNo;
29 #endif
30  std::string childName = args.value<std::string>("ChildName");
31  dd4hep::Volume parent = ns.volume(args.parentName());
32  dd4hep::Volume child = ns.volume(ns.prepend(childName));
33 #ifdef EDM_ML_DEBUG
34  edm::LogVerbatim("ForwardGeom") << "DDTotemAngular debug: Parent " << parent.name() << "\tChild " << child.name();
35 #endif
36 
37  double phi = startAngle;
38  int copyNo = startCopyNo;
39 
40  for (int ii = 0; ii < n; ii++) {
41  Geom::Phi0To2pi<double> phitmp = phi;
42 #ifdef EDM_ML_DEBUG
43  edm::LogVerbatim("ForwardGeom") << "DDTotemAngular: Creating a new rotation \t90, "
44  << convertRadToDeg(phitmp + 90._deg) << ", 0, 0, 90, " << convertRadToDeg(phitmp);
45 #endif
46  dd4hep::Rotation3D rotation = cms::makeRotation3D(90._deg, 90._deg + phitmp, 0., 0., 90._deg, phitmp);
47  dd4hep::Position tran(roffset * cos(phi), roffset * sin(phi), zoffset);
48 
49  parent.placeVolume(child, copyNo, dd4hep::Transform3D(rotation, tran));
50 #ifdef EDM_ML_DEBUG
51  edm::LogVerbatim("ForwardGeom") << "DDTotemAngular: " << child.name() << " number " << copyNo << " positioned in "
52  << parent.name() << " at " << tran << " with " << rotation;
53 #endif
54  phi += stepAngle;
55  copyNo += incrCopyNo;
56  }
57  return 1;
58 }
59 
60 // first argument is the type from the xml file
61 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:30
cms::DDParsingContext
Definition: DDParsingContext.h:14
angle_units::operators::convertRadToDeg
constexpr NumType convertRadToDeg(NumType radians)
Definition: angle_units.h:21
cms::DDNamespace
Definition: DDNamespace.h:16
DDSplit.h
cms::makeRotation3D
dd4hep::Rotation3D 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
cms::DDNamespace::prepend
std::string prepend(const std::string &) const
Definition: DDNamespace.cc:66
PixelTestBeamValidation_cfi.Position
Position
Definition: PixelTestBeamValidation_cfi.py:62
algorithm
static long algorithm(dd4hep::Detector &, cms::DDParsingContext &ctxt, xml_h e, dd4hep::SensitiveDetector &)
Definition: DDTotemAngular.cc:11
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
cms::Volume
dd4hep::Volume Volume
Definition: DDFilteredView.h:45
idealTransformation.rotation
dictionary rotation
Definition: idealTransformation.py:1
GeantUnits.h
DDPlugins.h
edm::LogVerbatim
Definition: MessageLogger.h:297
Geom::Phi
Definition: Phi.h:52
cms::DDAlgoArguments
Definition: DDAlgoArguments.h:28
align::Detector
Definition: StructureType.h:86
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:190
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37