12 #include "CLHEP/Units/GlobalPhysicalConstants.h" 13 #include "CLHEP/Units/GlobalSystemOfUnits.h" 18 edm::LogInfo(
"HGCalGeom") <<
"DDHGCalNoTaperEndcap test: Creating an instance";
40 <<
"\tParent " <<
parent().name();
53 int copyNo = startCopyNo;
55 double xphi = xQuadrant*tiltAngle;
56 double yphi = yQuadrant*tiltAngle;
57 double theta = 90.*CLHEP::deg;
60 double phiZ = 3*
theta;
64 double offsetX = xQuadrant*0.5*offsetXY;
65 double offsetY = yQuadrant*0.5*offsetXY;
68 int rowmax(0), column(0);
79 double limit1 =
sqrt((offsetX+0.5*xQuadrant*offsetXY)*
80 (offsetX+0.5*xQuadrant*offsetXY) +
81 (offsetY+0.5*yQuadrant*offsetXY)*
82 (offsetY+0.5*yQuadrant*offsetXY) );
83 double limit2 =
sqrt((offsetX-0.5*xQuadrant*offsetXY)*
84 (offsetX-0.5*xQuadrant*offsetXY) +
85 (offsetY-0.5*yQuadrant*offsetXY)*
86 (offsetY-0.5*yQuadrant*offsetXY) );
91 <<
"," << row <<
"): offsetX,Y = " << offsetX <<
"," 92 << offsetY <<
" limit=" << limit1 <<
":" << limit2
93 <<
" rMin, rMax = " <<
m_rMin <<
"," <<
m_rMax << std::endl;
100 rotstr += std::to_string(copyNo);
104 std::make_unique<DDRotationMatrix>( *
DDcreateRotationMatrix( theta, phiX, theta + yphi, phiY, -yphi, phiZ )
110 edm::LogInfo(
"HGCalGeom") <<
"Module " << copyNo <<
": location = " 111 << tran <<
" Rotation " <<
rotation;
119 std::cout <<
" (" << column <<
"," << row <<
"): offsetX,Y = " 120 << offsetX <<
"," << offsetY <<
" is out of limit=" << limit1
121 <<
":" << limit2 <<
" rMin, rMax = " <<
m_rMin <<
"," 126 yphi += yQuadrant*2.*tiltAngle;
127 offsetY += yQuadrant*offsetXY;
131 if (row > rowmax) rowmax = row;
133 xphi += xQuadrant*2.*tiltAngle;
134 yphi = yQuadrant*tiltAngle;
135 offsetY = yQuadrant*0.5*offsetXY;
136 offsetX += xQuadrant*offsetXY;
140 std::cout << rowmax <<
" rows and " << column <<
" columns in quadrant " 141 << xQuadrant <<
":" << yQuadrant << std::endl;
DDHGCalNoTaperEndcap(void)
Geom::Theta< T > theta() const
DDName is used to identify DDD entities uniquely.
static std::string & ns()
Compact representation of the geometrical detector hierarchy.
std::string m_idNameSpace
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
Represents a uniquely identifyable rotation matrix.
~DDHGCalNoTaperEndcap(void) override
Abs< T >::type abs(const T &t)
void initialize(const DDNumericArguments &nArgs, const DDVectorArguments &vArgs, const DDMapArguments &mArgs, const DDStringArguments &sArgs, const DDStringVectorArguments &vsArgs) 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
int createQuarter(DDCompactView &cpv, int xQuadrant, int yQuadrant, int startCopyNo)