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;
139 double zHalf(
void )
const;
141 double rIn(
void )
const;
143 double rOut(
void )
const;
168 double halfX(
void )
const;
169 double halfY(
void )
const;
170 double halfZ(
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;
242 int sides(
void )
const;
245 std::vector<double>
zVec(
void )
const;
246 std::vector<double>
rVec(
void )
const;
247 std::vector<double>
rMinVec(
void )
const;
248 std::vector<double>
rMaxVec(
void )
const;
258 double zhalf(
void )
const;
259 double rIn(
void )
const;
260 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;
288 double zhalf(
void )
const;
304 double rMin(
void )
const;
305 double rMax(
void )
const;
306 double rTorus(
void )
const;
360 double radius(
void )
const;
396 double xHalf(
void )
const;
397 double yHalf(
void )
const;
398 double zHalf(
void )
const;
399 double alpha(
void )
const;
400 double theta(
void )
const;
401 double phi(
void )
const;
428 const std::vector<double> &
z,
429 const std::vector<double> & rmin,
430 const std::vector<double> & rmax );
437 const std::vector<double> & z,
438 const std::vector<double> &
r );
446 double startPhi,
double deltaPhi,
447 const std::vector<double> & z,
448 const std::vector<double> & rmin,
449 const std::vector<double> & rmax );
457 double startPhi,
double deltaPhi,
458 const std::vector<double> & z,
459 const std::vector<double> & r );
481 double pTheta,
double pPhi,
482 double pDy1,
double pDx1,
double pDx2,
484 double pDy2,
double pDx3,
double pDx4,
508 double rIn,
double rOut,
514 double rIn,
double rOut,
517 double lx,
double ly,
double lz,
518 double tx,
double ty,
double tz);
556 double zBottomCut = 0.,
557 double zTopCut = 0. );
560 double xHalf,
double yHalf,
double zHalf,
static DDSolid torus(const DDName &name, double rMin, double rMax, double rTorus, double startPhi, double deltaPhi)
double startPhi(void) const
double cutAtStart(void) const
truncation at begin of the tube-section
const std::vector< double > & parameters(void) const
Give the parameters of the solid.
double xSemiAxis(void) const
double halfZ(void) const
half of the z-Axis
bool cutInside(void) const
true, if truncation is on the inner side of the tube-section
std::vector< double > rVec(void) const
A truncated tube section.
double x1(void) const
Half-length along x of the side at y=-pDy1 of the face at -pDz.
const DDName & name() const
double zHalf(void) const
half of the z-Axis
double y2(void) const
half length along y on +z
double startTheta(void) const
std::vector< double > rMaxVec(void) const
double deltaPhi(void) const
angular span of the tube-section
static DDSolid pseudoTrap(const DDName &name, double pDx1, double pDx2, double pDy1, double pDy2, double pDz, double radius, bool atMinusZ)
double deltaPhi(void) const
std::vector< double > rMaxVec(void) const
static DDSolid parallelepiped(const DDName &name, double xHalf, double yHalf, double zHalf, double alpha, double theta, double phi)
Abstract class for DDPolycone and DDPolyhedra. Basically a common member function.
double phi(void) const
Azimuthal angle of the line joining the centres of the faces at -/+pDz.
This is simply a handle on the solid.
virtual std::vector< double > getVec(const size_t &which, const size_t &offset=0, const size_t &nVecs=1) const
note defaults please.
static DDSolid cons(const DDName &name, double zhalf, double rInMinusZ, double rOutMinusZ, double rInPlusZ, double rOutPlusZ, double phiFrom, double deltaPhi)
std::array< double, 3 > highNorm(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)
friend class DDPersToDDDFactory
double rTorus(void) const
std::vector< double > rVec(void) const
double cutAtDelta(void) const
truncation at end of the tube-section
double phiFrom(void) const
Geom::Theta< T > theta() const
Streaming the DDD transient store from/into a std::istream/std::ostream */.
double zTopCut(void) const
DDName is used to identify DDD entities uniquely.
double radius(void) const
double rIn(void) const
inner radius
double rOutMinusZ(void) const
double rOutPlusZ(void) const
DDTranslation translation(void) const
std::ostream & operator<<(std::ostream &out, const ALILine &li)
double ySemiAxis(void) const
double innerRadius(void) const
A DDSolid represents the shape of a part.
double y1(void) const
half length along y on -z
DDSolid solidB(void) const
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
Represents a uniquely identifyable rotation matrix.
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)
std::array< double, 3 > lowNorm(void) const
double outerRadius(void) const
DDSolid unreflected(void) const
double x4(void) const
Half-length along x of the side at y=+pDy2 of the face at +pDz.
DDI::BooleanSolid * boolean_
static DDSolid intersection(const DDName &name, const DDSolid &a, const DDSolid &b, const DDTranslation &t, const DDRotation &r)
DDRotation rotation(void) const
bool atMinusZ(void) const
true, if cut-out or rounding is on the -z side
double halfZ(void) const
half of the z-Axis
std::vector< double > rMinVec(void) const
double startPhi(void) const
double startPhi(void) const
double xSemiAxis(void) const
static DDSolid sphere(const DDName &name, double innerRadius, double outerRadius, double startPhi, double deltaPhi, double startTheta, double deltaTheta)
static DDSolid orb(const DDName &name, double radius)
DDI::Reflection * reflected_
double deltaPhi(void) const
static DDSolid ellipsoid(const DDName &name, double xSemiAxis, double ySemiAxis, double zSemiAxis, double zBottomCut=0., double zTopCut=0.)
Interface to a Trapezoid.
double startPhi(void) const
double y1(void) const
Half-length along y of the face at -pDz.
double rInMinusZ(void) const
DDSolidShape shape(void) const
The type of the solid.
double deltaTheta(void) const
static DDSolid tubs(const DDName &name, double zhalf, double rIn, double rOut, double startPhi, double deltaPhi)
double ySemiAxis(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)
static DDSolid box(const DDName &name, double xHalf, double yHalf, double zHalf)
Creates a box with side length 2*xHalf, 2*yHalf, 2*zHalf.
std::vector< double > rMinVec(void) const
double deltaPhi(void) const
DDSolid solidA(void) const
double deltaPhi(void) const
double deltaPhi(void) const
double startPhi(void) const
static DDSolid ellipticalTube(const DDName &name, double xSemiAxis, double ySemiAxis, double zHeight)
std::vector< double > zVec(void) const
double deltaPhi(void) const
static DDSolid subtraction(const DDName &name, const DDSolid &a, const DDSolid &b, const DDTranslation &t, const DDRotation &r)
friend class DDDToPersFactory
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 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...
double startPhi(void) const
angular start of the tube-section
double zBottomCut(void) const
double x2(void) const
Half-length along x of the side at y=+pDy1 of the face at -pDz.
static DDSolid reflection(const DDName &name, const DDSolid &s)
static DDSolid shapeless(const DDName &name)
double zHeight(void) const
double zSemiAxis(void) const
double deltaPhi(void) const
double y2(void) const
Half-length along y of the face at +pDz.
double rInPlusZ(void) const
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)
friend std::ostream & operator<<(std::ostream &, const DDSolid &)
double x2(void) const
half length along x on +z
double rOut(void) const
outer radius
double theta(void) const
Polar angle of the line joining the centres of the faces at -/+pDz.
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)
double x3(void) const
Half-length along x of the side at y=-pDy2 of the face at +pDz.
double volume(void) const
Returns the volume of the given solid (does not work with boolean soids !)
std::vector< double > zVec(void) const
double x1(void) const
half length along x on -z
double startPhi(void) const
double radius(void) const
radius of the cut-out (neg.) or rounding (pos.)