|
|
Go to the documentation of this file.
41 double mdx = mtrd.
x1();
49 std::string s =
"ERROR - DDDividedTrdX::makeDDTranslation()";
50 s +=
"\n Axis is along ";
53 s +=
"DDDividedTrdX::makeDDTranslation()";
54 s +=
" IllegalConstruct: Only axes along x are allowed !";
67 double pDy1 = mtrd.
y1();
68 double pDy2 = mtrd.
y2();
69 double pDz = mtrd.
halfZ();
75 if (!dsol.isDefined().second) {
76 dsol =
DDSolidFactory::trap(solname, pDz, 0._deg, 0._deg, pDy1, pDx, pDx, 0._deg, pDy2, pDx, pDx, 0._deg);
87 double mpDx1 = mtrd.
x1();
88 double mpDx2 = mtrd.
x2();
89 double mpDx3 = mtrd.
x3();
90 double mpDx4 = mtrd.
x4();
91 double mpTheta = mtrd.
theta();
92 double mpPhi = mtrd.
phi();
93 double mpAlpha1 = mtrd.
alpha1();
94 double mpAlpha2 = mtrd.
alpha2();
97 std::string s =
"ERROR - DDDividedTrdX::checkParametersValidity()";
98 s +=
"\n Making a division of a TRD along axis X,";
99 s +=
"\n while the X half lengths are not equal,";
100 s +=
"\n is not (yet) supported. It will result";
101 s +=
"\n in non-equal division solids.";
107 if (mpAlpha1 != 0._deg || mpAlpha2 != 0._deg || mpTheta != 0._deg || mpPhi != 0._deg) {
108 std::string s =
"ERROR - DDDividedTrdX::checkParametersValidity()";
109 s +=
"\n Making a division of a TRD along axis X,";
110 s +=
"\n while the theta, phi and aplhpa2 are not zero,";
111 s +=
"\n is not (yet) supported. It will result";
112 s +=
"\n in non-equal division solids.";
131 return 2 * mtrd.
y1();
136 double mdy = mtrd.
y1();
144 std::string s =
"ERROR - DDDividedTrdY::makeDDTranslation()";
145 s +=
"\n Axis is along ";
148 s +=
"DDDividedTrdY::makeDDTranslation()";
149 s +=
" IllegalConstruct: Only axes along y are allowed !";
163 double pDx1 = mtrd.
x1();
164 double pDx2 = mtrd.
x2();
165 double pDx3 = mtrd.
x3();
166 double pDx4 = mtrd.
x4();
167 double pDz = mtrd.
halfZ();
173 if (!dsol.isDefined().second) {
174 dsol =
DDSolidFactory::trap(solname, pDz, 0._deg, 0._deg, pDy, pDx1, pDx2, 0._deg, pDy, pDx3, pDx4, 0._deg);
185 double mpDy1 = mtrd.
y1();
186 double mpDy2 = mtrd.
y2();
187 double mpTheta = mtrd.
theta();
188 double mpPhi = mtrd.
phi();
189 double mpAlpha1 = mtrd.
alpha1();
190 double mpAlpha2 = mtrd.
alpha2();
193 std::string s =
"ERROR - DDDividedTrdY::checkParametersValidity()";
194 s +=
"\n Making a division of a TRD along axis Y while";
195 s +=
"\n the Y half lengths are not equal is not (yet)";
196 s +=
"\n supported. It will result in non-equal";
197 s +=
"\n division solids.";
202 if (mpAlpha1 != 0._deg || mpAlpha2 != 0._deg || mpTheta != 0._deg || mpPhi != 0._deg) {
203 std::string s =
"ERROR - DDDividedTrdY::checkParametersValidity()";
204 s +=
"\n Making a division of a TRD along axis X,";
205 s +=
"\n while the theta, phi and aplhpa2 are not zero,";
206 s +=
"\n is not (yet) supported. It will result";
207 s +=
"\n in non-equal division solids.";
226 return 2 * mtrd.
halfZ();
231 double mdz = mtrd.
halfZ();
239 std::string s =
"ERROR - DDDividedTrdZ::makeDDTranslation()";
240 s +=
"\n Axis is along ";
243 s +=
"DDDividedTrdY::makeDDTranslation()";
244 s +=
" IllegalConstruct: Only axes along z are allowed !";
257 double pDx1 = mtrd.
x1();
258 double DDx = (mtrd.
x2() - mtrd.
x1());
259 double pDy1 = mtrd.
y1();
260 double DDy = (mtrd.
y2() - mtrd.
y1());
262 double zLength = 2 * mtrd.
halfZ();
287 double mpTheta = mtrd.
theta();
288 double mpPhi = mtrd.
phi();
289 double mpAlpha1 = mtrd.
alpha1();
290 double mpAlpha2 = mtrd.
alpha2();
294 if (mpAlpha1 != 0._deg || mpAlpha2 != 0._deg || mpTheta != 0._deg || mpPhi != 0._deg) {
295 std::string s =
"ERROR - DDDividedTrdZ::checkParametersValidity()";
296 s +=
"\n Making a division of a TRD along axis X,";
297 s +=
"\n while the theta, phi and aplhpa2 are not zero,";
298 s +=
"\n is not (yet) supported. It will result";
299 s +=
"\n in non-equal division solids.";
DDLogicalPart makeDDLogicalPart(int copyNo) const override
double phi(void) const
Azimuthal angle of the line joining the centres of the faces at -/+pDz.
double halfZ(void) const
half of the z-Axis
double x4(void) const
Half-length along x of the side at y=+pDy2 of the face at +pDz.
DDDividedTrdZ(const DDDivision &div, DDCompactView *cpv)
double x2(void) const
Half-length along x of the side at y=+pDy1 of the face at -pDz.
DDName is used to identify DDD entities uniquely.
void checkParametersValidity() override
double getMaxParameter() const override
const DDMaterial & material(void) const
Returns a reference object of the material this LogicalPart is made of.
DDTranslation makeDDTranslation(int copyNo) const override
static const double tolerance(void)
DDDividedTrdY(const DDDivision &div, DDCompactView *cpv)
DDMaterial is used to define and access material information.
virtual void checkParametersValidity(void)
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
double y1(void) const
Half-length along y of the face at -pDz.
double theta(void) const
Polar angle of the line joining the centres of the faces at -/+pDz.
Compact representation of the geometrical detector hierarchy.
DDDividedTrdX(const DDDivision &div, DDCompactView *cpv)
int calculateNDiv(double motherDim, double width, double offset) const
Interface to a Trapezoid.
double getMaxParameter() const override
A DDLogicalPart aggregates information concerning material, solid and sensitveness ....
DivisionType divisionType_
virtual void setType(const std::string &type)
const std::string & name() const
Returns the name.
DDRotation makeDDRotation(int copyNo) const override
double getMaxParameter() const override
DDLogicalPart makeDDLogicalPart(int copyNo) const override
double y2(void) const
Half-length along y of the face at +pDz.
DDRotation makeDDRotation(int copyNo) const override
DDRotation makeDDRotation(int copyNo) const override
const std::string & ns() const
Returns the namespace.
DDTranslation makeDDTranslation(int copyNo) const override
A DDSolid represents the shape of a part.
Represents a uniquely identifyable rotation matrix.
DDLogicalPart makeDDLogicalPart(int copyNo) const override
double x1(void) const
Half-length along x of the side at y=-pDy1 of the face at -pDz.
void checkParametersValidity() override
DDTranslation makeDDTranslation(int copyNo) 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...
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...
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)
static const std::string name(const DDAxes &s)
const DDSolid & solid(void) const
Returns a reference object of the solid being the shape of this LogicalPart.
void checkParametersValidity() override
double x3(void) const
Half-length along x of the side at y=-pDy2 of the face at +pDz.
const DDLogicalPart & parent() const
ROOT::Math::Rotation3D DDRotation
double calculateWidth(double motherDim, int nDiv, double offset) const