68 distanceZ = nArgs[
"DistZ"];
70 copyNumber =
int(nArgs[
"Number"]);
73 edm::LogVerbatim(
"HCalGeom") <<
"DDHCalTestBeamAlgo: Parameters for position" 77 <<
"\tDz " <<
dz <<
"\tcopyNumber " << copyNumber;
80 childName = sArgs[
"ChildName"];
83 <<
" NameSpace " << idNameSpace;
88 double thetax = 90._deg +
theta;
89 double sthx =
sin(thetax);
95 double thetay = 90._deg;
96 double phiy = 90._deg + phi;
97 double thetaz =
theta;
103 edm::LogVerbatim(
"HCalGeom") <<
"DDHCalTestBeamAlgo: Creating a rotation " << rotstr <<
"\t" 111 double xpos = r *
cos(phi);
112 double ypos = r *
sin(phi);
119 edm::LogVerbatim(
"HCalGeom") <<
"DDHCalTestBeamAlgo: " <<
DDName(childName, idNameSpace) <<
" number " << copyNumber
120 <<
" positioned in " << parentName <<
" at " << tran <<
" with " <<
rotation;
126 edm::LogInfo(
"HCalGeom") <<
"DDHCalTestBeamAlgo: Suggested Beam position " 127 <<
"(" << xpos <<
", " << ypos <<
", " << zpos <<
") and (dist, eta, phi) = (" << (dist -
dz)
128 <<
", " <<
eta <<
", " << phi <<
")";
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.
void initialize(const DDNumericArguments &nArgs, const DDVectorArguments &vArgs, const DDMapArguments &mArgs, const DDStringArguments &sArgs, const DDStringVectorArguments &vsArgs) override
static std::string & ns()
Compact representation of the geometrical detector hierarchy.
Represents a uniquely identifyable rotation matrix.
~DDHCalTestBeamAlgo() override
Cos< T >::type cos(const T &t)
Abs< T >::type abs(const T &t)
Log< level::Info, false > LogInfo
#define DEFINE_EDM_PLUGIN(factory, type, name)
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
void execute(DDCompactView &cpv) override
MPlex< T, D1, D2, N > atan2(const MPlex< T, D1, D2, N > &y, const MPlex< T, D1, D2, N > &x)