15 #include "CLHEP/Units/GlobalSystemOfUnits.h" 28 dphi = nArgs[
"deltaPhi"];
29 LogDebug(
"BHMGeom") <<
"DDBHMAngular debug: Parameters for positioning-- " <<
units <<
" copies at radius " 30 <<
rr / CLHEP::cm <<
" cm with delta(phi) " <<
dphi / CLHEP::deg;
32 rotMat = sArgs[
"Rotation"];
35 <<
"\tRotation matrix " <<
rotMat;
43 if (rotstr !=
"NULL") {
49 double driverX(0), driverY(0), driverZ(0);
52 driverY =
sqrt(
rr *
rr - driverX * driverX);
53 }
else if (
jj == 16) {
55 driverY = -
sqrt(
rr *
rr - driverX * driverX);
56 }
else if (
jj == 17) {
58 driverY = -
sqrt(
rr *
rr - driverX * driverX);
59 }
else if (
jj == 18) {
61 driverY = -
sqrt(
rr *
rr - driverX * driverX);
62 }
else if (
jj == 19) {
64 driverY = -
sqrt(
rr *
rr - driverX * driverX);
68 cpv.
position(child, parentName,
jj + 1, tran, rot);
69 LogDebug(
"BHMGeom") <<
"DDBHMAngular test: " << child <<
" number " <<
jj + 1 <<
" positioned in " << parentName
70 <<
" at " << tran <<
" with " <<
rot;
void initialize(const DDNumericArguments &nArgs, const DDVectorArguments &vArgs, const DDMapArguments &mArgs, const DDStringArguments &sArgs, const DDStringVectorArguments &vsArgs) override
DDName is used to identify DDD entities uniquely.
Compact representation of the geometrical detector hierarchy.
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
Represents a uniquely identifyable rotation matrix.
U second(std::pair< T, U > const &p)
Cos< T >::type cos(const T &t)
void position(const DDLogicalPart &self, const DDLogicalPart &parent, const std::string ©no, const DDTranslation &trans, const DDRotation &rot, const DDDivision *div=0)
void execute(DDCompactView &cpv) override
std::pair< std::string, std::string > DDSplit(const std::string &n)
split into (name,namespace), separator = ':'
ROOT::Math::Rotation3D DDRotation