CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DDSolid.h
Go to the documentation of this file.
1 #ifndef DETECTOR_DESCRIPTION_CORE_DD_SOLID_H
2 #define DETECTOR_DESCRIPTION_CORE_DD_SOLID_H
3 
4 #include <cstddef>
5 #include <iosfwd>
6 #include <memory>
7 #include <vector>
8 
14 
15 class DDSolid;
16 
17 namespace DDI {
18  class BooleanSolid;
19  class MultiUnion;
20  class Reflection;
21  class Solid;
22 } // namespace DDI
23 struct DDSolidFactory;
24 
25 std::ostream& operator<<(std::ostream&, const DDSolid&);
26 
28 
39 class DDSolid : public DDBase<DDName, std::unique_ptr<DDI::Solid>> {
40  friend std::ostream& operator<<(std::ostream&, const DDSolid&);
41  friend struct DDSolidFactory;
42 
43 public:
45  DDSolid(void);
46 
48 
56  DDSolid(const DDName& name);
57 
59  const std::vector<double>& parameters(void) const;
60 
62  double volume(void) const;
63 
65  DDSolidShape shape(void) const;
66 
67 private:
68  DDSolid(const DDName&, std::unique_ptr<DDI::Solid>);
69  DDSolid(const DDName&, DDSolidShape, const std::vector<double>&);
70 };
71 
73 
77 class DDAssembly : public DDSolid {
78 public:
79  DDAssembly(const DDSolid& s);
80  DDAssembly(void) = delete;
81 };
82 
84 
88 class DDTrap : public DDSolid {
89 public:
90  DDTrap(const DDSolid& s);
91  DDTrap(void) = delete;
92 
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;
115 };
116 
117 class DDPseudoTrap : public DDSolid {
118 public:
119  DDPseudoTrap(const DDSolid& s);
120  DDPseudoTrap(void) = delete;
121 
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;
135  bool atMinusZ(void) const;
136 };
137 
139 class DDTruncTubs : public DDSolid {
140 public:
141  DDTruncTubs(const DDSolid& s);
142  DDTruncTubs(void) = delete;
143 
145  double zHalf(void) const;
147  double rIn(void) const;
149  double rOut(void) const;
151  double startPhi(void) const;
153  double deltaPhi(void) const;
155  double cutAtStart(void) const;
157  double cutAtDelta(void) const;
159  bool cutInside(void) const;
160 };
161 
163 
167 class DDBox : public DDSolid {
168 public:
169  DDBox(const DDSolid& s);
170  DDBox(void) = delete;
171 
172  double halfX(void) const;
173  double halfY(void) const;
174  double halfZ(void) const;
175 };
176 
178 class DDShapelessSolid : public DDSolid {
179 public:
180  DDShapelessSolid(const DDSolid& s);
181  DDShapelessSolid(void) = delete;
182 };
183 
184 class DDBooleanSolid : public DDSolid {
185 public:
186  DDBooleanSolid(const DDSolid& s);
187  DDBooleanSolid(void) = delete;
188 
189  DDSolid solidA(void) const;
190  DDSolid solidB(void) const;
191  DDTranslation translation(void) const;
192  DDRotation rotation(void) const;
193 
194 private:
196 };
197 
198 class DDMultiUnionSolid : public DDSolid {
199 public:
200  DDMultiUnionSolid(const DDSolid& s);
201  DDMultiUnionSolid(void) = delete;
202 
203  const std::vector<DDSolid>& solids(void) const;
204  const std::vector<DDTranslation>& translations(void) const;
205  const std::vector<DDRotation>& rotations(void) const;
206 
207 private:
208  DDI::MultiUnion* union_;
209 };
210 
212 class DDPolySolid : public DDSolid {
213 public:
214  DDPolySolid(const DDSolid& s);
215  DDPolySolid(void) = delete;
216 
217 protected:
219  virtual std::vector<double> getVec(const size_t& which, const size_t& offset = 0, const size_t& nVecs = 1) const;
220 };
221 
222 class DDPolycone : public DDPolySolid {
223 public:
224  DDPolycone(const DDSolid& s);
225  DDPolycone(void) = delete;
226 
227  double startPhi(void) const;
228  double deltaPhi(void) 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;
233 };
234 
235 class DDPolyhedra : public DDPolySolid {
236 public:
237  DDPolyhedra(const DDSolid& s);
238  DDPolyhedra(void) = delete;
239 
240  int sides(void) const;
241  double startPhi(void) const;
242  double deltaPhi(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;
247 };
248 
250 public:
251  DDExtrudedPolygon(const DDSolid& s);
252  DDExtrudedPolygon(void) = delete;
253 
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;
260 
261 private:
262  auto xyPointsSize(void) const -> std::size_t;
263  auto zSectionsSize(void) const -> std::size_t;
264 };
265 
266 class DDTubs : public DDSolid {
267 public:
268  DDTubs(const DDSolid& s);
269  DDTubs(void) = delete;
270 
271  double zhalf(void) const;
272  double rIn(void) const;
273  double rOut(void) const;
274  double startPhi(void) const;
275  double deltaPhi(void) const;
276 };
277 
278 class DDCutTubs : public DDSolid {
279 public:
280  DDCutTubs(const DDSolid& s);
281  DDCutTubs(void) = delete;
282 
283  double zhalf(void) const;
284  double rIn(void) const;
285  double rOut(void) const;
286  double startPhi(void) const;
287  double deltaPhi(void) const;
288  std::array<double, 3> lowNorm(void) const;
289  std::array<double, 3> highNorm(void) const;
290 };
291 
292 class DDCons : public DDSolid {
293 public:
294  DDCons(const DDSolid& s);
295  DDCons(void) = delete;
296 
297  double zhalf(void) const;
298  double rInMinusZ(void) const;
299  double rOutMinusZ(void) const;
300  double rInPlusZ(void) const;
301  double rOutPlusZ(void) const;
302  double phiFrom(void) const;
303  double deltaPhi(void) const;
304 };
305 
306 class DDTorus : public DDSolid {
307 public:
308  DDTorus(const DDSolid& s);
309  DDTorus(void) = delete;
310 
311  double rMin(void) const;
312  double rMax(void) const;
313  double rTorus(void) const;
314  double startPhi(void) const;
315  double deltaPhi(void) const;
316 };
317 
318 class DDUnion : public DDBooleanSolid {
319 public:
320  DDUnion(const DDSolid& s);
321  DDUnion(void) = delete;
322 };
323 
325 public:
326  DDMultiUnion(const DDSolid& s);
327  DDMultiUnion(void) = delete;
328 };
329 
331 public:
332  DDIntersection(const DDSolid& s);
333  DDIntersection(void) = delete;
334 };
335 
337 public:
338  DDSubtraction(const DDSolid& s);
339  DDSubtraction(void) = delete;
340 };
341 
342 class DDSphere : public DDSolid {
343 public:
344  DDSphere(const DDSolid& s);
345  DDSphere(void) = delete;
346 
347  double innerRadius(void) const;
348  double outerRadius(void) const;
349  double startPhi(void) const;
350  double deltaPhi(void) const;
351  double startTheta(void) const;
352  double deltaTheta(void) const;
353 };
354 
355 class DDOrb : public DDSolid {
356 public:
357  DDOrb(const DDSolid& s);
358  DDOrb(void) = delete;
359 
360  double radius(void) const;
361 };
362 
363 class DDEllipticalTube : public DDSolid {
364 public:
365  DDEllipticalTube(const DDSolid& s);
366  DDEllipticalTube(void) = delete;
367 
368  double xSemiAxis(void) const;
369  double ySemiAxis(void) const;
370  double zHeight(void) const;
371 };
372 
373 class DDEllipsoid : public DDSolid {
374 public:
375  DDEllipsoid(const DDSolid& s);
376  DDEllipsoid(void) = delete;
377 
378  double xSemiAxis(void) const;
379  double ySemiAxis(void) const;
380  double zSemiAxis(void) const;
381  double zBottomCut(void) const;
382  double zTopCut(void) const;
383 };
384 
385 class DDParallelepiped : public DDSolid {
386 public:
387  DDParallelepiped(const DDSolid& s);
388  DDParallelepiped(void) = delete;
389 
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;
396 };
397 
398 // Solid generation functions
399 //
402  static DDSolid assembly(const DDName& name);
403 
405 
411  static DDSolid box(const DDName& name, double xHalf, double yHalf, double zHalf);
412 
414 
417  static DDSolid polycone(const DDName& name,
418  double startPhi,
419  double deltaPhi,
420  const std::vector<double>& z,
421  const std::vector<double>& rmin,
422  const std::vector<double>& rmax);
423 
425 
428  static DDSolid polycone(
429  const DDName& name, double startPhi, double deltaPhi, const std::vector<double>& z, const std::vector<double>& r);
430 
432 
435  static DDSolid polyhedra(const DDName& name,
436  int sides,
437  double startPhi,
438  double deltaPhi,
439  const std::vector<double>& z,
440  const std::vector<double>& rmin,
441  const std::vector<double>& rmax);
442 
444 
447  static DDSolid polyhedra(const DDName& name,
448  int sides,
449  double startPhi,
450  double deltaPhi,
451  const std::vector<double>& z,
452  const std::vector<double>& r);
453 
454  static DDSolid unionSolid(
455  const DDName& name, const DDSolid& a, const DDSolid& b, const DDTranslation& t, const DDRotation& r);
456 
457  static DDSolid multiUnionSolid(const DDName& name,
458  const std::vector<DDSolid>& a,
459  const std::vector<DDTranslation>& t,
460  const std::vector<DDRotation>& r);
461 
462  static DDSolid intersection(
463  const DDName& name, const DDSolid& a, const DDSolid& b, const DDTranslation& t, const DDRotation& r);
464 
465  static DDSolid subtraction(
466  const DDName& name, const DDSolid& a, const DDSolid& b, const DDTranslation& t, const DDRotation& r);
467 
468  static DDSolid trap(const DDName& name,
469  double pDz,
470  double pTheta,
471  double pPhi,
472  double pDy1,
473  double pDx1,
474  double pDx2,
475  double pAlp1,
476  double pDy2,
477  double pDx3,
478  double pDx4,
479  double pAlp2);
480 
481  static DDSolid pseudoTrap(const DDName& name,
482  double pDx1,
483  double pDx2,
484  double pDy1,
485  double pDy2,
486  double pDz,
487  double radius,
488  bool atMinusZ);
490  static DDSolid truncTubs(const DDName& name,
491  double zHalf,
492  double rIn,
493  double rOut,
494  double startPhi,
495  double deltaPhi,
496  double cutAtStart,
497  double cutAtDelta,
498  bool cutInside);
499 
500  static DDSolid tubs(const DDName& name, double zhalf, double rIn, double rOut, double startPhi, double deltaPhi);
501 
502  static DDSolid cuttubs(const DDName& name,
503  double zhalf,
504  double rIn,
505  double rOut,
506  double startPhi,
507  double deltaPhi,
508  double lx,
509  double ly,
510  double lz,
511  double tx,
512  double ty,
513  double tz);
514 
515  static DDSolid cons(const DDName& name,
516  double zhalf,
517  double rInMinusZ,
518  double rOutMinusZ,
519  double rInPlusZ,
520  double rOutPlusZ,
521  double phiFrom,
522  double deltaPhi);
523 
524  static DDSolid torus(const DDName& name, double rMin, double rMax, double rTorus, double startPhi, double deltaPhi);
525 
526  static DDSolid sphere(const DDName& name,
527  double innerRadius,
528  double outerRadius,
529  double startPhi,
530  double deltaPhi,
531  double startTheta,
532  double deltaTheta);
533 
534  static DDSolid orb(const DDName& name, double radius);
535 
536  static DDSolid ellipticalTube(const DDName& name, double xSemiAxis, double ySemiAxis, double zHeight);
537 
538  static DDSolid ellipsoid(const DDName& name,
539  double xSemiAxis,
540  double ySemiAxis,
541  double zSemiAxis,
542  double zBottomCut = 0.,
543  double zTopCut = 0.);
544 
545  static DDSolid parallelepiped(
546  const DDName& name, double xHalf, double yHalf, double zHalf, double alpha, double theta, double phi);
547 
548  static DDSolid extrudedpolygon(const DDName& name,
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);
555 
556  static DDSolid shapeless(const DDName& name);
557 
558  static DDSolid reflection(const DDName& name, const DDSolid& s);
559 };
560 
561 #endif
double zhalf(void) const
Definition: DDSolid.cc:414
DDPseudoTrap(void)=delete
DDExtrudedPolygon(void)=delete
Definition: DDBase.h:10
static DDSolid torus(const DDName &name, double rMin, double rMax, double rTorus, double startPhi, double deltaPhi)
Definition: DDSolid.cc:662
double startPhi(void) const
Definition: DDSolid.cc:317
double zhalf(void) const
Definition: DDSolid.cc:516
double cutAtStart(void) const
truncation at begin of the tube-section
Definition: DDSolid.cc:176
const std::vector< double > & parameters(void) const
Give the parameters of the solid.
Definition: DDSolid.cc:125
double xHalf(void) const
double xSemiAxis(void) const
float alpha
Definition: AMPTWrapper.h:105
double phi(void) const
double halfZ(void) const
half of the z-Axis
Definition: DDSolid.cc:135
DDBox(void)=delete
def which
Definition: eostools.py:336
bool cutInside(void) const
true, if truncation is on the inner side of the tube-section
Definition: DDSolid.cc:180
double halfZ(void) const
Definition: DDSolid.cc:216
DDTorus(void)=delete
std::vector< double > rVec(void) const
Definition: DDSolid.cc:279
A truncated tube section.
Definition: DDSolid.h:139
double theta(void) const
double x1(void) const
Half-length along x of the side at y=-pDy1 of the face at -pDz.
Definition: DDSolid.cc:143
double zHalf(void) const
half of the z-Axis
Definition: DDSolid.cc:166
double y2(void) const
half length along y on +z
Definition: DDSolid.cc:198
double halfY(void) const
Definition: DDSolid.cc:214
double startTheta(void) const
Definition: DDSolid.cc:490
std::vector< double > rMaxVec(void) const
Definition: DDSolid.cc:342
double deltaPhi(void) const
angular span of the tube-section
Definition: DDSolid.cc:174
static DDSolid pseudoTrap(const DDName &name, double pDx1, double pDx2, double pDy1, double pDy2, double pDz, double radius, bool atMinusZ)
Definition: DDSolid.cc:625
double deltaPhi(void) const
Definition: DDSolid.cc:488
std::vector< double > rMaxVec(void) const
Definition: DDSolid.cc:300
Abstract class for DDPolycone and DDPolyhedra. Basically a common member function.
Definition: DDSolid.h:212
double phi(void) const
Azimuthal angle of the line joining the centres of the faces at -/+pDz.
Definition: DDSolid.cc:139
DDPolySolid(void)=delete
DDOrb(void)=delete
This is simply a handle on the solid.
Definition: DDSolid.h:178
virtual std::vector< double > getVec(const size_t &which, const size_t &offset=0, const size_t &nVecs=1) const
note defaults please.
Definition: DDSolid.cc:252
static DDSolid cons(const DDName &name, double zhalf, double rInMinusZ, double rOutMinusZ, double rInPlusZ, double rOutPlusZ, double phiFrom, double deltaPhi)
Definition: DDSolid.cc:650
std::array< double, 3 > highNorm(void) const
Definition: DDSolid.cc:530
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)
Definition: DDSolid.cc:551
double rTorus(void) const
Definition: DDSolid.cc:440
std::vector< double > rVec(void) const
Definition: DDSolid.cc:321
double cutAtDelta(void) const
truncation at end of the tube-section
Definition: DDSolid.cc:178
std::vector< double > yVec(void) const
Definition: DDSolid.cc:382
double phiFrom(void) const
Definition: DDSolid.cc:424
Geom::Theta< T > theta() const
auto xyPointsSize(void) const -> std::size_t
Definition: DDSolid.cc:357
DDSphere(void)=delete
double zTopCut(void) const
DDName is used to identify DDD entities uniquely.
Definition: DDName.h:17
double radius(void) const
double rIn(void) const
inner radius
Definition: DDSolid.cc:168
double rOutMinusZ(void) const
Definition: DDSolid.cc:418
double rOutPlusZ(void) const
Definition: DDSolid.cc:422
std::vector< double > zyVec(void) const
Definition: DDSolid.cc:397
DDPolyhedra(void)=delete
DDTranslation translation(void) const
Definition: DDSolid.cc:468
std::ostream & operator<<(std::ostream &out, const ALILine &li)
Definition: ALILine.cc:167
double ySemiAxis(void) const
DDIntersection(void)=delete
double innerRadius(void) const
Definition: DDSolid.cc:482
const DDI::BooleanSolid & boolean_
Definition: DDSolid.h:195
A DDSolid represents the shape of a part.
Definition: DDSolid.h:39
double y1(void) const
half length along y on -z
Definition: DDSolid.cc:196
DDSolid solidB(void) const
Definition: DDSolid.cc:472
DDTruncTubs(void)=delete
static DDSolid orb(const DDName &name, double radius)
double rMax(void) const
Definition: DDSolid.cc:438
Represents a uniquely identifyable rotation matrix.
Definition: DDTransform.h:57
std::vector< double > xVec(void) const
Definition: DDSolid.cc:378
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)
Definition: DDSolid.cc:672
std::array< double, 3 > lowNorm(void) const
Definition: DDSolid.cc:526
double outerRadius(void) const
Definition: DDSolid.cc:484
DDTubs(void)=delete
DDPolycone(void)=delete
double x4(void) const
Half-length along x of the side at y=+pDy2 of the face at +pDz.
Definition: DDSolid.cc:153
static DDSolid intersection(const DDName &name, const DDSolid &a, const DDSolid &b, const DDTranslation &t, const DDRotation &r)
Definition: DDSolid.cc:604
DDRotation rotation(void) const
Definition: DDSolid.cc:466
double yHalf(void) const
bool atMinusZ(void) const
true, if cut-out or rounding is on the -z side
Definition: DDSolid.cc:202
Interface to an Assembly.
Definition: DDSolid.h:77
double halfZ(void) const
half of the z-Axis
Definition: DDSolid.cc:190
std::vector< double > rMinVec(void) const
Definition: DDSolid.cc:293
DDParallelepiped(void)=delete
double startPhi(void) const
Definition: DDSolid.cc:460
double startPhi(void) const
Definition: DDSolid.cc:275
double xSemiAxis(void) const
Definition: DDSolid.cc:502
static DDSolid sphere(const DDName &name, double innerRadius, double outerRadius, double startPhi, double deltaPhi, double startTheta, double deltaTheta)
Definition: DDSolid.cc:687
double deltaPhi(void) const
Definition: DDSolid.cc:277
Interface to a Trapezoid.
Definition: DDSolid.h:88
double startPhi(void) const
Definition: DDSolid.cc:486
double alpha(void) const
double y1(void) const
Half-length along y of the face at -pDz.
Definition: DDSolid.cc:141
double rInMinusZ(void) const
Definition: DDSolid.cc:416
static DDSolid assembly(const DDName &name)
Creates an assembly.
Definition: DDSolid.cc:545
DDSolidShape shape(void) const
The type of the solid.
Definition: DDSolid.cc:123
double rOut(void) const
Definition: DDSolid.cc:520
static DDSolid reflection(const DDName &name, const DDSolid &s)
double deltaTheta(void) const
Definition: DDSolid.cc:492
static DDSolid tubs(const DDName &name, double zhalf, double rIn, double rOut, double startPhi, double deltaPhi)
Definition: DDSolid.cc:667
DDI::MultiUnion * union_
Definition: DDSolid.h:208
double ySemiAxis(void) const
Definition: DDSolid.cc:504
static DDSolid truncTubs(const DDName &name, double zHalf, double rIn, double rOut, double startPhi, double deltaPhi, double cutAtStart, double cutAtDelta, bool cutInside)
Definition: DDSolid.cc:637
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)
Definition: DDSolid.cc:609
double rMin(void) const
Definition: DDSolid.cc:436
static DDSolid box(const DDName &name, double xHalf, double yHalf, double zHalf)
Creates a box with side length 2*xHalf, 2*yHalf, 2*zHalf.
Definition: DDSolid.cc:547
std::vector< double > rMinVec(void) const
Definition: DDSolid.cc:335
double rOut(void) const
Definition: DDSolid.cc:458
double deltaPhi(void) const
Definition: DDSolid.cc:524
DDMultiUnion(void)=delete
int sides(void) const
Definition: DDSolid.cc:315
DDSolid solidA(void) const
Definition: DDSolid.cc:470
double deltaPhi(void) const
Definition: DDSolid.cc:426
double deltaPhi(void) const
Definition: DDSolid.cc:462
double startPhi(void) const
Definition: DDSolid.cc:442
DDCutTubs(void)=delete
std::vector< double > zVec(void) const
Definition: DDSolid.cc:387
double halfX(void) const
Definition: DDSolid.cc:212
static DDSolid multiUnionSolid(const DDName &name, const std::vector< DDSolid > &a, const std::vector< DDTranslation > &t, const std::vector< DDRotation > &r)
std::vector< double > zxVec(void) const
Definition: DDSolid.cc:392
static DDSolid ellipticalTube(const DDName &name, double xSemiAxis, double ySemiAxis, double zHeight)
Definition: DDSolid.cc:698
const std::vector< DDTranslation > & translations(void) const
std::vector< double > zVec(void) const
Definition: DDSolid.cc:328
double deltaPhi(void) const
Definition: DDSolid.cc:444
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)
Definition: DDSolid.cc:584
Interface to a Box.
Definition: DDSolid.h:167
static DDSolid subtraction(const DDName &name, const DDSolid &a, const DDSolid &b, const DDTranslation &t, const DDRotation &r)
Definition: DDSolid.cc:599
DDSolidShape
Definition: DDSolidShapes.h:6
double b
Definition: hdecay.h:118
static DDSolid ellipsoid(const DDName &name, double xSemiAxis, double ySemiAxis, double zSemiAxis, double zBottomCut=0., double zTopCut=0.)
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...
Definition: DDSolid.cc:147
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...
Definition: DDSolid.cc:155
double startPhi(void) const
angular start of the tube-section
Definition: DDSolid.cc:172
double zBottomCut(void) const
auto zSectionsSize(void) const -> std::size_t
Definition: DDSolid.cc:365
DDEllipsoid(void)=delete
Definition: DDSolid.h:355
double x2(void) const
Half-length along x of the side at y=+pDy1 of the face at -pDz.
Definition: DDSolid.cc:145
double zhalf(void) const
Definition: DDSolid.cc:454
DDAssembly(void)=delete
static DDSolid shapeless(const DDName &name)
Definition: DDSolid.cc:702
DDEllipticalTube(void)=delete
DDShapelessSolid(void)=delete
double zHeight(void) const
Definition: DDSolid.cc:506
double a
Definition: hdecay.h:119
double zSemiAxis(void) const
DDUnion(void)=delete
double deltaPhi(void) const
Definition: DDSolid.cc:319
double y2(void) const
Half-length along y of the face at +pDz.
Definition: DDSolid.cc:149
DDBooleanSolid(void)=delete
const std::vector< DDSolid > & solids(void) const
DDSubtraction(void)=delete
double rInPlusZ(void) const
Definition: DDSolid.cc:420
DDSolid(void)
Uninitialilzed solid reference-object; for further details on reference-objects see documentation of ...
Definition: DDSolid.cc:50
double zHalf(void) const
static DDSolid unionSolid(const DDName &name, const DDSolid &a, const DDSolid &b, const DDTranslation &t, const DDRotation &r)
Definition: DDSolid.cc:594
DDTrap(void)=delete
friend std::ostream & operator<<(std::ostream &, const DDSolid &)
Definition: DDSolid.cc:34
double x2(void) const
half length along x on +z
Definition: DDSolid.cc:194
double rIn(void) const
Definition: DDSolid.cc:518
double rIn(void) const
Definition: DDSolid.cc:456
double rOut(void) const
outer radius
Definition: DDSolid.cc:170
double theta(void) const
Polar angle of the line joining the centres of the faces at -/+pDz.
Definition: DDSolid.cc:137
DDMultiUnionSolid(void)=delete
std::vector< double > zscaleVec(void) const
Definition: DDSolid.cc:402
const std::vector< DDRotation > & rotations(void) const
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
Definition: DDTranslation.h:7
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)
Definition: DDSolid.cc:565
double x3(void) const
Half-length along x of the side at y=-pDy2 of the face at +pDz.
Definition: DDSolid.cc:151
double volume(void) const
Returns the volume of the given solid (does not work with boolean soids !)
Definition: DDSolid.cc:121
std::vector< double > zVec(void) const
Definition: DDSolid.cc:286
double x1(void) const
half length along x on -z
Definition: DDSolid.cc:192
static DDSolid parallelepiped(const DDName &name, double xHalf, double yHalf, double zHalf, double alpha, double theta, double phi)
double startPhi(void) const
Definition: DDSolid.cc:522
double radius(void) const
radius of the cut-out (neg.) or rounding (pos.)
Definition: DDSolid.cc:200
DDCons(void)=delete