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;
209 const std::vector<DDSolid>& solids(
void )
const;
210 const std::vector<DDTranslation>& translations(
void )
const;
211 const std::vector<DDRotation>& rotations(
void )
const;
228 virtual std::vector<double> getVec(
const size_t&
which,
const size_t&
offset = 0,
const size_t& nVecs = 1 )
const;
238 double startPhi(
void )
const;
240 std::vector<double> zVec(
void )
const;
241 std::vector<double> rVec(
void )
const;
242 std::vector<double> rMinVec(
void )
const;
243 std::vector<double> rMaxVec(
void )
const;
253 int sides(
void )
const;
254 double startPhi(
void )
const;
256 std::vector<double> zVec(
void )
const;
257 std::vector<double> rVec(
void )
const;
258 std::vector<double> rMinVec(
void )
const;
259 std::vector<double> rMaxVec(
void )
const;
269 std::vector<double> xVec(
void )
const;
270 std::vector<double> yVec(
void )
const;
271 std::vector<double> zVec(
void )
const;
272 std::vector<double> zxVec(
void )
const;
273 std::vector<double> zyVec(
void )
const;
274 std::vector<double> zscaleVec(
void )
const;
278 auto xyPointsSize(
void )
const -> std::size_t;
279 auto zSectionsSize(
void )
const -> std::size_t;
289 double zhalf(
void )
const;
290 double rIn(
void )
const;
291 double rOut(
void )
const;
292 double startPhi(
void )
const;
303 double zhalf(
void )
const;
304 double rIn(
void )
const;
305 double rOut(
void )
const;
306 double startPhi(
void )
const;
308 std::array<double, 3> lowNorm(
void )
const;
309 std::array<double, 3> highNorm(
void )
const;
319 double zhalf(
void )
const;
320 double rInMinusZ(
void )
const;
321 double rOutMinusZ(
void )
const;
322 double rInPlusZ(
void )
const;
323 double rOutPlusZ(
void )
const;
324 double phiFrom(
void )
const;
335 double rMin(
void )
const;
336 double rMax(
void )
const;
337 double rTorus(
void )
const;
338 double startPhi(
void )
const;
383 double startPhi(
void )
const;
385 double startTheta(
void )
const;
386 double deltaTheta(
void )
const;
394 DDOrb(
void ) =
delete;
396 double radius(
void )
const;
406 double xSemiAxis(
void )
const;
407 double ySemiAxis(
void )
const;
408 double zHeight(
void )
const;
418 double xSemiAxis(
void )
const;
419 double ySemiAxis(
void )
const;
420 double zSemiAxis(
void )
const;
421 double zBottomCut(
void )
const;
422 double zTopCut(
void )
const;
432 double xHalf(
void )
const;
433 double yHalf(
void )
const;
434 double zHalf(
void )
const;
435 double alpha(
void )
const;
436 double theta(
void )
const;
437 double phi(
void )
const;
461 const std::vector<double> & z,
462 const std::vector<double> & rmin,
463 const std::vector<double> & rmax );
469 static DDSolid polycone(
const DDName & name,
double startPhi,
double deltaPhi,
470 const std::vector<double> & z,
471 const std::vector<double> &
r );
479 double startPhi,
double deltaPhi,
480 const std::vector<double> & z,
481 const std::vector<double> & rmin,
482 const std::vector<double> & rmax );
490 double startPhi,
double deltaPhi,
491 const std::vector<double> & z,
492 const std::vector<double> & r );
501 const std::vector<DDSolid> & a,
502 const std::vector<DDTranslation> & t,
503 const std::vector<DDRotation> & r );
519 double pTheta,
double pPhi,
520 double pDy1,
double pDx1,
double pDx2,
522 double pDy2,
double pDx3,
double pDx4,
546 double rIn,
double rOut,
552 double rIn,
double rOut,
555 double lx,
double ly,
double lz,
556 double tx,
double ty,
double tz);
594 double zBottomCut = 0.,
595 double zTopCut = 0. );
598 double xHalf,
double yHalf,
double zHalf,
602 const std::vector<double> & x,
603 const std::vector<double> & y,
604 const std::vector<double> & z,
605 const std::vector<double> & zx,
606 const std::vector<double> & zy,
607 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_
Interface to a Trapezoid.
std::ostream & operator<<(std::ostream &, const DDSolid &)