CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
DDSolid.h
Go to the documentation of this file.
1 #ifndef DDSolid_h
2 #define DDSolid_h
3 
4 #include <stdexcept>
5 #include <iosfwd>
6 #include <vector>
7 #include <utility>
8 
14 
15 namespace DDI { class Solid; }
16 namespace DDI { class Reflection; }
17 namespace DDI { class BooleanSolid; }
18 
19 
20 //class DDSolidImpl;
21 class DDSolid;
22 
23 class DDSolidFactory;
24 class DDStreamer;
25 //class DDBooleanImpl;
26 
27 std::ostream & operator<<( std::ostream &, const DDSolid &);
28 
29 
31 
42 class DDSolid : public DDBase<DDName,DDI::Solid*>
43 {
44  friend std::ostream & operator<<(std::ostream &, const DDSolid &);
45  friend class DDSolidFactory;
46  friend class DDDToPersFactory;
47  friend class DDPersToDDDFactory;
48  friend class DDStreamer;
49 
50 public:
52  DDSolid();
53 
55 
63  DDSolid(const DDName & name);
64 
66 
72  const std::vector<double> & parameters() const;// { return rep().parameters(); }
74 
76  double volume() const; // { return rep().volume(); }
77 
79  DDSolidShape shape() const; // { return rep().shape(); }
80 
82  //bool boolean() const; // { return rep().boolean(); }
83 
85 
92  //DDSolidShape boolean( DDSolid & A, DDSolid & B, DDRotation &, DDTranslation &);
93 
94 /* static void clear(); */
95 
96 private:
97  DDSolid(const DDName &, DDI::Solid *);
98  DDSolid(const DDName &, DDSolidShape, const std::vector<double> &);
99 };
100 
101  struct Composites {
102  Composites (const DDSolid & A, const DDSolid & B,
103  const DDTranslation & T, const DDRotation & R)
104  : a_(A), b_(B), t_(T), r_(R) { }
105  const DDSolid a_, b_;
107  const DDRotation r_;
108  };
109 
111 
115 class DDTrap : public DDSolid
116 {
117 public:
118  DDTrap(const DDSolid & s);
120  double halfZ() const;
122  double theta() const;
124  double phi() const;
126  double y1() const;
128  double x1() const;
130  double x2() const;
132  double alpha1() const;
134  double y2() const;
136  double x3() const;
138  double x4() const;
140  double alpha2() const;
141 };
142 
143 class DDPseudoTrap : public DDSolid
144 {
145 public:
146  DDPseudoTrap(const DDSolid & s);
148  double halfZ() const;
150  double x1() const;
152  double x2() const;
154  double y1() const;
156  double y2() const;
158  double radius() const;
160  bool atMinusZ() const;
161 };
162 
164 class DDTruncTubs : public DDSolid
165 {
166 public:
167  DDTruncTubs(const DDSolid & s);
169  double zHalf() const;
171  double rIn() const;
173  double rOut() const;
175  double startPhi() const;
177  double deltaPhi() const;
179  double cutAtStart() const;
181  double cutAtDelta() const;
183  bool cutInside() const;
184 };
185 class DDBox : public DDSolid
186 {
187 public:
188  DDBox(const DDSolid & s);
189  double halfX() const;
190  double halfY() const;
191  double halfZ() const;
192 private:
193  DDBox();
194 };
195 
197 class DDShapelessSolid : public DDSolid
198 
199 {
200  public:
201  DDShapelessSolid(const DDSolid & s);
202 
203  private:
205 };
206 
208 {
209 public:
210  DDReflectionSolid(const DDSolid & s);
211  DDSolid unreflected() const;
212 private:
215 };
216 
217 
218 class DDBooleanSolid : public DDSolid
219 {
220 public:
221  DDBooleanSolid(const DDSolid & s);
222  DDSolid solidA() const;
223  DDSolid solidB() const;
224  DDTranslation translation() const;
225  DDRotation rotation() const;
226 private:
227  DDBooleanSolid();
229 };
230 
232 class DDPolySolid : public DDSolid
233 {
234  public:
235  DDPolySolid(const DDSolid & s);
236 
237  protected:
239  virtual std::vector<double> getVec(const size_t& which, const size_t& offset = 0, const size_t& nVecs = 1) const;
240  DDPolySolid();
241 
242 };
243 
244 class DDPolycone : public DDPolySolid
245 {
246  public:
247  DDPolycone(const DDSolid & s);
248  double startPhi() const;
249  double deltaPhi() const;
250  std::vector<double> zVec() const;
251  std::vector<double> rVec() const;
252  std::vector<double> rMinVec() const;
253  std::vector<double> rMaxVec() const;
254 
255  private:
256  DDPolycone();
257 };
258 
259 class DDPolyhedra : public DDPolySolid
260 {
261  public:
262  DDPolyhedra(const DDSolid & s);
263  int sides() const;
264  double startPhi() const;
265  double deltaPhi() const;
266  std::vector<double> zVec() const;
267  std::vector<double> rVec() const;
268  std::vector<double> rMinVec() const;
269  std::vector<double> rMaxVec() const;
270 
271  private:
272  DDPolyhedra();
273 };
274 
275 class DDTubs : public DDSolid
276 {
277  public:
278  DDTubs(const DDSolid & s);
279  double zhalf() const;
280  double rIn() const;
281  double rOut() const;
282  double startPhi() const;
283  double deltaPhi() const;
284 
285  private:
286  DDTubs();
287 };
288 
289 class DDCons : public DDSolid
290 {
291  public:
292  DDCons(const DDSolid & s);
293  double zhalf() const;
294  double rInMinusZ() const;
295  double rOutMinusZ() const;
296  double rInPlusZ() const;
297  double rOutPlusZ() const;
298  double phiFrom() const;
299  double deltaPhi() const;
300 
301  private:
302  DDCons();
303 };
304 
305 class DDTorus : public DDSolid
306 {
307  public:
308  DDTorus (const DDSolid & s);
309  double rMin() const;
310  double rMax() const;
311  double rTorus() const;
312  double startPhi() const;
313  double deltaPhi() const;
314 
315  private:
316  DDTorus
317 ();
318 };
319 
320 class DDUnion : public DDBooleanSolid
321 {
322  public:
323  DDUnion(const DDSolid & s);
324 
325  private:
326  DDUnion();
327 };
328 
330 {
331  public:
332  DDIntersection(const DDSolid & s);
333 
334  private:
335  DDIntersection();
336 };
337 
339 {
340  public:
341  DDSubtraction(const DDSolid & s);
342 
343  private:
344  DDSubtraction();
345 };
346 
347 
348 class DDSphere : public DDSolid
349 {
350  public:
351  DDSphere(const DDSolid & s);
352  double innerRadius() const;
353  double outerRadius() const;
354  double startPhi() const;
355  double deltaPhi() const;
356  double startTheta() const;
357  double deltaTheta() const;
358 
359  private:
360  DDSphere();
361 };
362 
363 class DDOrb : public DDSolid
364 {
365  public:
366  DDOrb(const DDSolid & s);
367  double radius() const;
368 
369  private:
370  DDOrb();
371 };
372 
373 class DDEllipticalTube : public DDSolid
374 {
375  public:
376  DDEllipticalTube(const DDSolid & s);
377  double xSemiAxis() const;
378  double ySemiAxis() const;
379  double zHeight() const;
380 
381  private:
383 };
384 
385 class DDEllipsoid : public DDSolid
386 {
387  public:
388  DDEllipsoid(const DDSolid & s);
389  double xSemiAxis() const;
390  double ySemiAxis() const;
391  double zSemiAxis() const;
392  double zBottomCut() const;
393  double zTopCut() const;
394 
395  private:
396  DDEllipsoid();
397 };
398 
399 class DDParallelepiped : public DDSolid
400 {
401  public:
402  DDParallelepiped(const DDSolid & s);
403  double xHalf() const;
404  double yHalf() const;
405  double zHalf() const;
406  double alpha() const;
407  double theta() const;
408  double phi() const;
409 
410  private:
412 };
413 
414 // Solid generation function
416 
423 
424 
425 static DDSolid box(const DDName & name,
426  double xHalf,
427  double yHalf,
428  double zHalf);
429 
431 
434 static DDSolid polycone(const DDName & name, double startPhi, double deltaPhi,
435  const std::vector<double> & z,
436  const std::vector<double> & rmin,
437  const std::vector<double> & rmax);
438 
440 
443 static DDSolid polycone(const DDName & name, double startPhi, double deltaPhi,
444  const std::vector<double> & z,
445  const std::vector<double> & r);
446 
448 
451 static DDSolid polyhedra(const DDName & name,
452  int sides,
453  double startPhi, double deltaPhi,
454  const std::vector<double> & z,
455  const std::vector<double> & rmin,
456  const std::vector<double> & rmax);
457 
459 
462 static DDSolid polyhedra(const DDName & name,
463  int sides,
464  double startPhi, double deltaPhi,
465  const std::vector<double> & z,
466  const std::vector<double> & r);
467 
468 static DDSolid unionSolid(const DDName & name,
469  const DDSolid & a,
470  const DDSolid & b,
471  const DDTranslation & t,
472  const DDRotation & r);
473 
474 static DDSolid intersection(const DDName & name,
475  const DDSolid & a,
476  const DDSolid & b,
477  const DDTranslation & t,
478  const DDRotation & r);
479 
480 static DDSolid subtraction(const DDName & name,
481  const DDSolid & a,
482  const DDSolid & b,
483  const DDTranslation & t,
484  const DDRotation & r);
485 
486 static DDSolid trap(const DDName & name,
487  double pDz,
488  double pTheta, double pPhi,
489  double pDy1, double pDx1, double pDx2,
490  double pAlp1,
491  double pDy2, double pDx3, double pDx4,
492  double pAlp2);
493 
494 static DDSolid pseudoTrap(const DDName & name,
495  double pDx1,
496  double pDx2,
497  double pDy1,
498  double pDy2,
499  double pDz,
500  double radius,
501  bool atMinusZ
502  );
503 
504 static DDSolid truncTubs(const DDName & name,
505  double zHalf,
506  double rIn,
507  double rOut,
508  double startPhi,
509  double deltaPhi,
510  double cutAtStart,
511  double cutAtDelta,
512  bool cutInside);
513 
514 static DDSolid tubs(const DDName & name,
515  double zhalf,
516  double rIn, double rOut,
517  double startPhi,
518  double deltaPhi);
519 
520 static DDSolid cons(const DDName & name,
521  double zhalf,
522  double rInMinusZ,
523  double rOutMinusZ,
524  double rInPlusZ,
525  double rOutPlusZ,
526  double phiFrom,
527  double deltaPhi);
528 
529 static DDSolid torus(const DDName & name,
530  double rMin,
531  double rMax,
532  double rTorus,
533  double startPhi,
534  double deltaPhi);
535 
536 static DDSolid sphere(const DDName & name,
537  double innerRadius,
538  double outerRadius,
539  double startPhi,
540  double deltaPhi,
541  double startTheta,
542  double deltaTheta);
543 
544  static DDSolid orb(const DDName & name,
545  double radius);
546 
547  static DDSolid ellipticalTube(const DDName & name,
548  double xSemiAxis,
549  double ySemiAxis,
550  double zHeight);
551 
552 static DDSolid ellipsoid(const DDName & name,
553  double xSemiAxis,
554  double ySemiAxis,
555  double zSemiAxis,
556  double zBottomCut=0,
557  double zTopCut=0
558  );
559 
560 static DDSolid parallelepiped(const DDName & name,
561  double xHalf, double yHalf, double zHalf,
562  double alpha, double theta, double phi);
563 
564 
565 static DDSolid shapeless(const DDName & name);
566 
567 static DDSolid reflection(const DDName & name,
568  const DDSolid & s);
569 
570 };
571 
572 /* //! Creates a cone or a cone-section (refere to \b Geant4 documentation) */
573 /* /\** The center of the cone or cone-section (for positioning) is the center of */
574 /* coordinates of its definition (x=y=z=0). */
575 /* *\/ */
576 /* DDSolid * DDcons(const DDName & name, */
577 /* double zhalf, */
578 /* double rInMinusZ, */
579 /* double rOutMinusZ, */
580 /* double rInPlusZ, */
581 /* double rOutPlusZ, */
582 /* double startPhi, */
583 /* double deltaPhi); */
584 
585 /* //! Creates a torus or a toroidal-section (refere to \b Geant4 documentation) */
586 /* /\** The center of the torus or toroidal-section (for positioning) is the center of */
587 /* coordinates of its definition (x=y=z=0). */
588 /* *\/ */
589 /* DDSolid * DDtorus(const DDName & name, */
590 /* double rMin, */
591 /* double rMax, */
592 /* double rTorus, */
593 /* double startPhi, */
594 /* double deltaPhi); */
595 
596 /* //! Creates a tube or a tube-section (refere to \b Geant4 documentation) */
597 /* /\** The center of the tube or tube-section (for positioning) is the center of */
598 /* coordinates of its definition (x=y=z=0). */
599 /* *\/ */
600 /* DDSolid * DDtubs(const DDName & name, */
601 /* double zhalf, */
602 /* double rIn, double rOut, */
603 /* double startPhi, */
604 /* double deltaPhi); */
605 
606 
607 /* //! Creates a trapezoid (refere to \b Geant3 or \b Geant4 documentation) */
608 /* /\** The center of the tube or tube-section (for positioning) is the center of */
609 /* coordinates of its definition (x=y=z=0). */
610 /* *\/ */
611 /* DDSolid * DDtrap(const DDName & name, */
612 /* double pDz, */
613 /* double pTheta, double pPhi, */
614 /* double pDy1, double pDx1, double pDx2, */
615 /* double pAlp1, */
616 /* double pDy2, double pDx3, double pDx4, */
617 /* double pAlp2); */
618 
619 /* //! Creates a shapeless solid */
620 /* /\** When used in a mother-volume this type of solid forms an assembly */
621 /* in the \b Geant4 sense */
622 /* *\/ */
623 /* DDSolid * DDshapeless(const DDName & name); */
624 
625 /* /\* */
626 /* DDSolid DDunion(const DDName & name, */
627 /* const DDSolid & a = DDSolid(), */
628 /* const DDSolid & b = DDSolid() ); */
629 /* *\/ */
630 
631 /* //! Creates a boolean solid - the union of 2 compound solids */
632 /* /\** \arg \c name unique name */
633 /* \arg \c a first compound of the union */
634 /* \arg \c b second comound of the union */
635 /* \arg \c r relative rotation of \c b towards \c a */
636 /* \arg \c t relative translation of \c b towards \c a */
637 /* *\/ */
638 /* DDSolid * DDunion(const DDName & name, */
639 /* const DDSolid & a, */
640 /* const DDSolid & b, */
641 /* const DDRotation &r =DDRotation(), */
642 /* const DDTranslation &t =DDTranslation()); */
643 
644 /* //! Creates a boolean solid - the union of 2 compound solids */
645 /* /\** \arg \c name unique name */
646 /* \arg \c a first compound of the subtraction */
647 /* \arg \c b second comound of the subtraction */
648 /* \arg \c r relative rotation of \c b towards \c a */
649 /* \arg \c t relative translation of \c b towards \c a */
650 /* \c b is subtracted from \c a . */
651 /* *\/ */
652 /* DDSolid * DDsubtraction(const DDName & name, */
653 /* const DDSolid & a, */
654 /* const DDSolid & b, */
655 /* const DDRotation &r =DDRotation(), */
656 /* const DDTranslation &t =DDTranslation()); */
657 
658 /* //! Creates a boolean solid - the intersection of 2 compound solids */
659 /* /\** \arg \c name unique name */
660 /* \arg \c a first compound of the intersection */
661 /* \arg \c b second comound of the intersection */
662 /* \arg \c r relative rotation of \c b towards \c a */
663 /* \arg \c t relative translation of \c b towards \c a */
664 /* The resulting solid is the common volume of \c a and \c b . */
665 /* *\/ */
666 /* DDSolid * DDintersection(const DDName & name, */
667 /* const DDSolid & a, */
668 /* const DDSolid & b, */
669 /* const DDRotation &r =DDRotation(), */
670 /* const DDTranslation &t =DDTranslation()); */
671 
672 
673 /* //! Creates a cone or a cone-section (refere to \b Geant4 documentation) */
674 /* /\** The center of the cone or cone-section (for positioning) is the center of */
675 /* coordinates of its definition (x=y=z=0). */
676 /* *\/ */
677 /* DDSolid * DDcons(const DDName & name, */
678 /* double zhalf, */
679 /* double rInMinusZ, */
680 /* double rOutMinusZ, */
681 /* double rInPlusZ, */
682 /* double rOutPlusZ, */
683 /* double startPhi, */
684 /* double deltaPhi); */
685 
686 #endif
double halfZ() const
half of the z-Axis
Definition: DDSolid.cc:170
const std::vector< double > & parameters() const
Don&#39;t use (only meant to be used by DDbox(), DDtub(), ...)
Definition: DDSolid.cc:153
Definition: DDBase.h:18
static DDSolid torus(const DDName &name, double rMin, double rMax, double rTorus, double startPhi, double deltaPhi)
Definition: DDSolid.cc:781
double halfZ() const
Definition: DDSolid.cc:261
double y2() const
Half-length along y of the face at +pDz.
Definition: DDSolid.cc:184
double deltaTheta() const
Definition: DDSolid.cc:579
float alpha
Definition: AMPTWrapper.h:95
DDSolid()
Uninitialilzed solid reference-object; for further details on reference-objects see documentation of ...
Definition: DDSolid.cc:58
A truncated tube section.
Definition: DDSolid.h:164
double x2() const
half length along x on +z
Definition: DDSolid.cc:235
const DDName & name() const
Definition: DDBase.h:88
double deltaPhi() const
angular span of the tube-section
Definition: DDSolid.cc:212
double rTorus() const
Definition: DDSolid.cc:490
double alpha1() 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:182
std::vector< double > zVec() const
Definition: DDSolid.cc:429
double rIn() const
inner radius
Definition: DDSolid.cc:206
double x2() const
Half-length along x of the side at y=+pDy1 of the face at -pDz.
Definition: DDSolid.cc:180
static DDSolid pseudoTrap(const DDName &name, double pDx1, double pDx2, double pDy1, double pDy2, double pDz, double radius, bool atMinusZ)
Definition: DDSolid.cc:740
std::vector< double > rVec() const
Definition: DDSolid.cc:422
DDSolidShape shape() const
The type of the solid.
Definition: DDSolid.cc:147
static DDSolid parallelepiped(const DDName &name, double xHalf, double yHalf, double zHalf, double alpha, double theta, double phi)
Definition: DDSolid.cc:841
double deltaPhi(float phi1, float phi2)
Definition: VectorUtil.h:30
double alpha() const
Definition: DDSolid.cc:649
Abstract class for DDPolycone and DDPolyhedra. Basically a common member function.
Definition: DDSolid.h:232
double startPhi() const
angular start of the tube-section
Definition: DDSolid.cc:210
double deltaPhi() const
Definition: DDSolid.cc:420
double rOut() const
Definition: DDSolid.cc:512
double rMin() const
Definition: DDSolid.cc:486
std::vector< double > rMinVec() const
Definition: DDSolid.cc:436
This is simply a handle on the solid.
Definition: DDSolid.h:197
double zHalf() const
Definition: DDSolid.cc:647
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:336
int sides() const
Definition: DDSolid.cc:416
static DDSolid cons(const DDName &name, double zhalf, double rInMinusZ, double rOutMinusZ, double rInPlusZ, double rOutPlusZ, double phiFrom, double deltaPhi)
Definition: DDSolid.cc:766
static DDSolid ellipsoid(const DDName &name, double xSemiAxis, double ySemiAxis, double zSemiAxis, double zBottomCut=0, double zTopCut=0)
Definition: DDSolid.cc:824
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:659
friend class DDPersToDDDFactory
Definition: DDSolid.h:47
DDSolidShape
Definition: DDSolidShapes.h:5
Geom::Theta< T > theta() const
Streaming the DDD transient store from/into a std::istream/std::ostream */.
Definition: DDStreamer.h:41
double xSemiAxis() const
Definition: DDSolid.cc:622
DDPseudoTrap(const DDSolid &s)
Definition: DDSolid.cc:222
double zHalf() const
half of the z-Axis
Definition: DDSolid.cc:204
DDName is used to identify DDD entities uniquely.
Definition: DDName.h:18
const DDSolid b_
Definition: DDSolid.h:105
double alpha2() 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:190
double rInPlusZ() const
Definition: DDSolid.cc:467
DDSolid solidB() const
Definition: DDSolid.cc:553
double rMax() const
Definition: DDSolid.cc:488
std::ostream & operator<<(std::ostream &out, const ALILine &li)
Definition: ALILine.cc:187
double deltaPhi() const
Definition: DDSolid.cc:516
double double double z
const DDTranslation t_
Definition: DDSolid.h:106
double startPhi() const
Definition: DDSolid.cc:418
A DDSolid represents the shape of a part.
Definition: DDSolid.h:42
double zSemiAxis() const
Definition: DDSolid.cc:626
double rOutMinusZ() const
Definition: DDSolid.cc:465
double ySemiAxis() const
Definition: DDSolid.cc:624
double cutAtStart() const
truncation at begin of the tube-section
Definition: DDSolid.cc:214
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
Definition: DDTranslation.h:7
double xHalf() const
Definition: DDSolid.cc:643
Represents a uniquely identifyable rotation matrix.
Definition: DDTransform.h:66
double innerRadius() const
Definition: DDSolid.cc:569
double y1() const
half length along y on -z
Definition: DDSolid.cc:237
double yHalf() const
Definition: DDSolid.cc:645
double deltaPhi() const
Definition: DDSolid.cc:473
double phi() const
Azimuthal angle of the line joining the centres of the faces at -/+pDz.
Definition: DDSolid.cc:174
double radius() const
radius of the cut-out (neg.) or rounding (pos.)
Definition: DDSolid.cc:241
DDSolid unreflected() const
Definition: DDSolid.cc:275
double halfX() const
Definition: DDSolid.cc:257
DDSolid solidA() const
Definition: DDSolid.cc:548
DDI::BooleanSolid * boolean_
Definition: DDSolid.h:228
static DDSolid intersection(const DDName &name, const DDSolid &a, const DDSolid &b, const DDTranslation &t, const DDRotation &r)
Definition: DDSolid.cc:717
Creates a box with side length 2*xHalf, 2*yHalf, 2*zHalf.
Definition: DDSolid.h:422
double halfY() const
Definition: DDSolid.cc:259
DDTruncTubs(const DDSolid &s)
Definition: DDSolid.cc:194
double halfZ() const
half of the z-Axis
Definition: DDSolid.cc:231
double theta() const
Definition: DDSolid.cc:651
double rInMinusZ() const
Definition: DDSolid.cc:463
double cutAtDelta() const
truncation at end of the tube-section
Definition: DDSolid.cc:216
static DDSolid sphere(const DDName &name, double innerRadius, double outerRadius, double startPhi, double deltaPhi, double startTheta, double deltaTheta)
Definition: DDSolid.cc:800
static DDSolid orb(const DDName &name, double radius)
Definition: DDSolid.cc:813
DDI::Reflection * reflected_
Definition: DDSolid.h:214
double startPhi() const
Definition: DDSolid.cc:371
double theta() const
Polar angle of the line joining the centres of the faces at -/+pDz.
Definition: DDSolid.cc:172
Composites(const DDSolid &A, const DDSolid &B, const DDTranslation &T, const DDRotation &R)
Definition: DDSolid.h:102
Interface to a Trapezoid.
Definition: DDSolid.h:115
double zTopCut() const
Definition: DDSolid.cc:630
static DDSolid tubs(const DDName &name, double zhalf, double rIn, double rOut, double startPhi, double deltaPhi)
Definition: DDSolid.cc:791
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:753
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:726
unsigned int offset(bool)
static DDSolid box(const DDName &name, double xHalf, double yHalf, double zHalf)
Definition: DDSolid.cc:522
double radius() const
Definition: DDSolid.cc:592
double rIn() const
Definition: DDSolid.cc:510
double volume() const
Returns the volume of the given solid (does not work with boolean soids !)
Definition: DDSolid.cc:136
std::vector< double > rVec() const
Definition: DDSolid.cc:375
double zBottomCut() const
Definition: DDSolid.cc:628
double xSemiAxis() const
Definition: DDSolid.cc:605
double y1() const
Half-length along y of the face at -pDz.
Definition: DDSolid.cc:176
double deltaPhi() const
Definition: DDSolid.cc:575
double x1() const
half length along x on -z
Definition: DDSolid.cc:233
const DDSolid a_
Definition: DDSolid.h:105
double x4() const
Half-length along x of the side at y=+pDy2 of the face at +pDz.
Definition: DDSolid.cc:188
static DDSolid ellipticalTube(const DDName &name, double xSemiAxis, double ySemiAxis, double zHeight)
Definition: DDSolid.cc:818
double deltaPhi() const
Definition: DDSolid.cc:494
double startPhi() const
Definition: DDSolid.cc:492
std::vector< double > zVec() const
Definition: DDSolid.cc:382
bool cutInside() const
true, if truncation is on the inner side of the tube-section
Definition: DDSolid.cc:218
double deltaPhi() const
Definition: DDSolid.cc:373
double zHeight() const
Definition: DDSolid.cc:609
Definition: DDSolid.h:185
std::vector< double > rMinVec() const
Definition: DDSolid.cc:389
static DDSolid subtraction(const DDName &name, const DDSolid &a, const DDSolid &b, const DDTranslation &t, const DDRotation &r)
Definition: DDSolid.cc:708
std::vector< double > rMaxVec() const
Definition: DDSolid.cc:443
friend class DDDToPersFactory
Definition: DDSolid.h:46
double b
Definition: hdecay.h:120
double rOutPlusZ() const
Definition: DDSolid.cc:469
Definition: DDSolid.h:363
double phi() const
Definition: DDSolid.cc:653
DDTrap(const DDSolid &s)
Definition: DDSolid.cc:161
double zhalf() const
Definition: DDSolid.cc:508
double phiFrom() const
Definition: DDSolid.cc:471
double x3() const
Half-length along x of the side at y=-pDy2 of the face at +pDz.
Definition: DDSolid.cc:186
static DDSolid reflection(const DDName &name, const DDSolid &s)
Definition: DDSolid.cc:855
static DDSolid shapeless(const DDName &name)
Definition: DDSolid.cc:849
double a
Definition: hdecay.h:121
double startPhi() const
Definition: DDSolid.cc:514
double ySemiAxis() const
Definition: DDSolid.cc:607
double rOut() const
outer radius
Definition: DDSolid.cc:208
double startTheta() const
Definition: DDSolid.cc:577
double startPhi() const
Definition: DDSolid.cc:573
double y2() const
half length along y on +z
Definition: DDSolid.cc:239
DDRotation rotation() const
Definition: DDSolid.cc:538
double outerRadius() const
Definition: DDSolid.cc:571
static DDSolid unionSolid(const DDName &name, const DDSolid &a, const DDSolid &b, const DDTranslation &t, const DDRotation &r)
Definition: DDSolid.cc:699
string s
Definition: asciidump.py:422
friend std::ostream & operator<<(std::ostream &, const DDSolid &)
Definition: DDSolid.cc:36
long double T
DDTranslation translation() const
Definition: DDSolid.cc:543
std::vector< double > rMaxVec() const
Definition: DDSolid.cc:396
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) //! Creates a polycone (refere to Gean...
Definition: DDSolid.cc:676
double x1() const
Half-length along x of the side at y=-pDy1 of the face at -pDz.
Definition: DDSolid.cc:178
const DDRotation r_
Definition: DDSolid.h:107
double zhalf() const
Definition: DDSolid.cc:461
Definition: DDAxes.h:10
bool atMinusZ() const
true, if cut-out or rounding is on the -z side
Definition: DDSolid.cc:243