35 shiftX = nArgs[
"ShiftX"];
36 shiftY = nArgs[
"ShiftY"];
37 zoffset = nArgs[
"Zoffset"];
38 dist = nArgs[
"Distance"];
39 tilt = nArgs[
"TiltAngle"];
40 copyNumber =
int (nArgs[
"Number"]);
42 <<
"ing--" <<
" Eta " <<
eta <<
"\tTheta " 44 << shiftX <<
", " << shiftY <<
" along x, y " 45 <<
"axes; \tZoffest " << zoffset
46 <<
"\tRadial Distance " << dist
48 <<
"\tcopyNumber " << copyNumber;
51 childName = sArgs[
"ChildName"];
54 <<
"\tChild " << childName <<
" NameSpace " 64 double thetax = 90._deg -
theta;
65 double z = zoffset + dist*
tan(thetax);
66 double x = shiftX - shiftY*
sin(tilt);
67 double y = shiftY*
cos(tilt);
76 <<
DDName(rotstr,idNameSpace) <<
"\t90, " 80 rot =
DDrot(
DDName(rotstr, idNameSpace), 90._deg, tilt,
81 90._deg, (90._deg+tilt), 0.0, 0.0);
84 cpv.
position(child, mother, copyNumber, tran, rot);
87 << copyNumber <<
" positioned in " << mother
88 <<
" at " << tran <<
" with " <<
rot;
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.
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
Represents a uniquely identifyable rotation matrix.
U second(std::pair< T, U > const &p)
~DDHCalTBZposAlgo() override
Cos< T >::type cos(const T &t)
Tan< T >::type tan(const T &t)
std::string formatAsDegrees(double radianVal)
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
std::pair< std::string, std::string > DDSplit(const std::string &n)
split into (name,namespace), separator = ':'