50 double mdx = mtrd.
x1();
61 std::string s =
"ERROR - DDDividedTrdX::makeDDTranslation()";
62 s +=
"\n Axis is along ";
65 s +=
"DDDividedTrdX::makeDDTranslation()";
66 s +=
" IllegalConstruct: Only axes along x are allowed !";
85 double pDy1 = mtrd.
y1();
86 double pDy2 = mtrd.
y2();
87 double pDz = mtrd.
halfZ();
94 if (!dsol.isDefined().second)
120 double mpDx1 = mtrd.
x1();
121 double mpDx2 = mtrd.
x2();
122 double mpDx3 = mtrd.
x3();
123 double mpDx4 = mtrd.
x4();
124 double mpTheta = mtrd.
theta();
125 double mpPhi = mtrd.
phi();
126 double mpAlpha1 = mtrd.
alpha1();
127 double mpAlpha2 = mtrd.
alpha2();
132 std::string s =
"ERROR - DDDividedTrdX::checkParametersValidity()";
133 s+=
"\n Making a division of a TRD along axis X,";
134 s+=
"\n while the X half lengths are not equal,";
135 s+=
"\n is not (yet) supported. It will result";
136 s+=
"\n in non-equal division solids.";
142 if (mpAlpha1 != 0._deg || mpAlpha2 != 0._deg || mpTheta != 0._deg || mpPhi != 0._deg)
144 std::string s =
"ERROR - DDDividedTrdX::checkParametersValidity()";
145 s+=
"\n Making a division of a TRD along axis X,";
146 s+=
"\n while the theta, phi and aplhpa2 are not zero,";
147 s+=
"\n is not (yet) supported. It will result";
148 s+=
"\n in non-equal division solids.";
174 return 2 * mtrd.
y1();
181 double mdy = mtrd.
y1();
192 std::string s =
"ERROR - DDDividedTrdY::makeDDTranslation()";
193 s +=
"\n Axis is along ";
196 s +=
"DDDividedTrdY::makeDDTranslation()";
197 s +=
" IllegalConstruct: Only axes along y are allowed !";
217 double pDx1 = mtrd.
x1();
218 double pDx2 = mtrd.
x2();
219 double pDx3 = mtrd.
x3();
220 double pDx4 = mtrd.
x4();
221 double pDz = mtrd.
halfZ();
227 if (!dsol.isDefined().second)
253 double mpDy1 = mtrd.
y1();
254 double mpDy2 = mtrd.
y2();
255 double mpTheta = mtrd.
theta();
256 double mpPhi = mtrd.
phi();
257 double mpAlpha1 = mtrd.
alpha1();
258 double mpAlpha2 = mtrd.
alpha2();
262 std::string s=
"ERROR - DDDividedTrdY::checkParametersValidity()";
263 s +=
"\n Making a division of a TRD along axis Y while";
264 s +=
"\n the Y half lengths are not equal is not (yet)";
265 s +=
"\n supported. It will result in non-equal";
266 s +=
"\n division solids.";
271 if (mpAlpha1 != 0._deg || mpAlpha2 != 0._deg || mpTheta != 0._deg || mpPhi != 0._deg)
273 std::string s =
"ERROR - DDDividedTrdY::checkParametersValidity()";
274 s+=
"\n Making a division of a TRD along axis X,";
275 s+=
"\n while the theta, phi and aplhpa2 are not zero,";
276 s+=
"\n is not (yet) supported. It will result";
277 s+=
"\n in non-equal division solids.";
303 return 2 * mtrd.
halfZ();
310 double mdz = mtrd.
halfZ();
321 std::string s =
"ERROR - DDDividedTrdZ::makeDDTranslation()";
322 s +=
"\n Axis is along ";
325 s +=
"DDDividedTrdY::makeDDTranslation()";
326 s +=
" IllegalConstruct: Only axes along z are allowed !";
346 double pDx1 = mtrd.
x1();
347 double DDx = (mtrd.
x2() - mtrd.
x1() );
348 double pDy1 = mtrd.
y1();
349 double DDy = (mtrd.
y2() - mtrd.
y1() );
351 double zLength = 2*mtrd.
halfZ();
354 + std::to_string(copyNo),
382 double mpTheta = mtrd.
theta();
383 double mpPhi = mtrd.
phi();
384 double mpAlpha1 = mtrd.
alpha1();
385 double mpAlpha2 = mtrd.
alpha2();
389 if (mpAlpha1 != 0._deg || mpAlpha2 != 0._deg || mpTheta != 0._deg || mpPhi != 0._deg)
391 std::string s =
"ERROR - DDDividedTrdZ::checkParametersValidity()";
392 s+=
"\n Making a division of a TRD along axis X,";
393 s+=
"\n while the theta, phi and aplhpa2 are not zero,";
394 s+=
"\n is not (yet) supported. It will result";
395 s+=
"\n in non-equal division solids.";
double halfZ(void) const
half of the z-Axis
DDDividedTrdY(const DDDivision &div, DDCompactView *cpv)
double x1(void) const
Half-length along x of the side at y=-pDy1 of the face at -pDz.
DDRotation makeDDRotation(int copyNo) const override
DDMaterial is used to define and access material information.
double phi(void) const
Azimuthal angle of the line joining the centres of the faces at -/+pDz.
double getMaxParameter() const override
DDLogicalPart makeDDLogicalPart(int copyNo) const override
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 calculateWidth(double motherDim, int nDiv, double offset) const
DDTranslation makeDDTranslation(int copyNo) const override
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.
DDDividedTrdX(const DDDivision &div, DDCompactView *cpv)
static const double tolerance(void)
DDDividedTrdZ(const DDDivision &div, DDCompactView *cpv)
double x4(void) const
Half-length along x of the side at y=+pDy2 of the face at +pDz.
void checkParametersValidity() override
DivisionType divisionType_
Interface to a Trapezoid.
double y1(void) const
Half-length along y of the face at -pDz.
A DDLogicalPart aggregates information concerning material, solid and sensitveness ...
virtual void setType(const std::string &type)
static DDSolid trap(const DDName &name, double pDz, double pTheta, double pPhi, double pDy1, double pDx1, double pDx2, double pAlp1, double pDy2, double pDx3, double pDx4, double pAlp2)
double getMaxParameter() const override
DDTranslation makeDDTranslation(int copyNo) const override
DDRotation makeDDRotation(int copyNo) const override
double getMaxParameter() const override
double alpha1(void) const
Angle with respect to the y axis from the centre of the side at y=-pDy1 to the centre at y=+pDy1 of t...
DDLogicalPart makeDDLogicalPart(int copyNo) const override
double alpha2(void) const
Angle with respect to the y axis from the centre of the side at y=-pDy2 to the centre at y=+pDy2 of t...
void checkParametersValidity() override
double x2(void) const
Half-length along x of the side at y=+pDy1 of the face at -pDz.
void checkParametersValidity() override
double y2(void) const
Half-length along y of the face at +pDz.
const DDLogicalPart & parent() const
static const std::string name(const DDAxes &s)
double theta(void) const
Polar angle of the line joining the centres of the faces at -/+pDz.
DDTranslation makeDDTranslation(int copyNo) const override
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.
DDRotation makeDDRotation(int copyNo) const override
double x3(void) const
Half-length along x of the side at y=-pDy2 of the face at +pDz.
DDLogicalPart makeDDLogicalPart(int copyNo) const override