Go to the documentation of this file.
68 shiftX = nArgs[
"ShiftX"];
69 shiftY = nArgs[
"ShiftY"];
70 zoffset = nArgs[
"Zoffset"];
71 dist = nArgs[
"Distance"];
72 tilt = nArgs[
"TiltAngle"];
73 copyNumber =
int(nArgs[
"Number"]);
77 <<
", " << shiftY <<
" along x, y "
78 <<
"axes; \tZoffest " << zoffset <<
"\tRadial Distance " << dist <<
"\tTilt angle "
82 childName = sArgs[
"ChildName"];
85 <<
" NameSpace " << idNameSpace;
93 double thetax = 90._deg -
theta;
94 double z = zoffset + dist *
tan(thetax);
95 double x = shiftX - shiftY *
sin(tilt);
96 double y = shiftY *
cos(tilt);
104 edm::LogVerbatim(
"HCalGeom") <<
"DDHCalZposAlgo: Creating a rotation " <<
DDName(rotstr, idNameSpace) <<
"\t90, "
107 rot =
DDrot(
DDName(rotstr, idNameSpace), 90._deg, tilt, 90._deg, (90._deg + tilt), 0.0, 0.0);
112 edm::LogVerbatim(
"HCalGeom") <<
"DDHCalTBZposAlgo: " <<
child <<
" number " << copyNumber <<
" positioned in "
113 << mother <<
" at " << tran <<
" with " <<
rot;
void execute(DDCompactView &cpv) override
DDName is used to identify DDD entities uniquely.
~DDHCalTBZposAlgo() override
constexpr NumType convertRadToDeg(NumType radians)
U second(std::pair< T, U > const &p)
Sin< T >::type sin(const T &t)
Cos< T >::type cos(const T &t)
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
Compact representation of the geometrical detector hierarchy.
void initialize(const DDNumericArguments &nArgs, const DDVectorArguments &vArgs, const DDMapArguments &mArgs, const DDStringArguments &sArgs, const DDStringVectorArguments &vsArgs) override
std::string formatAsDegrees(double radianVal)
Geom::Theta< T > theta() const
#define DEFINE_EDM_PLUGIN(factory, type, name)
Tan< T >::type tan(const T &t)
static std::string & ns()
Represents a uniquely identifyable rotation matrix.
static AlgebraicMatrix initialize()
std::pair< std::string, std::string > DDSplit(const std::string &n)
split into (name,namespace), separator = ':'
void position(const DDLogicalPart &self, const DDLogicalPart &parent, const std::string ©no, const DDTranslation &trans, const DDRotation &rot, const DDDivision *div=nullptr)
ROOT::Math::Rotation3D DDRotation