1 #ifndef DETECTOR_DESCRIPTION_CORE_DD_SOLID_H 2 #define DETECTOR_DESCRIPTION_CORE_DD_SOLID_H 59 const std::vector<double>&
parameters(
void)
const;
94 double halfZ(
void)
const;
96 double theta(
void)
const;
98 double phi(
void)
const;
100 double y1(
void)
const;
102 double x1(
void)
const;
104 double x2(
void)
const;
106 double alpha1(
void)
const;
108 double y2(
void)
const;
110 double x3(
void)
const;
112 double x4(
void)
const;
114 double alpha2(
void)
const;
123 double halfZ(
void)
const;
125 double x1(
void)
const;
127 double x2(
void)
const;
129 double y1(
void)
const;
131 double y2(
void)
const;
133 double radius(
void)
const;
145 double zHalf(
void)
const;
147 double rIn(
void)
const;
149 double rOut(
void)
const;
170 DDBox(
void) =
delete;
172 double halfX(
void)
const;
173 double halfY(
void)
const;
174 double halfZ(
void)
const;
203 const std::vector<DDSolid>&
solids(
void)
const;
204 const std::vector<DDTranslation>&
translations(
void)
const;
205 const std::vector<DDRotation>&
rotations(
void)
const;
219 virtual std::vector<double>
getVec(
const size_t&
which,
const size_t&
offset = 0,
const size_t& nVecs = 1)
const;
229 std::vector<double>
zVec(
void)
const;
230 std::vector<double>
rVec(
void)
const;
231 std::vector<double>
rMinVec(
void)
const;
232 std::vector<double>
rMaxVec(
void)
const;
240 int sides(
void)
const;
243 std::vector<double>
zVec(
void)
const;
244 std::vector<double>
rVec(
void)
const;
245 std::vector<double>
rMinVec(
void)
const;
246 std::vector<double>
rMaxVec(
void)
const;
254 std::vector<double>
xVec(
void)
const;
255 std::vector<double>
yVec(
void)
const;
256 std::vector<double>
zVec(
void)
const;
257 std::vector<double>
zxVec(
void)
const;
258 std::vector<double>
zyVec(
void)
const;
259 std::vector<double>
zscaleVec(
void)
const;
271 double zhalf(
void)
const;
272 double rIn(
void)
const;
273 double rOut(
void)
const;
283 double zhalf(
void)
const;
284 double rIn(
void)
const;
285 double rOut(
void)
const;
288 std::array<double, 3>
lowNorm(
void)
const;
289 std::array<double, 3>
highNorm(
void)
const;
297 double zhalf(
void)
const;
311 double rMin(
void)
const;
312 double rMax(
void)
const;
313 double rTorus(
void)
const;
358 DDOrb(
void) =
delete;
360 double radius(
void)
const;
390 double xHalf(
void)
const;
391 double yHalf(
void)
const;
392 double zHalf(
void)
const;
393 double alpha(
void)
const;
394 double theta(
void)
const;
395 double phi(
void)
const;
420 const std::vector<double>&
z,
421 const std::vector<double>& rmin,
422 const std::vector<double>& rmax);
429 const DDName&
name,
double startPhi,
double deltaPhi,
const std::vector<double>&
z,
const std::vector<double>&
r);
439 const std::vector<double>&
z,
440 const std::vector<double>& rmin,
441 const std::vector<double>& rmax);
451 const std::vector<double>&
z,
452 const std::vector<double>&
r);
458 const std::vector<DDSolid>&
a,
459 const std::vector<DDTranslation>&
t,
460 const std::vector<DDRotation>&
r);
542 double zBottomCut = 0.,
543 double zTopCut = 0.);
549 const std::vector<double>&
x,
550 const std::vector<double>&
y,
551 const std::vector<double>&
z,
552 const std::vector<double>& zx,
553 const std::vector<double>& zy,
554 const std::vector<double>& zscale);
DDPseudoTrap(void)=delete
DDExtrudedPolygon(void)=delete
static DDSolid torus(const DDName &name, double rMin, double rMax, double rTorus, double startPhi, double deltaPhi)
double radius(void) const
radius of the cut-out (neg.) or rounding (pos.)
DDSolid solidA(void) const
DDRotation rotation(void) const
std::vector< double > yVec(void) const
std::vector< double > zscaleVec(void) const
double zHeight(void) const
std::vector< double > rMinVec(void) const
A truncated tube section.
double outerRadius(void) const
double zBottomCut(void) const
double startPhi(void) const
angular start of the tube-section
const std::vector< DDTranslation > & translations(void) const
static DDSolid pseudoTrap(const DDName &name, double pDx1, double pDx2, double pDy1, double pDy2, double pDz, double radius, bool atMinusZ)
double rInPlusZ(void) const
Abstract class for DDPolycone and DDPolyhedra. Basically a common member function.
This is simply a handle on the solid.
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)
std::vector< double > rMinVec(void) const
std::vector< double > zVec(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)
double volume(void) const
Returns the volume of the given solid (does not work with boolean soids !)
double deltaPhi(void) const
double rOutMinusZ(void) const
std::vector< double > rMaxVec(void) const
double ySemiAxis(void) const
std::array< double, 3 > highNorm(void) const
double innerRadius(void) const
double zSemiAxis(void) const
double radius(void) const
auto xyPointsSize(void) const -> std::size_t
double cutAtStart(void) const
truncation at begin of the tube-section
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
DDName is used to identify DDD entities uniquely.
std::array< double, 3 > lowNorm(void) const
const std::vector< double > & parameters(void) const
Give the parameters of the solid.
bool cutInside(void) const
true, if truncation is on the inner side of the tube-section
double xSemiAxis(void) const
DDIntersection(void)=delete
const DDI::BooleanSolid & boolean_
A DDSolid represents the shape of a part.
std::vector< double > zVec(void) const
static DDSolid orb(const DDName &name, double radius)
Represents a uniquely identifyable rotation matrix.
double ySemiAxis(void) const
double startPhi(void) const
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 halfZ(void) const
half of the z-Axis
double startTheta(void) const
double x3(void) const
Half-length along x of the side at y=-pDy2 of the face at +pDz.
DDTranslation translation(void) const
double x2(void) const
half length along x on +z
double phiFrom(void) const
static DDSolid intersection(const DDName &name, const DDSolid &a, const DDSolid &b, const DDTranslation &t, const DDRotation &r)
double y2(void) const
half length along y on +z
Interface to an Assembly.
DDParallelepiped(void)=delete
static DDSolid sphere(const DDName &name, double innerRadius, double outerRadius, double startPhi, double deltaPhi, double startTheta, double deltaTheta)
double zHalf(void) const
half of the z-Axis
virtual std::vector< double > getVec(const size_t &which, const size_t &offset=0, const size_t &nVecs=1) const
note defaults please.
Interface to a Trapezoid.
double zTopCut(void) const
double deltaPhi(void) const
static DDSolid assembly(const DDName &name)
Creates an assembly.
double y2(void) const
Half-length along y of the face at +pDz.
static DDSolid reflection(const DDName &name, const DDSolid &s)
std::vector< double > rVec(void) const
static DDSolid tubs(const DDName &name, double zhalf, double rIn, double rOut, double startPhi, double deltaPhi)
double deltaPhi(void) const
DDSolid solidB(void) const
static DDSolid truncTubs(const DDName &name, double zHalf, double rIn, double rOut, double startPhi, double deltaPhi, double cutAtStart, double cutAtDelta, bool cutInside)
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)
std::vector< double > zxVec(void) const
static DDSolid box(const DDName &name, double xHalf, double yHalf, double zHalf)
Creates a box with side length 2*xHalf, 2*yHalf, 2*zHalf.
double rInMinusZ(void) const
double x4(void) const
Half-length along x of the side at y=+pDy2 of the face at +pDz.
DDSolidShape shape(void) const
The type of the solid.
DDMultiUnion(void)=delete
double rIn(void) const
inner radius
const DDName & name() const
double rOutPlusZ(void) const
std::vector< double > zyVec(void) const
double deltaTheta(void) const
double deltaPhi(void) const
static DDSolid multiUnionSolid(const DDName &name, const std::vector< DDSolid > &a, const std::vector< DDTranslation > &t, const std::vector< DDRotation > &r)
double x2(void) const
Half-length along x of the side at y=+pDy1 of the face at -pDz.
static DDSolid ellipticalTube(const DDName &name, double xSemiAxis, double ySemiAxis, double zHeight)
double rOut(void) const
outer radius
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 x1(void) const
half length along x on -z
static DDSolid subtraction(const DDName &name, const DDSolid &a, const DDSolid &b, const DDTranslation &t, const DDRotation &r)
double startPhi(void) const
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 deltaPhi(void) const
static DDSolid ellipsoid(const DDName &name, double xSemiAxis, double ySemiAxis, double zSemiAxis, double zBottomCut=0., double zTopCut=0.)
double startPhi(void) const
auto zSectionsSize(void) const -> std::size_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 shapeless(const DDName &name)
DDEllipticalTube(void)=delete
std::vector< double > zVec(void) const
double startPhi(void) const
DDShapelessSolid(void)=delete
std::vector< double > rVec(void) const
std::vector< double > rMaxVec(void) const
double xSemiAxis(void) const
double deltaPhi(void) const
angular span of the tube-section
double deltaPhi(void) const
double y1(void) const
Half-length along y of the face at -pDz.
DDBooleanSolid(void)=delete
DDSubtraction(void)=delete
DDSolid(void)
Uninitialilzed solid reference-object; for further details on reference-objects see documentation of ...
static DDSolid unionSolid(const DDName &name, const DDSolid &a, const DDSolid &b, const DDTranslation &t, const DDRotation &r)
double startPhi(void) const
double deltaPhi(void) const
const std::vector< DDRotation > & rotations(void) const
double rTorus(void) const
friend std::ostream & operator<<(std::ostream &, const DDSolid &)
double startPhi(void) const
bool atMinusZ(void) const
true, if cut-out or rounding is on the -z side
DDMultiUnionSolid(void)=delete
Geom::Theta< T > theta() const
double y1(void) const
half length along y on -z
double theta(void) const
Polar angle of the line joining the centres of the faces at -/+pDz.
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
double cutAtDelta(void) const
truncation at end of the tube-section
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)
const std::vector< DDSolid > & solids(void) const
static DDSolid parallelepiped(const DDName &name, double xHalf, double yHalf, double zHalf, double alpha, double theta, double phi)
std::ostream & operator<<(std::ostream &, const DDSolid &)
double x1(void) const
Half-length along x of the side at y=-pDy1 of the face at -pDz.