CMS 3D CMS Logo

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
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 radius(void) const
radius of the cut-out (neg.) or rounding (pos.)
Definition: DDSolid.cc:200
DDSolid solidA(void) const
Definition: DDSolid.cc:470
DDRotation rotation(void) const
Definition: DDSolid.cc:466
std::vector< double > yVec(void) const
Definition: DDSolid.cc:382
DDBox(void)=delete
std::vector< double > zscaleVec(void) const
Definition: DDSolid.cc:402
double zHeight(void) const
Definition: DDSolid.cc:506
std::vector< double > rMinVec(void) const
Definition: DDSolid.cc:335
double zhalf(void) const
Definition: DDSolid.cc:516
DDTorus(void)=delete
A truncated tube section.
Definition: DDSolid.h:139
double halfZ(void) const
Definition: DDSolid.cc:216
double yHalf(void) const
double outerRadius(void) const
Definition: DDSolid.cc:484
double zBottomCut(void) const
double startPhi(void) const
angular start of the tube-section
Definition: DDSolid.cc:172
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)
Definition: DDSolid.cc:625
double rInPlusZ(void) const
Definition: DDSolid.cc:420
double rIn(void) const
Definition: DDSolid.cc:456
Abstract class for DDPolycone and DDPolyhedra. Basically a common member function.
Definition: DDSolid.h:212
DDPolySolid(void)=delete
DDOrb(void)=delete
This is simply a handle on the solid.
Definition: DDSolid.h:178
std::vector< double > xVec(void) const
Definition: DDSolid.cc:378
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::vector< double > rMinVec(void) const
Definition: DDSolid.cc:293
std::vector< double > zVec(void) const
Definition: DDSolid.cc:328
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 volume(void) const
Returns the volume of the given solid (does not work with boolean soids !)
Definition: DDSolid.cc:121
double deltaPhi(void) const
Definition: DDSolid.cc:488
double rOutMinusZ(void) const
Definition: DDSolid.cc:418
std::vector< double > rMaxVec(void) const
Definition: DDSolid.cc:342
double ySemiAxis(void) const
Definition: DDSolid.cc:504
std::array< double, 3 > highNorm(void) const
Definition: DDSolid.cc:530
double innerRadius(void) const
Definition: DDSolid.cc:482
double rOut(void) const
Definition: DDSolid.cc:458
double zSemiAxis(void) const
double radius(void) const
auto xyPointsSize(void) const -> std::size_t
Definition: DDSolid.cc:357
double cutAtStart(void) const
truncation at begin of the tube-section
Definition: DDSolid.cc:176
double phi(void) const
Azimuthal angle of the line joining the centres of the faces at -/+pDz.
Definition: DDSolid.cc:139
DDSphere(void)=delete
double halfZ(void) const
half of the z-Axis
Definition: DDSolid.cc:135
DDName is used to identify DDD entities uniquely.
Definition: DDName.h:17
std::array< double, 3 > lowNorm(void) const
Definition: DDSolid.cc:526
double alpha(void) const
const std::vector< double > & parameters(void) const
Give the parameters of the solid.
Definition: DDSolid.cc:125
DDPolyhedra(void)=delete
bool cutInside(void) const
true, if truncation is on the inner side of the tube-section
Definition: DDSolid.cc:180
double xSemiAxis(void) const
DDIntersection(void)=delete
const DDI::BooleanSolid & boolean_
Definition: DDSolid.h:195
A DDSolid represents the shape of a part.
Definition: DDSolid.h:39
std::vector< double > zVec(void) const
Definition: DDSolid.cc:387
DDTruncTubs(void)=delete
static DDSolid orb(const DDName &name, double radius)
Represents a uniquely identifyable rotation matrix.
Definition: DDTransform.h:57
double ySemiAxis(void) const
double startPhi(void) const
Definition: DDSolid.cc:442
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
double halfZ(void) const
half of the z-Axis
Definition: DDSolid.cc:190
double theta(void) const
double startTheta(void) const
Definition: DDSolid.cc:490
DDTubs(void)=delete
double x3(void) const
Half-length along x of the side at y=-pDy2 of the face at +pDz.
Definition: DDSolid.cc:151
DDTranslation translation(void) const
Definition: DDSolid.cc:468
double x2(void) const
half length along x on +z
Definition: DDSolid.cc:194
DDPolycone(void)=delete
int sides(void) const
Definition: DDSolid.cc:315
double phiFrom(void) const
Definition: DDSolid.cc:424
static DDSolid intersection(const DDName &name, const DDSolid &a, const DDSolid &b, const DDTranslation &t, const DDRotation &r)
Definition: DDSolid.cc:604
double rIn(void) const
Definition: DDSolid.cc:518
double xHalf(void) const
double y2(void) const
half length along y on +z
Definition: DDSolid.cc:198
Interface to an Assembly.
Definition: DDSolid.h:77
DDParallelepiped(void)=delete
static DDSolid sphere(const DDName &name, double innerRadius, double outerRadius, double startPhi, double deltaPhi, double startTheta, double deltaTheta)
Definition: DDSolid.cc:687
double zHalf(void) const
half of the z-Axis
Definition: DDSolid.cc:166
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
Interface to a Trapezoid.
Definition: DDSolid.h:88
double zTopCut(void) const
double deltaPhi(void) const
Definition: DDSolid.cc:426
static DDSolid assembly(const DDName &name)
Creates an assembly.
Definition: DDSolid.cc:545
double y2(void) const
Half-length along y of the face at +pDz.
Definition: DDSolid.cc:149
static DDSolid reflection(const DDName &name, const DDSolid &s)
std::vector< double > rVec(void) const
Definition: DDSolid.cc:279
static DDSolid tubs(const DDName &name, double zhalf, double rIn, double rOut, double startPhi, double deltaPhi)
Definition: DDSolid.cc:667
double rOut(void) const
Definition: DDSolid.cc:520
DDI::MultiUnion * union_
Definition: DDSolid.h:208
double deltaPhi(void) const
Definition: DDSolid.cc:444
DDSolid solidB(void) const
Definition: DDSolid.cc:472
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
std::vector< double > zxVec(void) const
Definition: DDSolid.cc:392
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
double zHalf(void) const
double rInMinusZ(void) const
Definition: DDSolid.cc:416
double x4(void) const
Half-length along x of the side at y=+pDy2 of the face at +pDz.
Definition: DDSolid.cc:153
DDSolidShape shape(void) const
The type of the solid.
Definition: DDSolid.cc:123
DDMultiUnion(void)=delete
double rIn(void) const
inner radius
Definition: DDSolid.cc:168
double rOutPlusZ(void) const
Definition: DDSolid.cc:422
std::vector< double > zyVec(void) const
Definition: DDSolid.cc:397
double deltaTheta(void) const
Definition: DDSolid.cc:492
double deltaPhi(void) const
Definition: DDSolid.cc:462
DDCutTubs(void)=delete
double rMax(void) const
Definition: DDSolid.cc:438
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.
Definition: DDSolid.cc:145
static DDSolid ellipticalTube(const DDName &name, double xSemiAxis, double ySemiAxis, double zHeight)
Definition: DDSolid.cc:698
double rOut(void) const
outer radius
Definition: DDSolid.cc:170
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
Definition: Assembly.h:7
double x1(void) const
half length along x on -z
Definition: DDSolid.cc:192
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 startPhi(void) const
Definition: DDSolid.cc:522
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 deltaPhi(void) const
Definition: DDSolid.cc:524
double b
Definition: hdecay.h:120
static DDSolid ellipsoid(const DDName &name, double xSemiAxis, double ySemiAxis, double zSemiAxis, double zBottomCut=0., double zTopCut=0.)
double startPhi(void) const
Definition: DDSolid.cc:317
double phi(void) const
auto zSectionsSize(void) const -> std::size_t
Definition: DDSolid.cc:365
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
DDEllipsoid(void)=delete
Definition: DDSolid.h:355
DDAssembly(void)=delete
double halfX(void) const
Definition: DDSolid.cc:212
static DDSolid shapeless(const DDName &name)
Definition: DDSolid.cc:702
DDEllipticalTube(void)=delete
double zhalf(void) const
Definition: DDSolid.cc:454
std::vector< double > zVec(void) const
Definition: DDSolid.cc:286
double startPhi(void) const
Definition: DDSolid.cc:460
DDShapelessSolid(void)=delete
std::vector< double > rVec(void) const
Definition: DDSolid.cc:321
double a
Definition: hdecay.h:121
std::vector< double > rMaxVec(void) const
Definition: DDSolid.cc:300
double halfY(void) const
Definition: DDSolid.cc:214
double xSemiAxis(void) const
Definition: DDSolid.cc:502
DDUnion(void)=delete
double deltaPhi(void) const
angular span of the tube-section
Definition: DDSolid.cc:174
double deltaPhi(void) const
Definition: DDSolid.cc:277
double y1(void) const
Half-length along y of the face at -pDz.
Definition: DDSolid.cc:141
DDBooleanSolid(void)=delete
DDSubtraction(void)=delete
DDSolid(void)
Uninitialilzed solid reference-object; for further details on reference-objects see documentation of ...
Definition: DDSolid.cc:50
def which(cmd)
Definition: eostools.py:336
double rMin(void) const
Definition: DDSolid.cc:436
static DDSolid unionSolid(const DDName &name, const DDSolid &a, const DDSolid &b, const DDTranslation &t, const DDRotation &r)
Definition: DDSolid.cc:594
double startPhi(void) const
Definition: DDSolid.cc:275
DDTrap(void)=delete
double deltaPhi(void) const
Definition: DDSolid.cc:319
const std::vector< DDRotation > & rotations(void) const
double rTorus(void) const
Definition: DDSolid.cc:440
friend std::ostream & operator<<(std::ostream &, const DDSolid &)
Definition: DDSolid.cc:34
double startPhi(void) const
Definition: DDSolid.cc:486
bool atMinusZ(void) const
true, if cut-out or rounding is on the -z side
Definition: DDSolid.cc:202
DDMultiUnionSolid(void)=delete
Geom::Theta< T > theta() const
double y1(void) const
half length along y on -z
Definition: DDSolid.cc:196
double theta(void) const
Polar angle of the line joining the centres of the faces at -/+pDz.
Definition: DDSolid.cc:137
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
Definition: DDTranslation.h:7
double cutAtDelta(void) const
truncation at end of the tube-section
Definition: DDSolid.cc:178
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
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)
double zhalf(void) const
Definition: DDSolid.cc:414
std::ostream & operator<<(std::ostream &, const DDSolid &)
Definition: DDSolid.cc:34
double x1(void) const
Half-length along x of the side at y=-pDy1 of the face at -pDz.
Definition: DDSolid.cc:143
DDCons(void)=delete