36 angwidth = nArgs[
"AngWidth"];
37 iaxis =
int (nArgs[
"Axis"]);
38 names = vsArgs[
"Names"];
41 edm::LogVerbatim(
"HCalGeom") <<
"DDHCalXtalAlgo::Parameters for positioning:" 42 <<
" Axis " << iaxis <<
"\tRadius " <<
radius 43 <<
"\tOffset " <<
offset <<
"\tDx " <<
dx 44 <<
"\tDz " <<
dz <<
"\tAngWidth " 47 for (
unsigned int i = 0;
i <
names.size();
i++)
51 idName = sArgs[
"ChildName"];
54 <<
"\tChild " <<
idName <<
" NameSpace " 64 theta[1-iaxis] = 90._deg;
67 for (
int i=0;
i<number;
i++) {
68 double angle = 0.5*angwidth*(2*
i+1-number);
69 theta[iaxis] = 90._deg +
angle;
72 phi[2] = iaxis*90._deg;
75 phi[2] = (2-3*iaxis)*90._deg;
85 static const double tol = 0.01_deg;
97 rotation =
DDrot(
DDName(rotstr, idNameSpace), theta[0], phi[0], theta[1],
98 phi[1], theta[2], phi[2]);
104 <<
i+1 <<
" positioned in " << parentName
105 <<
" at " << tran <<
" with " <<
rotation;
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)
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.
const std::string names[nVars_]
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
Represents a uniquely identifyable rotation matrix.
Abs< T >::type abs(const T &t)
~DDHCalXtalAlgo() override
void position(const DDLogicalPart &self, const DDLogicalPart &parent, const std::string ©no, const DDTranslation &trans, const DDRotation &rot, const DDDivision *div=0)
void execute(DDCompactView &cpv) override
T angle(T x1, T y1, T z1, T x2, T y2, T z2)