66 startAngle = nArgs[
"startAngle"];
67 rangeAngle = nArgs[
"rangeAngle"];
68 shiftX = nArgs[
"shiftX"];
69 shiftY = nArgs[
"shiftY"];
70 zoffset = nArgs[
"zoffset"];
72 startCopyNo =
int(nArgs[
"startCopyNo"]);
73 incrCopyNo =
int(nArgs[
"incrCopyNo"]);
77 <<
convertRadToDeg(startAngle) <<
"\tShifts " << shiftX <<
", " << shiftY
78 <<
" along x, y axes; \tZoffest " << zoffset <<
"\tStart and inremental copy nos " 79 << startCopyNo <<
", " << incrCopyNo;
81 rotns = sArgs[
"RotNameSpace"];
83 childName = sArgs[
"ChildName"];
86 edm::LogVerbatim(
"HCalGeom") <<
"DDHCalAngular: Parent " << parentName <<
"\tChild " << childName <<
"\tNameSpace " 87 << idNameSpace <<
"\tRotation Namespace " << rotns;
92 double dphi = rangeAngle /
n;
93 double phix = startAngle;
94 int copyNo = startCopyNo;
95 double theta = 90._deg;
96 for (
int ii = 0;
ii <
n;
ii++) {
97 double phiy = phix + 90._deg;
101 static const double tol = 0.1;
107 edm::LogVerbatim(
"HCalGeom") <<
"DDHCalAngular: Creating a rotation " <<
DDName(rotstr, idNameSpace) <<
"\t90, " 114 double xpos = shiftX *
cos(phix) - shiftY *
sin(phix);
115 double ypos = shiftX *
sin(phix) + shiftY *
cos(phix);
121 edm::LogVerbatim(
"HCalGeom") <<
"DDHCalAngular: " <<
DDName(childName, idNameSpace) <<
" number " << copyNo
122 <<
" positioned in " << parentName <<
" at " << tran <<
" with " <<
rotation;
125 copyNo += incrCopyNo;
Log< level::Info, true > LogVerbatim
static AlgebraicMatrix initialize()
void position(const DDLogicalPart &self, const DDLogicalPart &parent, const std::string ©no, const DDTranslation &trans, const DDRotation &rot, const DDDivision *div=nullptr)
constexpr NumType convertRadToDeg(NumType radians)
Sin< T >::type sin(const T &t)
DDName is used to identify DDD entities uniquely.
static std::string & ns()
Compact representation of the geometrical detector hierarchy.
std::string formatAsDegreesInInteger(double radianVal)
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 initialize(const DDNumericArguments &nArgs, const DDVectorArguments &vArgs, const DDMapArguments &mArgs, const DDStringArguments &sArgs, const DDStringVectorArguments &vsArgs) override
~DDHCalAngular() override
#define DEFINE_EDM_PLUGIN(factory, type, name)
Geom::Theta< T > theta() const
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation