2 #include "CLHEP/Units/GlobalSystemOfUnits.h" 3 #include "CLHEP/Units/SystemOfUnits.h" 29 std::cout <<
"WARNING - DDDividedConsRho, rOutMinusZ = 0. " 31 <<
" Width is calculated as that of rOutMinusZ !" 74 + std::to_string(copyNo),
89 double pRMin2 = msol.rInPlusZ()
91 double pRMax2 = msol.rInPlusZ()
93 double pDz = msol.zhalf();
95 double pSPhi = msol.phiFrom();
96 double pDPhi = msol.deltaPhi();
99 , pRMin2, pRMax2, pSPhi, pDPhi);
156 myddrot =
DDrot(ddrotname, rotMat);
177 if (!ddcons.isDefined().second)
180 double pRMax1 = msol.rOutMinusZ();
181 double pRMin2 = msol.rInPlusZ();
182 double pRMax2 = msol.rOutPlusZ();
183 double pDz = msol.zhalf();
186 double pSPhi =
div_.
offset() + msol.phiFrom();
189 , pRMin2, pRMax2, pSPhi, pDPhi);
223 return 2*msol.
zhalf();
241 translation.SetZ(posi);
255 double mHalfLength = msol.
zhalf();
256 double aRInner = (msol.rInPlusZ()
257 - msol.rInMinusZ()) / (2*mHalfLength);
258 double bRInner = (msol.rInPlusZ()
259 + msol.rInMinusZ()) / 2;
260 double aROuter = (msol.rOutPlusZ()
261 - msol.rOutMinusZ()) / (2*mHalfLength);
262 double bROuter = (msol.rOutPlusZ()
263 + msol.rOutMinusZ()) / 2;
268 double pSPhi = msol.phiFrom();
269 double pDPhi = msol.deltaPhi();
273 , aRInner * xMinusZ + bRInner
274 , aROuter * xMinusZ + bROuter
275 , aRInner * xPlusZ + bRInner
276 , aROuter * xPlusZ + bROuter
double getMaxParameter() 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
DDTranslation makeDDTranslation(int copyNo) const override
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
const DDSolid & solid(void) const
Returns a reference object of the solid being the shape of this LogicalPart.
Compact representation of the geometrical detector hierarchy.
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.
double getMaxParameter() const override
DivisionType divisionType_
DDDividedConsRho(const DDDivision &div, DDCompactView *cpv)
DDTranslation makeDDTranslation(int copyNo) const override
double rInMinusZ(void) const
A DDLogicalPart aggregates information concerning material, solid and sensitveness ...
virtual void setType(const std::string &type)
DDTranslation makeDDTranslation(int copyNo) const override
DDLogicalPart makeDDLogicalPart(int copyNo) const override
DDRotation makeDDRotation(int copyNo) const override
double deltaPhi(void) const
DDDividedConsPhi(const DDDivision &div, DDCompactView *cpv)
DDRotation makeDDRotation(int copyNo) const override
DDLogicalPart makeDDLogicalPart(int copyNo) const override
DDLogicalPart makeDDLogicalPart(int copyNo) const override
double rInPlusZ(void) const
const DDLogicalPart & parent() const
DDRotation makeDDRotation(int copyNo) const override
double getMaxParameter() const override
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