|
|
Go to the documentation of this file. 1 #ifndef DETECTOR_DESCRIPTION_CORE_DD_SOLID_H
2 #define DETECTOR_DESCRIPTION_CORE_DD_SOLID_H
59 const std::vector<double>&
parameters(
void)
const;
83 double halfZ(
void)
const;
85 double theta(
void)
const;
87 double phi(
void)
const;
89 double y1(
void)
const;
91 double x1(
void)
const;
93 double x2(
void)
const;
97 double y2(
void)
const;
99 double x3(
void)
const;
101 double x4(
void)
const;
103 double alpha2(
void)
const;
112 double halfZ(
void)
const;
114 double x1(
void)
const;
116 double x2(
void)
const;
118 double y1(
void)
const;
120 double y2(
void)
const;
122 double radius(
void)
const;
134 double zHalf(
void)
const;
136 double rIn(
void)
const;
138 double rOut(
void)
const;
159 DDBox(
void) =
delete;
161 double halfX(
void)
const;
162 double halfY(
void)
const;
163 double halfZ(
void)
const;
192 const std::vector<DDSolid>&
solids(
void)
const;
193 const std::vector<DDTranslation>&
translations(
void)
const;
194 const std::vector<DDRotation>&
rotations(
void)
const;
208 virtual std::vector<double>
getVec(
const size_t&
which,
const size_t&
offset = 0,
const size_t& nVecs = 1)
const;
218 std::vector<double>
zVec(
void)
const;
219 std::vector<double>
rVec(
void)
const;
220 std::vector<double>
rMinVec(
void)
const;
221 std::vector<double>
rMaxVec(
void)
const;
229 int sides(
void)
const;
232 std::vector<double>
zVec(
void)
const;
233 std::vector<double>
rVec(
void)
const;
234 std::vector<double>
rMinVec(
void)
const;
235 std::vector<double>
rMaxVec(
void)
const;
243 std::vector<double>
xVec(
void)
const;
244 std::vector<double>
yVec(
void)
const;
245 std::vector<double>
zVec(
void)
const;
246 std::vector<double>
zxVec(
void)
const;
247 std::vector<double>
zyVec(
void)
const;
248 std::vector<double>
zscaleVec(
void)
const;
260 double zhalf(
void)
const;
261 double rIn(
void)
const;
262 double rOut(
void)
const;
272 double zhalf(
void)
const;
273 double rIn(
void)
const;
274 double rOut(
void)
const;
277 std::array<double, 3>
lowNorm(
void)
const;
278 std::array<double, 3>
highNorm(
void)
const;
286 double zhalf(
void)
const;
300 double rMin(
void)
const;
301 double rMax(
void)
const;
302 double rTorus(
void)
const;
347 DDOrb(
void) =
delete;
349 double radius(
void)
const;
379 double xHalf(
void)
const;
380 double yHalf(
void)
const;
381 double zHalf(
void)
const;
382 double alpha(
void)
const;
383 double theta(
void)
const;
384 double phi(
void)
const;
406 const std::vector<double>&
z,
407 const std::vector<double>& rmin,
408 const std::vector<double>& rmax);
415 const DDName&
name,
double startPhi,
double deltaPhi,
const std::vector<double>&
z,
const std::vector<double>&
r);
425 const std::vector<double>&
z,
426 const std::vector<double>& rmin,
427 const std::vector<double>& rmax);
437 const std::vector<double>&
z,
438 const std::vector<double>&
r);
444 const std::vector<DDSolid>&
a,
445 const std::vector<DDTranslation>&
t,
446 const std::vector<DDRotation>&
r);
528 double zBottomCut = 0.,
529 double zTopCut = 0.);
535 const std::vector<double>&
x,
536 const std::vector<double>&
y,
537 const std::vector<double>&
z,
538 const std::vector<double>& zx,
539 const std::vector<double>& zy,
540 const std::vector<double>& zscale);
DDSolid solidB(void) const
static DDSolid reflection(const DDName &name, const DDSolid &s)
double radius(void) const
radius of the cut-out (neg.) or rounding (pos.)
DDPseudoTrap(void)=delete
double zBottomCut(void) const
std::vector< double > rMaxVec(void) const
double zSemiAxis(void) const
double phi(void) const
Azimuthal angle of the line joining the centres of the faces at -/+pDz.
DDExtrudedPolygon(void)=delete
double halfZ(void) const
half of the z-Axis
double startPhi(void) const
angular start of the tube-section
double x4(void) const
Half-length along x of the side at y=+pDy2 of the face at +pDz.
double y2(void) const
half length along y on +z
std::vector< double > yVec(void) const
double deltaPhi(void) const
double x2(void) const
Half-length along x of the side at y=+pDy1 of the face at -pDz.
bool atMinusZ(void) const
true, if cut-out or rounding is on the -z side
DDName is used to identify DDD entities uniquely.
std::vector< double > zVec(void) const
std::ostream & operator<<(std::ostream &, const DDSolid &)
double startPhi(void) const
double innerRadius(void) const
DDSubtraction(void)=delete
DDMultiUnion(void)=delete
double deltaPhi(void) const
double x2(void) const
half length along x on +z
double ySemiAxis(void) const
DDRotation rotation(void) const
std::vector< double > rMinVec(void) const
std::vector< double > xVec(void) const
static DDSolid cons(const DDName &name, double zhalf, double rInMinusZ, double rOutMinusZ, double rInPlusZ, double rOutPlusZ, double phiFrom, double deltaPhi)
double deltaPhi(void) const
double phiFrom(void) const
double rInMinusZ(void) const
double radius(void) const
double cutAtStart(void) const
truncation at begin of the tube-section
auto xyPointsSize(void) const -> std::size_t
const std::vector< DDTranslation > & translations(void) const
std::vector< double > zVec(void) const
double rInPlusZ(void) const
double startPhi(void) const
double deltaTheta(void) const
bool cutInside(void) const
true, if truncation is on the inner side of the tube-section
virtual std::vector< double > getVec(const size_t &which, const size_t &offset=0, const size_t &nVecs=1) const
note defaults please.
double deltaPhi(void) const
double zHalf(void) const
half of the z-Axis
double xSemiAxis(void) const
DDSolidShape shape(void) const
The type of the solid.
DDEllipticalTube(void)=delete
DDTranslation translation(void) const
static DDSolid subtraction(const DDName &name, const DDSolid &a, const DDSolid &b, const DDTranslation &t, const DDRotation &r)
static DDSolid truncTubs(const DDName &name, double zHalf, double rIn, double rOut, double startPhi, double deltaPhi, double cutAtStart, double cutAtDelta, bool cutInside)
DDIntersection(void)=delete
A truncated tube section.
static DDSolid parallelepiped(const DDName &name, double xHalf, double yHalf, double zHalf, double alpha, double theta, double phi)
double rOutMinusZ(void) const
static DDSolid multiUnionSolid(const DDName &name, const std::vector< DDSolid > &a, const std::vector< DDTranslation > &t, const std::vector< DDRotation > &r)
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
static DDSolid polyhedra(const DDName &name, int sides, double startPhi, double deltaPhi, const std::vector< double > &z, const std::vector< double > &rmin, const std::vector< double > &rmax)
Creates a polyhedra (refere to Geant3 or Geant4 documentation)
friend std::ostream & operator<<(std::ostream &, const DDSolid &)
double y1(void) const
Half-length along y of the face at -pDz.
double rTorus(void) const
double zHeight(void) const
double startTheta(void) const
double theta(void) const
Polar angle of the line joining the centres of the faces at -/+pDz.
const DDName & name() const
std::vector< double > zVec(void) const
static DDSolid tubs(const DDName &name, double zhalf, double rIn, double rOut, double startPhi, double deltaPhi)
Geom::Theta< T > theta() const
double xSemiAxis(void) const
DDShapelessSolid(void)=delete
std::vector< double > rMaxVec(void) const
Abstract class for DDPolycone and DDPolyhedra. Basically a common member function.
DDParallelepiped(void)=delete
double y1(void) const
half length along y on -z
std::array< double, 3 > lowNorm(void) const
double deltaPhi(void) const
Interface to a Trapezoid.
static DDSolid intersection(const DDName &name, const DDSolid &a, const DDSolid &b, const DDTranslation &t, const DDRotation &r)
static DDSolid extrudedpolygon(const DDName &name, const std::vector< double > &x, const std::vector< double > &y, const std::vector< double > &z, const std::vector< double > &zx, const std::vector< double > &zy, const std::vector< double > &zscale)
double ySemiAxis(void) const
double zTopCut(void) const
static DDSolid ellipticalTube(const DDName &name, double xSemiAxis, double ySemiAxis, double zHeight)
double rIn(void) const
inner radius
std::array< double, 3 > highNorm(void) const
double outerRadius(void) const
std::vector< double > zxVec(void) const
double x1(void) const
half length along x on -z
This is simply a handle on the solid.
static DDSolid orb(const DDName &name, double radius)
double startPhi(void) const
static DDSolid polycone(const DDName &name, double startPhi, double deltaPhi, const std::vector< double > &z, const std::vector< double > &rmin, const std::vector< double > &rmax)
Creates a polycone (refere to Geant3 or Geant4 documentation)
std::vector< double > rVec(void) const
static DDSolid shapeless(const DDName &name)
std::vector< double > zyVec(void) const
static DDSolid unionSolid(const DDName &name, const DDSolid &a, const DDSolid &b, const DDTranslation &t, const DDRotation &r)
static DDSolid cuttubs(const DDName &name, double zhalf, double rIn, double rOut, double startPhi, double deltaPhi, double lx, double ly, double lz, double tx, double ty, double tz)
double deltaPhi(void) const
double halfZ(void) const
half of the z-Axis
static DDSolid torus(const DDName &name, double rMin, double rMax, double rTorus, double startPhi, double deltaPhi)
double y2(void) const
Half-length along y of the face at +pDz.
double startPhi(void) const
double deltaPhi(void) const
angular span of the tube-section
double startPhi(void) const
static DDSolid pseudoTrap(const DDName &name, double pDx1, double pDx2, double pDy1, double pDy2, double pDz, double radius, bool atMinusZ)
double cutAtDelta(void) const
truncation at end of the tube-section
auto zSectionsSize(void) const -> std::size_t
static DDSolid ellipsoid(const DDName &name, double xSemiAxis, double ySemiAxis, double zSemiAxis, double zBottomCut=0., double zTopCut=0.)
const std::vector< DDSolid > & solids(void) const
const std::vector< double > & parameters(void) const
Give the parameters of the solid.
double rOut(void) const
outer radius
const std::vector< DDRotation > & rotations(void) const
A DDSolid represents the shape of a part.
Represents a uniquely identifyable rotation matrix.
double x1(void) const
Half-length along x of the side at y=-pDy1 of the face at -pDz.
static DDSolid sphere(const DDName &name, double innerRadius, double outerRadius, double startPhi, double deltaPhi, double startTheta, double deltaTheta)
DDSolid solidA(void) const
double rOutPlusZ(void) const
const DDI::BooleanSolid & boolean_
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 startPhi(void) const
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 box(const DDName &name, double xHalf, double yHalf, double zHalf)
Creates a box with side length 2*xHalf, 2*yHalf, 2*zHalf.
DDBooleanSolid(void)=delete
std::vector< double > rMinVec(void) const
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 deltaPhi(void) const
std::vector< double > rVec(void) const
DDSolid(void)
Uninitialilzed solid reference-object; for further details on reference-objects see documentation of ...
double x3(void) const
Half-length along x of the side at y=-pDy2 of the face at +pDz.
DDMultiUnionSolid(void)=delete
double volume(void) const
Returns the volume of the given solid (does not work with boolean soids !)
std::vector< double > zscaleVec(void) const