12 #include "CLHEP/Units/GlobalPhysicalConstants.h"
13 #include "CLHEP/Units/GlobalSystemOfUnits.h"
18 edm::LogInfo(
"HGCalGeom") <<
"DDHGCalNoTaperEndcap test: Creating an instance";
30 m_rMin = int( nArgs[
"rMin"] );
31 m_rMax = int( nArgs[
"rMax"] );
34 m_n = int( nArgs[
"n"] );
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);
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
void position(const DDLogicalPart &self, const DDLogicalPart &parent, std::string copyno, const DDTranslation &trans, const DDRotation &rot, const DDDivision *div=NULL)
DDName is used to identify DDD entities uniquely.
static std::string & ns()
type of data representation of DDCompactView
std::string m_idNameSpace
virtual ~DDHGCalNoTaperEndcap(void)
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
Represents a uniquely identifyable rotation matrix.
Abs< T >::type abs(const T &t)
void execute(DDCompactView &cpv)
int createQuarter(DDCompactView &cpv, int xQuadrant, int yQuadrant, int startCopyNo)
ROOT::Math::Rotation3D DDRotationMatrix
A DDRotationMatrix is currently implemented with a ROOT Rotation3D.
void initialize(const DDNumericArguments &nArgs, const DDVectorArguments &vArgs, const DDMapArguments &mArgs, const DDStringArguments &sArgs, const DDStringVectorArguments &vsArgs)