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;
87 double halfZ(
void )
const;
89 double theta(
void )
const;
91 double phi(
void )
const;
93 double y1(
void )
const;
95 double x1(
void )
const;
97 double x2(
void )
const;
99 double alpha1(
void )
const;
101 double y2(
void )
const;
103 double x3(
void )
const;
105 double x4(
void )
const;
107 double alpha2(
void )
const;
118 double halfZ(
void )
const;
120 double x1(
void )
const;
122 double x2(
void )
const;
124 double y1(
void )
const;
126 double y2(
void )
const;
128 double radius(
void )
const;
130 bool atMinusZ(
void )
const;
142 double zHalf(
void )
const;
144 double rIn(
void )
const;
146 double rOut(
void )
const;
148 double startPhi(
void )
const;
152 double cutAtStart(
void )
const;
154 double cutAtDelta(
void )
const;
156 bool cutInside(
void )
const;
169 DDBox(
void ) =
delete;
171 double halfX(
void )
const;
172 double halfY(
void )
const;
173 double halfZ(
void )
const;
192 DDSolid unreflected(
void )
const;
223 const std::vector<DDSolid>& solids(
void )
const;
224 const std::vector<DDTranslation>& translations(
void )
const;
225 const std::vector<DDRotation>& rotations(
void )
const;
242 virtual std::vector<double> getVec(
const size_t&
which,
const size_t&
offset = 0,
const size_t& nVecs = 1 )
const;
252 double startPhi(
void )
const;
254 std::vector<double> zVec(
void )
const;
255 std::vector<double> rVec(
void )
const;
256 std::vector<double> rMinVec(
void )
const;
257 std::vector<double> rMaxVec(
void )
const;
267 int sides(
void )
const;
268 double startPhi(
void )
const;
270 std::vector<double> zVec(
void )
const;
271 std::vector<double> rVec(
void )
const;
272 std::vector<double> rMinVec(
void )
const;
273 std::vector<double> rMaxVec(
void )
const;
283 std::vector<double> xVec(
void )
const;
284 std::vector<double> yVec(
void )
const;
285 std::vector<double> zVec(
void )
const;
286 std::vector<double> zxVec(
void )
const;
287 std::vector<double> zyVec(
void )
const;
288 std::vector<double> zscaleVec(
void )
const;
292 auto xyPointsSize(
void )
const -> std::size_t;
293 auto zSectionsSize(
void )
const -> std::size_t;
303 double zhalf(
void )
const;
304 double rIn(
void )
const;
305 double rOut(
void )
const;
306 double startPhi(
void )
const;
317 double zhalf(
void )
const;
318 double rIn(
void )
const;
319 double rOut(
void )
const;
320 double startPhi(
void )
const;
322 std::array<double, 3> lowNorm(
void )
const;
323 std::array<double, 3> highNorm(
void )
const;
333 double zhalf(
void )
const;
334 double rInMinusZ(
void )
const;
335 double rOutMinusZ(
void )
const;
336 double rInPlusZ(
void )
const;
337 double rOutPlusZ(
void )
const;
338 double phiFrom(
void )
const;
349 double rMin(
void )
const;
350 double rMax(
void )
const;
351 double rTorus(
void )
const;
352 double startPhi(
void )
const;
397 double startPhi(
void )
const;
399 double startTheta(
void )
const;
400 double deltaTheta(
void )
const;
408 DDOrb(
void ) =
delete;
410 double radius(
void )
const;
420 double xSemiAxis(
void )
const;
421 double ySemiAxis(
void )
const;
422 double zHeight(
void )
const;
432 double xSemiAxis(
void )
const;
433 double ySemiAxis(
void )
const;
434 double zSemiAxis(
void )
const;
435 double zBottomCut(
void )
const;
436 double zTopCut(
void )
const;
446 double xHalf(
void )
const;
447 double yHalf(
void )
const;
448 double zHalf(
void )
const;
449 double alpha(
void )
const;
450 double theta(
void )
const;
451 double phi(
void )
const;
475 const std::vector<double> & z,
476 const std::vector<double> & rmin,
477 const std::vector<double> & rmax );
483 static DDSolid polycone(
const DDName & name,
double startPhi,
double deltaPhi,
484 const std::vector<double> & z,
485 const std::vector<double> &
r );
493 double startPhi,
double deltaPhi,
494 const std::vector<double> & z,
495 const std::vector<double> & rmin,
496 const std::vector<double> & rmax );
504 double startPhi,
double deltaPhi,
505 const std::vector<double> & z,
506 const std::vector<double> & r );
515 const std::vector<DDSolid> & a,
516 const std::vector<DDTranslation> & t,
517 const std::vector<DDRotation> & r );
533 double pTheta,
double pPhi,
534 double pDy1,
double pDx1,
double pDx2,
536 double pDy2,
double pDx3,
double pDx4,
560 double rIn,
double rOut,
566 double rIn,
double rOut,
569 double lx,
double ly,
double lz,
570 double tx,
double ty,
double tz);
608 double zBottomCut = 0.,
609 double zTopCut = 0. );
612 double xHalf,
double yHalf,
double zHalf,
616 const std::vector<double> & x,
617 const std::vector<double> & y,
618 const std::vector<double> & z,
619 const std::vector<double> & zx,
620 const std::vector<double> & zy,
621 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.
double intersection(double r12)
DDI::BooleanSolid * boolean_
DDI::Reflection * reflected_
Interface to a Trapezoid.
std::ostream & operator<<(std::ostream &, const DDSolid &)