17 using namespace geant_units::operators;
59 startAngle_ = nArgs[
"startAngle"];
60 stepAngle_ = nArgs[
"stepAngle"];
61 zoffset_ = nArgs[
"zoffset"];
62 roffset_ = nArgs[
"roffset"];
64 startCopyNo_ = int(nArgs[
"startCopyNo"]);
65 incrCopyNo_ = int(nArgs[
"incrCopyNo"]);
67 edm::LogVerbatim(
"ForwardGeom") <<
"DDTotemAngular: Parameters for positioning-- " << n_ <<
" copies in steps of "
69 <<
" \tZoffset " << zoffset_ <<
" \tRoffset " << roffset_
70 <<
"\tStart and inremental copy nos " << startCopyNo_ <<
", " << incrCopyNo_;
72 rotns_ = sArgs[
"RotNameSpace"];
74 childName_ = sArgs[
"ChildName"];
76 edm::LogVerbatim(
"ForwardGeom") <<
"DDTotemAngular debug: Parent " <<
parent().name() <<
"\tChild " << childName_
77 <<
"\tNameSpace " << idNameSpace_ <<
"\tRotation Namespace " << rotns_;
82 double phi = startAngle_;
83 int copyNo = startCopyNo_;
85 for (
int ii = 0;
ii < n_;
ii++) {
98 rotation =
DDrot(
DDName(rotstr, rotns_), 90._deg, 90._deg + phitmp, 0., 0., 90._deg, phitmp);
104 cpv.
position(
DDName(childName_, idNameSpace_), parentName, copyNo, tran, rotation);
106 edm::LogVerbatim(
"ForwardGeom") <<
"DDTotemAngular: " <<
DDName(childName_, idNameSpace_) <<
" number " << copyNo
107 <<
" positioned in " << parentName <<
" at " << tran <<
" with " << rotstr <<
" "
111 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.
Represents a uniquely identifyable rotation matrix.
Cos< T >::type cos(const T &t)
std::string formatAsDegrees(double radianVal)
void execute(DDCompactView &cpv) override
void initialize(const DDNumericArguments &nArgs, const DDVectorArguments &vArgs, const DDMapArguments &mArgs, const DDStringArguments &sArgs, const DDStringVectorArguments &vsArgs) override
#define DEFINE_EDM_PLUGIN(factory, type, name)
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation