7 #include "CLHEP/Units/GlobalSystemOfUnits.h"
8 #include "CLHEP/Units/SystemOfUnits.h"
30 std::cout <<
"WARNING - DDDividedConsRho, rOutMinusZ = 0. "
32 <<
" Width is calculated as that of rOutMinusZ !"
75 + std::to_string(copyNo),
90 double pRMin2 = msol.rInPlusZ()
92 double pRMax2 = msol.rInPlusZ()
94 double pDz = msol.zhalf();
96 double pSPhi = msol.phiFrom();
97 double pDPhi = msol.deltaPhi();
100 , pRMin2, pRMax2, pSPhi, pDPhi);
157 myddrot =
DDrot(ddrotname, rotMat);
178 if (!ddcons.isDefined().second)
181 double pRMax1 = msol.rOutMinusZ();
182 double pRMin2 = msol.rInPlusZ();
183 double pRMax2 = msol.rOutPlusZ();
184 double pDz = msol.zhalf();
187 double pSPhi =
div_.
offset() + msol.phiFrom();
190 , pRMin2, pRMax2, pSPhi, pDPhi);
224 return 2*msol.
zhalf();
242 translation.SetZ(posi);
256 double mHalfLength = msol.
zhalf();
257 double aRInner = (msol.rInPlusZ()
258 - msol.rInMinusZ()) / (2*mHalfLength);
259 double bRInner = (msol.rInPlusZ()
260 + msol.rInMinusZ()) / 2;
261 double aROuter = (msol.rOutPlusZ()
262 - msol.rOutMinusZ()) / (2*mHalfLength);
263 double bROuter = (msol.rOutPlusZ()
264 + msol.rOutMinusZ()) / 2;
269 double pSPhi = msol.phiFrom();
270 double pDPhi = msol.deltaPhi();
274 , aRInner * xMinusZ + bRInner
275 , aROuter * xMinusZ + bROuter
276 , aRInner * xPlusZ + bRInner
277 , aROuter * xPlusZ + bROuter
virtual DDTranslation makeDDTranslation(const int copyNo) const override
virtual DDLogicalPart makeDDLogicalPart(const int copyNo) const override
DDMaterial is used to define and access material information.
DDDividedConsZ(const DDDivision &div, DDCompactView *cpv)
static DDSolid cons(const DDName &name, double zhalf, double rInMinusZ, double rOutMinusZ, double rInPlusZ, double rOutPlusZ, double phiFrom, double deltaPhi)
int calculateNDiv(double motherDim, double width, double offset) const
const std::string & ns() const
Returns the namespace.
DDName is used to identify DDD entities uniquely.
double rOutMinusZ(void) const
double calculateWidth(double motherDim, int nDiv, double offset) const
virtual double getMaxParameter() const override
const DDSolid & solid(void) const
Returns a reference object of the solid being the shape of this LogicalPart.
virtual double getMaxParameter() const override
type of data representation of DDCompactView
A DDSolid represents the shape of a part.
virtual void checkParametersValidity(void)
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
Represents a uniquely identifyable rotation matrix.
DivisionType divisionType_
virtual DDLogicalPart makeDDLogicalPart(const int copyNo) const override
DDDividedConsRho(const DDDivision &div, DDCompactView *cpv)
virtual DDLogicalPart makeDDLogicalPart(const int copyNo) const override
virtual DDRotation makeDDRotation(const int copyNo) const override
double rInMinusZ(void) const
A DDLogicalPart aggregates information concerning material, solid and sensitveness ...
virtual DDTranslation makeDDTranslation(const int copyNo) const override
virtual void setType(const std::string &type)
double deltaPhi(void) const
DDDividedConsPhi(const DDDivision &div, DDCompactView *cpv)
virtual DDRotation makeDDRotation(const int copyNo) const override
virtual DDTranslation makeDDTranslation(const int copyNo) const override
virtual DDRotation makeDDRotation(const int copyNo) const override
double rInPlusZ(void) const
virtual double getMaxParameter() const override
const DDLogicalPart & parent() const
ROOT::Math::Rotation3D DDRotationMatrix
A DDRotationMatrix is currently implemented with a ROOT Rotation3D.
const std::string & name() const
Returns the name.
const DDMaterial & material(void) const
Returns a reference object of the material this LogicalPart is made of.
DDRotationMatrix * changeRotMatrix(double rotZ=0.) const