12 #include "CLHEP/Units/GlobalPhysicalConstants.h"
13 #include "CLHEP/Units/GlobalSystemOfUnits.h"
59 startAngle = nArgs[
"StartAngle"];
60 incrAngle = nArgs[
"IncrAngle"];
63 number = int(nArgs[
"Number"]);
64 startCopyNo = int(nArgs[
"StartCopyNo"]);
65 incrCopyNo = int(nArgs[
"IncrCopyNo"]);
67 LogDebug(
"TECGeom") <<
"DDTECPhiAlgo debug: Parameters for "
69 <<
"\tStartAngle " << startAngle / CLHEP::deg <<
"\tIncrAngle " << incrAngle / CLHEP::deg
70 <<
"\tZ in/out " << zIn <<
", " << zOut <<
"\tCopy Numbers " <<
number <<
" Start/Increment "
71 << startCopyNo <<
", " << incrCopyNo;
74 childName = sArgs[
"ChildName"];
76 LogDebug(
"TECGeom") <<
"DDTECPhiAlgo debug: Parent " << parentName <<
"\tChild " << childName <<
" NameSpace "
82 double theta = 90. * CLHEP::deg;
83 int copyNo = startCopyNo;
88 double phix = startAngle +
i * incrAngle;
89 double phiy = phix + 90. * CLHEP::deg;
90 double phideg = phix / CLHEP::deg;
96 LogDebug(
"TECGeom") <<
"DDTECPhiAlgo test: Creating a new "
97 <<
"rotation " << rotstr <<
"\t" << theta / CLHEP::deg <<
", " << phix / CLHEP::deg <<
", "
98 << theta / CLHEP::deg <<
", " << phiy / CLHEP::deg <<
", 0, 0";
99 rotation =
DDrot(
DDName(rotstr, idNameSpace), theta, phix, theta, phiy, 0., 0.);
107 cpv.
position(child, mother, copyNo, tran, rotation);
108 LogDebug(
"TECGeom") <<
"DDTECPhiAlgo test: " << child <<
" number " << copyNo <<
" positioned in " << mother
109 <<
" at " << tran <<
" with " <<
rotation;
110 copyNo += incrCopyNo;
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)
Geom::Theta< T > theta() const
DDName is used to identify DDD entities uniquely.
std::string to_string(const V &value)
static std::string & ns()
void initialize(const DDNumericArguments &nArgs, const DDVectorArguments &vArgs, const DDMapArguments &mArgs, const DDStringArguments &sArgs, const DDStringVectorArguments &vsArgs) override
Compact representation of the geometrical detector hierarchy.
Represents a uniquely identifyable rotation matrix.
U second(std::pair< T, U > const &p)
#define DEFINE_EDM_PLUGIN(factory, type, name)
void execute(DDCompactView &cpv) override
std::pair< std::string, std::string > DDSplit(const std::string &n)
split into (name,namespace), separator = ':'
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation