1 #include "DD4hep/DetFactoryHelper.h" 16 string iccName = args.
value<
string>(
"ICCName");
18 double startAngle = args.
value<
double>(
"StartAngle");
19 double rModule = args.
value<
double>(
"ModuleR");
20 vector<double> zModule = args.
value<vector<double> >(
"ModuleZ");
21 double rICC = args.
value<
double>(
"ICCR");
22 double sICC = args.
value<
double>(
"ICCShift");
23 vector<double> zICC = args.
value<vector<double> >(
"ICCZ");
25 LogDebug(
"TIDGeom") <<
"Parent " << mother.name() <<
"\tModule " << moduleName[0] <<
", " << moduleName[1] <<
"\tICC " 26 << iccName <<
"\tNameSpace " << ns.
name();
27 LogDebug(
"TIDGeom") <<
"Parameters for positioning--" 28 <<
" StartAngle " <<
convertRadToDeg(startAngle) <<
" Copy Numbers " << number <<
" Modules at R " 29 << rModule <<
" Z " << zModule[0] <<
", " << zModule[1] <<
" ICCs at R " << rICC <<
" Z " 30 << zICC[0] <<
", " << zICC[1];
31 double theta = 90._deg;
33 double dphi = 2_pi /
number;
41 double phiz = startAngle +
i * dphi;
42 double xpos = rModule *
cos(phiz);
43 double ypos = rModule *
sin(phiz);
44 double zpos, thetay, phix;
47 phix = phiz + 90._deg;
52 phix = phiz - 90._deg;
59 phix = phix - 180._deg;
60 thetay = thetay + 180._deg;
62 Position trmod(xpos, ypos, zpos);
65 mother.placeVolume(module,
i + 1, Transform3D(rotation, trmod));
66 LogDebug(
"TIDGeom") << module.name() <<
" number " <<
i + 1 <<
" positioned in " << mother.name() <<
" at " << trmod
71 xpos = rICC *
cos(phiz) + sICC *
sin(phiz);
72 ypos = rICC *
sin(phiz) - sICC *
cos(phiz);
75 xpos = rICC *
cos(phiz) - sICC *
sin(phiz);
76 ypos = rICC *
sin(phiz) + sICC *
cos(phiz);
79 Position tricc(xpos, ypos, zpos);
80 mother.placeVolume(icc,
i + 1, Transform3D(rotation, tricc));
81 LogDebug(
"TIDGeom") << iccName <<
" number " <<
i + 1 <<
" positioned in " << mother.name() <<
" at " << tricc
dd4hep::Volume volume(const std::string &name, bool exc=true) const
static long algorithm(Detector &, cms::DDParsingContext &ctxt, xml_h e, SensitiveDetector &)
constexpr NumType convertRadToDeg(NumType radians)
Sin< T >::type sin(const T &t)
T value(const std::string &name) const
Geom::Theta< T > theta() const
dd4hep::Rotation3D makeRotation3D(double thetaX, double phiX, double thetaY, double phiY, double thetaZ, double phiZ)
std::string_view name() const
Cos< T >::type cos(const T &t)
Namespace of DDCMS conversion namespace.
#define DECLARE_DDCMS_DETELEMENT(name, func)
std::string parentName() const
Access value of rParent child node.