33 startAngle = nArgs[
"startAngle"];
34 rangeAngle = nArgs[
"rangeAngle"];
35 shiftX = nArgs[
"shiftX"];
36 shiftY = nArgs[
"shiftY"];
37 zoffset = nArgs[
"zoffset"];
39 startCopyNo =
int (nArgs[
"startCopyNo"]);
40 incrCopyNo =
int (nArgs[
"incrCopyNo"]);
43 <<
"-- " <<
n <<
" copies in " 46 << shiftX <<
", " << shiftY
47 <<
" along x, y axes; \tZoffest " << zoffset
48 <<
"\tStart and inremental copy nos " 49 << startCopyNo <<
", " << incrCopyNo;
51 rotns = sArgs[
"RotNameSpace"];
53 childName = sArgs[
"ChildName"];
57 <<
"\tChild " << childName <<
"\tNameSpace " 58 << idNameSpace <<
"\tRotation Namespace " 65 double dphi = rangeAngle/
n;
66 double phix = startAngle;
67 int copyNo = startCopyNo;
68 double theta = 90._deg;
70 double phiy = phix + 90._deg;
74 static const double tol = 0.1;
81 <<
DDName(rotstr, idNameSpace) <<
"\t90, " 85 rotation =
DDrot(
DDName(rotstr, rotns), theta, phix, theta, phiy, 0,0);
89 double xpos = shiftX*
cos(phix) - shiftY*
sin(phix);
90 double ypos = shiftX*
sin(phix) + shiftY*
cos(phix);
94 cpv.
position(
DDName(childName,idNameSpace),parentName,copyNo,tran,rotation);
97 <<
DDName(childName, idNameSpace)
98 <<
" number " << copyNo <<
" positioned in " 99 << parentName <<
" at " << tran <<
" with " 103 copyNo += incrCopyNo;
Sin< T >::type sin(const T &t)
Geom::Theta< T > theta() const
DDName is used to identify DDD entities uniquely.
constexpr NumType convertRadToDeg(NumType radians)
static std::string & ns()
Compact representation of the geometrical detector hierarchy.
std::string formatAsDegreesInInteger(double radianVal)
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
Represents a uniquely identifyable rotation matrix.
Cos< T >::type cos(const T &t)
Abs< T >::type abs(const T &t)
void execute(DDCompactView &cpv) override
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
~DDHCalAngular() override