1 #ifndef DETECTOR_DESCRIPTION_CORE_DD_SOLID_H 2 #define DETECTOR_DESCRIPTION_CORE_DD_SOLID_H 42 friend class DDDToPersFactory;
43 friend class DDPersToDDDFactory;
61 const std::vector<double> &
parameters(
void )
const;
64 double volume(
void )
const;
84 double halfZ(
void )
const;
86 double theta(
void )
const;
88 double phi(
void )
const;
90 double y1(
void )
const;
92 double x1(
void )
const;
94 double x2(
void )
const;
96 double alpha1(
void )
const;
98 double y2(
void )
const;
100 double x3(
void )
const;
102 double x4(
void )
const;
104 double alpha2(
void )
const;
115 double halfZ(
void )
const;
117 double x1(
void )
const;
119 double x2(
void )
const;
121 double y1(
void )
const;
123 double y2(
void )
const;
125 double radius(
void )
const;
127 bool atMinusZ(
void )
const;
139 double zHalf(
void )
const;
141 double rIn(
void )
const;
143 double rOut(
void )
const;
145 double startPhi(
void )
const;
149 double cutAtStart(
void )
const;
151 double cutAtDelta(
void )
const;
153 bool cutInside(
void )
const;
168 double halfX(
void )
const;
169 double halfY(
void )
const;
170 double halfZ(
void )
const;
190 DDSolid unreflected(
void )
const;
215 const std::vector<DDSolid>& solids(
void )
const;
216 const std::vector<DDTranslation>& translations(
void )
const;
217 const std::vector<DDRotation>& rotations(
void )
const;
232 virtual std::vector<double> getVec(
const size_t&
which,
const size_t&
offset = 0,
const size_t& nVecs = 1 )
const;
240 double startPhi(
void )
const;
242 std::vector<double> zVec(
void )
const;
243 std::vector<double> rVec(
void )
const;
244 std::vector<double> rMinVec(
void )
const;
245 std::vector<double> rMaxVec(
void )
const;
255 int sides(
void )
const;
256 double startPhi(
void )
const;
258 std::vector<double> zVec(
void )
const;
259 std::vector<double> rVec(
void )
const;
260 std::vector<double> rMinVec(
void )
const;
261 std::vector<double> rMaxVec(
void )
const;
271 std::vector<double> xVec(
void )
const;
272 std::vector<double> yVec(
void )
const;
273 std::vector<double> zVec(
void )
const;
274 std::vector<double> zxVec(
void )
const;
275 std::vector<double> zyVec(
void )
const;
276 std::vector<double> zscaleVec(
void )
const;
280 auto xyPointsSize(
void )
const -> std::size_t;
281 auto zSectionsSize(
void )
const -> std::size_t;
288 double zhalf(
void )
const;
289 double rIn(
void )
const;
290 double rOut(
void )
const;
291 double startPhi(
void )
const;
302 double zhalf(
void )
const;
303 double rIn(
void )
const;
304 double rOut(
void )
const;
305 double startPhi(
void )
const;
307 std::array<double, 3> lowNorm(
void )
const;
308 std::array<double, 3> highNorm(
void )
const;
318 double zhalf(
void )
const;
319 double rInMinusZ(
void )
const;
320 double rOutMinusZ(
void )
const;
321 double rInPlusZ(
void )
const;
322 double rOutPlusZ(
void )
const;
323 double phiFrom(
void )
const;
334 double rMin(
void )
const;
335 double rMax(
void )
const;
336 double rTorus(
void )
const;
337 double startPhi(
void )
const;
386 double startPhi(
void )
const;
388 double startTheta(
void )
const;
389 double deltaTheta(
void )
const;
399 double radius(
void )
const;
409 double xSemiAxis(
void )
const;
410 double ySemiAxis(
void )
const;
411 double zHeight(
void )
const;
421 double xSemiAxis(
void )
const;
422 double ySemiAxis(
void )
const;
423 double zSemiAxis(
void )
const;
424 double zBottomCut(
void )
const;
425 double zTopCut(
void )
const;
435 double xHalf(
void )
const;
436 double yHalf(
void )
const;
437 double zHalf(
void )
const;
438 double alpha(
void )
const;
439 double theta(
void )
const;
440 double phi(
void )
const;
467 const std::vector<double> & z,
468 const std::vector<double> & rmin,
469 const std::vector<double> & rmax );
475 static DDSolid polycone(
const DDName & name,
double startPhi,
double deltaPhi,
476 const std::vector<double> & z,
477 const std::vector<double> &
r );
485 double startPhi,
double deltaPhi,
486 const std::vector<double> & z,
487 const std::vector<double> & rmin,
488 const std::vector<double> & rmax );
496 double startPhi,
double deltaPhi,
497 const std::vector<double> & z,
498 const std::vector<double> & r );
507 const std::vector<DDSolid> & a,
508 const std::vector<DDTranslation> & t,
509 const std::vector<DDRotation> & r );
525 double pTheta,
double pPhi,
526 double pDy1,
double pDx1,
double pDx2,
528 double pDy2,
double pDx3,
double pDx4,
552 double rIn,
double rOut,
558 double rIn,
double rOut,
561 double lx,
double ly,
double lz,
562 double tx,
double ty,
double tz);
600 double zBottomCut = 0.,
601 double zTopCut = 0. );
604 double xHalf,
double yHalf,
double zHalf,
608 const std::vector<double> &
x,
609 const std::vector<double> & y,
610 const std::vector<double> & z,
611 const std::vector<double> & zx,
612 const std::vector<double> & zy,
613 const std::vector<double> & zscale );
A truncated tube section.
Abstract class for DDPolycone and DDPolyhedra. Basically a common member function.
This is simply a handle on the solid.
Geom::Theta< T > theta() const
DDName is used to identify DDD entities uniquely.
A DDSolid represents the shape of a part.
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
Represents a uniquely identifyable rotation matrix.
T x() const
Cartesian x coordinate.
double intersection(double r12)
DDI::BooleanSolid * boolean_
DDI::Reflection * reflected_
Interface to a Trapezoid.
std::ostream & operator<<(std::ostream &, const DDSolid &)