33 startAngle = nArgs[
"startAngle"];
34 stepAngle = nArgs[
"stepAngle"];
35 zoffset = nArgs[
"zoffset"];
37 startCopyNo =
int (nArgs[
"startCopyNo"]);
38 incrCopyNo =
int (nArgs[
"incrCopyNo"]);
41 <<
"DDMuonAngular: Parameters for positioning-- " <<
n 44 << zoffset <<
"\tStart and inremental copy nos " 45 << startCopyNo <<
", " << incrCopyNo;
47 rotns = sArgs[
"RotNameSpace"];
49 childName = sArgs[
"ChildName"];
52 <<
"DDMuonAngular debug: Parent " <<
parent().name()
53 <<
"\tChild " << childName <<
"\tNameSpace " 54 << idNameSpace <<
"\tRotation Namespace " << rotns;
60 double phi = startAngle;
61 int copyNo = startCopyNo;
66 if (phitmp >= 2._pi) phitmp -= 2._pi;
76 <<
"DDMuonAngular: Creating a new rotation " 77 <<
DDName(rotstr, idNameSpace) <<
"\t90, " 81 rotation =
DDrot(
DDName(rotstr, rotns), 90._deg, phitmp, 90._deg, 90._deg + phitmp, 0., 0.);
88 cpv.
position(
DDName(childName,idNameSpace), parentName, copyNo, tran, rotation);
91 <<
"DDMuonAngular: " <<
DDName(childName, idNameSpace) <<
" number " 92 << copyNo <<
" positioned in " << parentName
93 <<
" at " << tran <<
" with " << rotstr <<
" " <<
rotation;
DDName is used to identify DDD entities uniquely.
constexpr NumType convertRadToDeg(NumType radians)
static std::string & ns()
Compact representation of the geometrical detector hierarchy.
~DDMuonAngular() override
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
Represents a uniquely identifyable rotation matrix.
void execute(DDCompactView &cpv) override
Abs< T >::type abs(const T &t)
std::string formatAsDegrees(double radianVal)
void position(const DDLogicalPart &self, const DDLogicalPart &parent, const std::string ©no, const DDTranslation &trans, const DDRotation &rot, const DDDivision *div=0)
void initialize(const DDNumericArguments &nArgs, const DDVectorArguments &vArgs, const DDMapArguments &mArgs, const DDStringArguments &sArgs, const DDStringVectorArguments &vsArgs) override