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 DDTrap : public DDSolid {
78 public:
79  DDTrap(const DDSolid& s);
80  DDTrap(void) = delete;
81 
83  double halfZ(void) const;
85  double theta(void) const;
87  double phi(void) const;
89  double y1(void) const;
91  double x1(void) const;
93  double x2(void) const;
95  double alpha1(void) const;
97  double y2(void) const;
99  double x3(void) const;
101  double x4(void) const;
103  double alpha2(void) const;
104 };
105 
106 class DDPseudoTrap : public DDSolid {
107 public:
108  DDPseudoTrap(const DDSolid& s);
109  DDPseudoTrap(void) = delete;
110 
112  double halfZ(void) const;
114  double x1(void) const;
116  double x2(void) const;
118  double y1(void) const;
120  double y2(void) const;
122  double radius(void) const;
124  bool atMinusZ(void) const;
125 };
126 
128 class DDTruncTubs : public DDSolid {
129 public:
130  DDTruncTubs(const DDSolid& s);
131  DDTruncTubs(void) = delete;
132 
134  double zHalf(void) const;
136  double rIn(void) const;
138  double rOut(void) const;
140  double startPhi(void) const;
142  double deltaPhi(void) const;
144  double cutAtStart(void) const;
146  double cutAtDelta(void) const;
148  bool cutInside(void) const;
149 };
150 
152 
156 class DDBox : public DDSolid {
157 public:
158  DDBox(const DDSolid& s);
159  DDBox(void) = delete;
160 
161  double halfX(void) const;
162  double halfY(void) const;
163  double halfZ(void) const;
164 };
165 
167 class DDShapelessSolid : public DDSolid {
168 public:
169  DDShapelessSolid(const DDSolid& s);
170  DDShapelessSolid(void) = delete;
171 };
172 
173 class DDBooleanSolid : public DDSolid {
174 public:
175  DDBooleanSolid(const DDSolid& s);
176  DDBooleanSolid(void) = delete;
177 
178  DDSolid solidA(void) const;
179  DDSolid solidB(void) const;
180  DDTranslation translation(void) const;
181  DDRotation rotation(void) const;
182 
183 private:
185 };
186 
187 class DDMultiUnionSolid : public DDSolid {
188 public:
189  DDMultiUnionSolid(const DDSolid& s);
190  DDMultiUnionSolid(void) = delete;
191 
192  const std::vector<DDSolid>& solids(void) const;
193  const std::vector<DDTranslation>& translations(void) const;
194  const std::vector<DDRotation>& rotations(void) const;
195 
196 private:
197  DDI::MultiUnion* union_;
198 };
199 
201 class DDPolySolid : public DDSolid {
202 public:
203  DDPolySolid(const DDSolid& s);
204  DDPolySolid(void) = delete;
205 
206 protected:
208  virtual std::vector<double> getVec(const size_t& which, const size_t& offset = 0, const size_t& nVecs = 1) const;
209 };
210 
211 class DDPolycone : public DDPolySolid {
212 public:
213  DDPolycone(const DDSolid& s);
214  DDPolycone(void) = delete;
215 
216  double startPhi(void) const;
217  double deltaPhi(void) const;
218  std::vector<double> zVec(void) const;
219  std::vector<double> rVec(void) const;
220  std::vector<double> rMinVec(void) const;
221  std::vector<double> rMaxVec(void) const;
222 };
223 
224 class DDPolyhedra : public DDPolySolid {
225 public:
226  DDPolyhedra(const DDSolid& s);
227  DDPolyhedra(void) = delete;
228 
229  int sides(void) const;
230  double startPhi(void) const;
231  double deltaPhi(void) const;
232  std::vector<double> zVec(void) const;
233  std::vector<double> rVec(void) const;
234  std::vector<double> rMinVec(void) const;
235  std::vector<double> rMaxVec(void) const;
236 };
237 
239 public:
240  DDExtrudedPolygon(const DDSolid& s);
241  DDExtrudedPolygon(void) = delete;
242 
243  std::vector<double> xVec(void) const;
244  std::vector<double> yVec(void) const;
245  std::vector<double> zVec(void) const;
246  std::vector<double> zxVec(void) const;
247  std::vector<double> zyVec(void) const;
248  std::vector<double> zscaleVec(void) const;
249 
250 private:
251  auto xyPointsSize(void) const -> std::size_t;
252  auto zSectionsSize(void) const -> std::size_t;
253 };
254 
255 class DDTubs : public DDSolid {
256 public:
257  DDTubs(const DDSolid& s);
258  DDTubs(void) = delete;
259 
260  double zhalf(void) const;
261  double rIn(void) const;
262  double rOut(void) const;
263  double startPhi(void) const;
264  double deltaPhi(void) const;
265 };
266 
267 class DDCutTubs : public DDSolid {
268 public:
269  DDCutTubs(const DDSolid& s);
270  DDCutTubs(void) = delete;
271 
272  double zhalf(void) const;
273  double rIn(void) const;
274  double rOut(void) const;
275  double startPhi(void) const;
276  double deltaPhi(void) const;
277  std::array<double, 3> lowNorm(void) const;
278  std::array<double, 3> highNorm(void) const;
279 };
280 
281 class DDCons : public DDSolid {
282 public:
283  DDCons(const DDSolid& s);
284  DDCons(void) = delete;
285 
286  double zhalf(void) const;
287  double rInMinusZ(void) const;
288  double rOutMinusZ(void) const;
289  double rInPlusZ(void) const;
290  double rOutPlusZ(void) const;
291  double phiFrom(void) const;
292  double deltaPhi(void) const;
293 };
294 
295 class DDTorus : public DDSolid {
296 public:
297  DDTorus(const DDSolid& s);
298  DDTorus(void) = delete;
299 
300  double rMin(void) const;
301  double rMax(void) const;
302  double rTorus(void) const;
303  double startPhi(void) const;
304  double deltaPhi(void) const;
305 };
306 
307 class DDUnion : public DDBooleanSolid {
308 public:
309  DDUnion(const DDSolid& s);
310  DDUnion(void) = delete;
311 };
312 
314 public:
315  DDMultiUnion(const DDSolid& s);
316  DDMultiUnion(void) = delete;
317 };
318 
320 public:
321  DDIntersection(const DDSolid& s);
322  DDIntersection(void) = delete;
323 };
324 
326 public:
327  DDSubtraction(const DDSolid& s);
328  DDSubtraction(void) = delete;
329 };
330 
331 class DDSphere : public DDSolid {
332 public:
333  DDSphere(const DDSolid& s);
334  DDSphere(void) = delete;
335 
336  double innerRadius(void) const;
337  double outerRadius(void) const;
338  double startPhi(void) const;
339  double deltaPhi(void) const;
340  double startTheta(void) const;
341  double deltaTheta(void) const;
342 };
343 
344 class DDOrb : public DDSolid {
345 public:
346  DDOrb(const DDSolid& s);
347  DDOrb(void) = delete;
348 
349  double radius(void) const;
350 };
351 
352 class DDEllipticalTube : public DDSolid {
353 public:
354  DDEllipticalTube(const DDSolid& s);
355  DDEllipticalTube(void) = delete;
356 
357  double xSemiAxis(void) const;
358  double ySemiAxis(void) const;
359  double zHeight(void) const;
360 };
361 
362 class DDEllipsoid : public DDSolid {
363 public:
364  DDEllipsoid(const DDSolid& s);
365  DDEllipsoid(void) = delete;
366 
367  double xSemiAxis(void) const;
368  double ySemiAxis(void) const;
369  double zSemiAxis(void) const;
370  double zBottomCut(void) const;
371  double zTopCut(void) const;
372 };
373 
374 class DDParallelepiped : public DDSolid {
375 public:
376  DDParallelepiped(const DDSolid& s);
377  DDParallelepiped(void) = delete;
378 
379  double xHalf(void) const;
380  double yHalf(void) const;
381  double zHalf(void) const;
382  double alpha(void) const;
383  double theta(void) const;
384  double phi(void) const;
385 };
386 
387 // Solid generation functions
388 //
391 
397  static DDSolid box(const DDName& name, double xHalf, double yHalf, double zHalf);
398 
400 
403  static DDSolid polycone(const DDName& name,
404  double startPhi,
405  double deltaPhi,
406  const std::vector<double>& z,
407  const std::vector<double>& rmin,
408  const std::vector<double>& rmax);
409 
411 
414  static DDSolid polycone(
415  const DDName& name, double startPhi, double deltaPhi, const std::vector<double>& z, const std::vector<double>& r);
416 
418 
421  static DDSolid polyhedra(const DDName& name,
422  int sides,
423  double startPhi,
424  double deltaPhi,
425  const std::vector<double>& z,
426  const std::vector<double>& rmin,
427  const std::vector<double>& rmax);
428 
430 
433  static DDSolid polyhedra(const DDName& name,
434  int sides,
435  double startPhi,
436  double deltaPhi,
437  const std::vector<double>& z,
438  const std::vector<double>& r);
439 
440  static DDSolid unionSolid(
441  const DDName& name, const DDSolid& a, const DDSolid& b, const DDTranslation& t, const DDRotation& r);
442 
443  static DDSolid multiUnionSolid(const DDName& name,
444  const std::vector<DDSolid>& a,
445  const std::vector<DDTranslation>& t,
446  const std::vector<DDRotation>& r);
447 
448  static DDSolid intersection(
449  const DDName& name, const DDSolid& a, const DDSolid& b, const DDTranslation& t, const DDRotation& r);
450 
451  static DDSolid subtraction(
452  const DDName& name, const DDSolid& a, const DDSolid& b, const DDTranslation& t, const DDRotation& r);
453 
454  static DDSolid trap(const DDName& name,
455  double pDz,
456  double pTheta,
457  double pPhi,
458  double pDy1,
459  double pDx1,
460  double pDx2,
461  double pAlp1,
462  double pDy2,
463  double pDx3,
464  double pDx4,
465  double pAlp2);
466 
467  static DDSolid pseudoTrap(const DDName& name,
468  double pDx1,
469  double pDx2,
470  double pDy1,
471  double pDy2,
472  double pDz,
473  double radius,
474  bool atMinusZ);
476  static DDSolid truncTubs(const DDName& name,
477  double zHalf,
478  double rIn,
479  double rOut,
480  double startPhi,
481  double deltaPhi,
482  double cutAtStart,
483  double cutAtDelta,
484  bool cutInside);
485 
486  static DDSolid tubs(const DDName& name, double zhalf, double rIn, double rOut, double startPhi, double deltaPhi);
487 
488  static DDSolid cuttubs(const DDName& name,
489  double zhalf,
490  double rIn,
491  double rOut,
492  double startPhi,
493  double deltaPhi,
494  double lx,
495  double ly,
496  double lz,
497  double tx,
498  double ty,
499  double tz);
500 
501  static DDSolid cons(const DDName& name,
502  double zhalf,
503  double rInMinusZ,
504  double rOutMinusZ,
505  double rInPlusZ,
506  double rOutPlusZ,
507  double phiFrom,
508  double deltaPhi);
509 
510  static DDSolid torus(const DDName& name, double rMin, double rMax, double rTorus, double startPhi, double deltaPhi);
511 
512  static DDSolid sphere(const DDName& name,
513  double innerRadius,
514  double outerRadius,
515  double startPhi,
516  double deltaPhi,
517  double startTheta,
518  double deltaTheta);
519 
520  static DDSolid orb(const DDName& name, double radius);
521 
522  static DDSolid ellipticalTube(const DDName& name, double xSemiAxis, double ySemiAxis, double zHeight);
523 
524  static DDSolid ellipsoid(const DDName& name,
525  double xSemiAxis,
526  double ySemiAxis,
527  double zSemiAxis,
528  double zBottomCut = 0.,
529  double zTopCut = 0.);
530 
531  static DDSolid parallelepiped(
532  const DDName& name, double xHalf, double yHalf, double zHalf, double alpha, double theta, double phi);
533 
534  static DDSolid extrudedpolygon(const DDName& name,
535  const std::vector<double>& x,
536  const std::vector<double>& y,
537  const std::vector<double>& z,
538  const std::vector<double>& zx,
539  const std::vector<double>& zy,
540  const std::vector<double>& zscale);
541 
542  static DDSolid shapeless(const DDName& name);
543 
544  static DDSolid reflection(const DDName& name, const DDSolid& s);
545 };
546 
547 #endif
DDSolidShapes.h
DDOrb::DDOrb
DDOrb(void)=delete
DDBooleanSolid::solidB
DDSolid solidB(void) const
Definition: DDSolid.cc:468
DDTubs::zhalf
double zhalf(void) const
Definition: DDSolid.cc:450
DDBase.h
DDSolidFactory::reflection
static DDSolid reflection(const DDName &name, const DDSolid &s)
DDParallelepiped::theta
double theta(void) const
DDPseudoTrap::radius
double radius(void) const
radius of the cut-out (neg.) or rounding (pos.)
Definition: DDSolid.cc:196
DDAxes::y
photonAnalyzer_cfi.rMax
rMax
Definition: photonAnalyzer_cfi.py:91
DDPseudoTrap::DDPseudoTrap
DDPseudoTrap(void)=delete
DDI
Definition: DDCompactView.h:25
DDEllipsoid::zBottomCut
double zBottomCut(void) const
DDPolyhedra::rMaxVec
std::vector< double > rMaxVec(void) const
Definition: DDSolid.cc:338
DDEllipsoid::zSemiAxis
double zSemiAxis(void) const
DDTrap::phi
double phi(void) const
Azimuthal angle of the line joining the centres of the faces at -/+pDz.
Definition: DDSolid.cc:135
DDTransform.h
DDSolidShape
DDSolidShape
Definition: DDSolidShapes.h:6
DDExtrudedPolygon::DDExtrudedPolygon
DDExtrudedPolygon(void)=delete
DDTrap::halfZ
double halfZ(void) const
half of the z-Axis
Definition: DDSolid.cc:131
DDEllipticalTube
Definition: DDSolid.h:352
DDTruncTubs::startPhi
double startPhi(void) const
angular start of the tube-section
Definition: DDSolid.cc:168
DDTrap::x4
double x4(void) const
Half-length along x of the side at y=+pDy2 of the face at +pDz.
Definition: DDSolid.cc:149
DDCons
Definition: DDSolid.h:281
DDPseudoTrap::y2
double y2(void) const
half length along y on +z
Definition: DDSolid.cc:194
DDMultiUnion
Definition: DDSolid.h:313
DDExtrudedPolygon::yVec
std::vector< double > yVec(void) const
Definition: DDSolid.cc:378
DDCons::deltaPhi
double deltaPhi(void) const
Definition: DDSolid.cc:422
DDSphere::DDSphere
DDSphere(void)=delete
DDTrap::x2
double x2(void) const
Half-length along x of the side at y=+pDy1 of the face at -pDz.
Definition: DDSolid.cc:141
DDI::BooleanSolid
Definition: Boolean.h:12
DDPseudoTrap::atMinusZ
bool atMinusZ(void) const
true, if cut-out or rounding is on the -z side
Definition: DDSolid.cc:198
DDName
DDName is used to identify DDD entities uniquely.
Definition: DDName.h:15
DDTorus::rMin
double rMin(void) const
Definition: DDSolid.cc:432
DDCons::DDCons
DDCons(void)=delete
DDPolyhedra::zVec
std::vector< double > zVec(void) const
Definition: DDSolid.cc:324
DDBox::halfZ
double halfZ(void) const
Definition: DDSolid.cc:212
operator<<
std::ostream & operator<<(std::ostream &, const DDSolid &)
Definition: DDSolid.cc:33
DDSphere::startPhi
double startPhi(void) const
Definition: DDSolid.cc:482
DDSphere::innerRadius
double innerRadius(void) const
Definition: DDSolid.cc:478
DDTorus::rMax
double rMax(void) const
Definition: DDSolid.cc:434
DDParallelepiped::xHalf
double xHalf(void) const
DDSubtraction::DDSubtraction
DDSubtraction(void)=delete
DDMultiUnion::DDMultiUnion
DDMultiUnion(void)=delete
DDPolycone::deltaPhi
double deltaPhi(void) const
Definition: DDSolid.cc:273
DDPseudoTrap::x2
double x2(void) const
half length along x on +z
Definition: DDSolid.cc:190
interestingEgammaIsoDetIdsSequence_cff.outerRadius
outerRadius
Definition: interestingEgammaIsoDetIdsSequence_cff.py:14
DDTruncTubs::DDTruncTubs
DDTruncTubs(void)=delete
DDEllipsoid::ySemiAxis
double ySemiAxis(void) const
DDBooleanSolid::rotation
DDRotation rotation(void) const
Definition: DDSolid.cc:462
DDPolyhedra::rMinVec
std::vector< double > rMinVec(void) const
Definition: DDSolid.cc:331
alpha
float alpha
Definition: AMPTWrapper.h:105
DDPolyhedra::DDPolyhedra
DDPolyhedra(void)=delete
DDExtrudedPolygon::xVec
std::vector< double > xVec(void) const
Definition: DDSolid.cc:374
DDTubs::DDTubs
DDTubs(void)=delete
DDSolidFactory::cons
static DDSolid cons(const DDName &name, double zhalf, double rInMinusZ, double rOutMinusZ, double rInPlusZ, double rOutPlusZ, double phiFrom, double deltaPhi)
Definition: DDSolid.cc:636
DDEllipsoid
Definition: DDSolid.h:362
DDAxes::x
DDCutTubs::deltaPhi
double deltaPhi(void) const
Definition: DDSolid.cc:520
DDCons::phiFrom
double phiFrom(void) const
Definition: DDSolid.cc:420
DDCons::rInMinusZ
double rInMinusZ(void) const
Definition: DDSolid.cc:412
DDOrb::radius
double radius(void) const
DDTruncTubs::cutAtStart
double cutAtStart(void) const
truncation at begin of the tube-section
Definition: DDSolid.cc:172
DDExtrudedPolygon::xyPointsSize
auto xyPointsSize(void) const -> std::size_t
Definition: DDSolid.cc:353
DDTorus
Definition: DDSolid.h:295
DDMultiUnionSolid::translations
const std::vector< DDTranslation > & translations(void) const
DDPseudoTrap
Definition: DDSolid.h:106
DDExtrudedPolygon::zVec
std::vector< double > zVec(void) const
Definition: DDSolid.cc:383
DDCons::rInPlusZ
double rInPlusZ(void) const
Definition: DDSolid.cc:416
DDTorus::startPhi
double startPhi(void) const
Definition: DDSolid.cc:438
DDCutTubs
Definition: DDSolid.h:267
DDSphere::deltaTheta
double deltaTheta(void) const
Definition: DDSolid.cc:488
DDCutTubs::rOut
double rOut(void) const
Definition: DDSolid.cc:516
DDCutTubs::zhalf
double zhalf(void) const
Definition: DDSolid.cc:512
DDTruncTubs::cutInside
bool cutInside(void) const
true, if truncation is on the inner side of the tube-section
Definition: DDSolid.cc:176
DDBooleanSolid
Definition: DDSolid.h:173
DDPolySolid::getVec
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:248
DDTorus::deltaPhi
double deltaPhi(void) const
Definition: DDSolid.cc:440
DDTruncTubs::zHalf
double zHalf(void) const
half of the z-Axis
Definition: DDSolid.cc:162
DDEllipsoid::xSemiAxis
double xSemiAxis(void) const
DDSolid::shape
DDSolidShape shape(void) const
The type of the solid.
Definition: DDSolid.cc:119
DDEllipticalTube::DDEllipticalTube
DDEllipticalTube(void)=delete
DDBooleanSolid::translation
DDTranslation translation(void) const
Definition: DDSolid.cc:464
alignCSCRings.s
s
Definition: alignCSCRings.py:92
DDSolidFactory::subtraction
static DDSolid subtraction(const DDName &name, const DDSolid &a, const DDSolid &b, const DDTranslation &t, const DDRotation &r)
Definition: DDSolid.cc:585
DDSolidFactory::truncTubs
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:623
DDIntersection::DDIntersection
DDIntersection(void)=delete
DDTruncTubs
A truncated tube section.
Definition: DDSolid.h:128
DDMultiUnionSolid
Definition: DDSolid.h:187
DDSolidFactory::parallelepiped
static DDSolid parallelepiped(const DDName &name, double xHalf, double yHalf, double zHalf, double alpha, double theta, double phi)
DDPolyhedra::sides
int sides(void) const
Definition: DDSolid.cc:311
DDCons::rOutMinusZ
double rOutMinusZ(void) const
Definition: DDSolid.cc:414
DDSolidFactory::multiUnionSolid
static DDSolid multiUnionSolid(const DDName &name, const std::vector< DDSolid > &a, const std::vector< DDTranslation > &t, const std::vector< DDRotation > &r)
DDTranslation
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
Definition: DDTranslation.h:7
DDSolidFactory::polyhedra
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:551
SiPixelRawToDigiRegional_cfi.deltaPhi
deltaPhi
Definition: SiPixelRawToDigiRegional_cfi.py:9
DDBox
Interface to a Box.
Definition: DDSolid.h:156
DDTrap::DDTrap
DDTrap(void)=delete
DDSolid::operator<<
friend std::ostream & operator<<(std::ostream &, const DDSolid &)
Definition: DDSolid.cc:33
DDTrap::y1
double y1(void) const
Half-length along y of the face at -pDz.
Definition: DDSolid.cc:137
DDTorus::rTorus
double rTorus(void) const
Definition: DDSolid.cc:436
DDEllipticalTube::zHeight
double zHeight(void) const
Definition: DDSolid.cc:502
DDSphere::startTheta
double startTheta(void) const
Definition: DDSolid.cc:486
DDTrap::theta
double theta(void) const
Polar angle of the line joining the centres of the faces at -/+pDz.
Definition: DDSolid.cc:133
DDBase< DDName, std::unique_ptr< DDI::Solid > >::name
const DDName & name() const
Definition: DDBase.h:59
DDAxes::z
DDPolycone::zVec
std::vector< double > zVec(void) const
Definition: DDSolid.cc:282
DDSolidFactory::tubs
static DDSolid tubs(const DDName &name, double zhalf, double rIn, double rOut, double startPhi, double deltaPhi)
Definition: DDSolid.cc:653
DDOrb
Definition: DDSolid.h:344
theta
Geom::Theta< T > theta() const
Definition: Basic3DVectorLD.h:150
DDEllipticalTube::xSemiAxis
double xSemiAxis(void) const
Definition: DDSolid.cc:498
DDShapelessSolid::DDShapelessSolid
DDShapelessSolid(void)=delete
DDPolycone::rMaxVec
std::vector< double > rMaxVec(void) const
Definition: DDSolid.cc:296
DDPolySolid
Abstract class for DDPolycone and DDPolyhedra. Basically a common member function.
Definition: DDSolid.h:201
DDUnion
Definition: DDSolid.h:307
b
double b
Definition: hdecay.h:118
DDParallelepiped::DDParallelepiped
DDParallelepiped(void)=delete
DDCutTubs::DDCutTubs
DDCutTubs(void)=delete
DDPseudoTrap::y1
double y1(void) const
half length along y on -z
Definition: DDSolid.cc:192
DDTorus::DDTorus
DDTorus(void)=delete
DDCutTubs::lowNorm
std::array< double, 3 > lowNorm(void) const
Definition: DDSolid.cc:522
DDTubs::rIn
double rIn(void) const
Definition: DDSolid.cc:452
DDTubs::deltaPhi
double deltaPhi(void) const
Definition: DDSolid.cc:458
DDTrap
Interface to a Trapezoid.
Definition: DDSolid.h:77
DDSolidFactory::intersection
static DDSolid intersection(const DDName &name, const DDSolid &a, const DDSolid &b, const DDTranslation &t, const DDRotation &r)
Definition: DDSolid.cc:590
a
double a
Definition: hdecay.h:119
DDSolidFactory::extrudedpolygon
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:570
DDIntersection
Definition: DDSolid.h:319
DDEllipticalTube::ySemiAxis
double ySemiAxis(void) const
Definition: DDSolid.cc:500
DDEllipsoid::zTopCut
double zTopCut(void) const
DDSolidFactory::ellipticalTube
static DDSolid ellipticalTube(const DDName &name, double xSemiAxis, double ySemiAxis, double zHeight)
Definition: DDSolid.cc:684
DDTruncTubs::rIn
double rIn(void) const
inner radius
Definition: DDSolid.cc:164
DDCutTubs::highNorm
std::array< double, 3 > highNorm(void) const
Definition: DDSolid.cc:526
DDTubs::rOut
double rOut(void) const
Definition: DDSolid.cc:454
interestingEgammaIsoDetIdsSequence_cff.innerRadius
innerRadius
Definition: interestingEgammaIsoDetIdsSequence_cff.py:15
DDSolidFactory
Definition: DDSolid.h:389
DDMultiUnionSolid::union_
DDI::MultiUnion * union_
Definition: DDSolid.h:197
DDSphere::outerRadius
double outerRadius(void) const
Definition: DDSolid.cc:480
DDExtrudedPolygon::zxVec
std::vector< double > zxVec(void) const
Definition: DDSolid.cc:388
DDPseudoTrap::x1
double x1(void) const
half length along x on -z
Definition: DDSolid.cc:188
DDBox::halfX
double halfX(void) const
Definition: DDSolid.cc:208
DDTranslation.h
DDSphere
Definition: DDSolid.h:331
DDShapelessSolid
This is simply a handle on the solid.
Definition: DDSolid.h:167
DDSolidFactory::orb
static DDSolid orb(const DDName &name, double radius)
DDTubs::startPhi
double startPhi(void) const
Definition: DDSolid.cc:456
DDBox::halfY
double halfY(void) const
Definition: DDSolid.cc:210
DDSolidFactory::polycone
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:537
DDPolycone::rVec
std::vector< double > rVec(void) const
Definition: DDSolid.cc:275
DDExtrudedPolygon
Definition: DDSolid.h:238
DDPolycone::DDPolycone
DDPolycone(void)=delete
DDSolidFactory::shapeless
static DDSolid shapeless(const DDName &name)
Definition: DDSolid.cc:688
DDExtrudedPolygon::zyVec
std::vector< double > zyVec(void) const
Definition: DDSolid.cc:393
DDSolidFactory::unionSolid
static DDSolid unionSolid(const DDName &name, const DDSolid &a, const DDSolid &b, const DDTranslation &t, const DDRotation &r)
Definition: DDSolid.cc:580
DDUnion::DDUnion
DDUnion(void)=delete
DDPolyhedra
Definition: DDSolid.h:224
alignCSCRings.r
r
Definition: alignCSCRings.py:93
DDSolidFactory::cuttubs
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:658
DDAxes::phi
DDPolyhedra::deltaPhi
double deltaPhi(void) const
Definition: DDSolid.cc:315
DDPseudoTrap::halfZ
double halfZ(void) const
half of the z-Axis
Definition: DDSolid.cc:186
DDSolidFactory::torus
static DDSolid torus(const DDName &name, double rMin, double rMax, double rTorus, double startPhi, double deltaPhi)
Definition: DDSolid.cc:648
DDTrap::y2
double y2(void) const
Half-length along y of the face at +pDz.
Definition: DDSolid.cc:145
DDPolycone::startPhi
double startPhi(void) const
Definition: DDSolid.cc:271
DDTruncTubs::deltaPhi
double deltaPhi(void) const
angular span of the tube-section
Definition: DDSolid.cc:170
DDCutTubs::startPhi
double startPhi(void) const
Definition: DDSolid.cc:518
DDSolidFactory::pseudoTrap
static DDSolid pseudoTrap(const DDName &name, double pDx1, double pDx2, double pDy1, double pDy2, double pDz, double radius, bool atMinusZ)
Definition: DDSolid.cc:611
DDTruncTubs::cutAtDelta
double cutAtDelta(void) const
truncation at end of the tube-section
Definition: DDSolid.cc:174
DDExtrudedPolygon::zSectionsSize
auto zSectionsSize(void) const -> std::size_t
Definition: DDSolid.cc:361
DDName.h
DDSolidFactory::ellipsoid
static DDSolid ellipsoid(const DDName &name, double xSemiAxis, double ySemiAxis, double zSemiAxis, double zBottomCut=0., double zTopCut=0.)
DDMultiUnionSolid::solids
const std::vector< DDSolid > & solids(void) const
CosmicsPD_Skims.radius
radius
Definition: CosmicsPD_Skims.py:135
DDSolid::parameters
const std::vector< double > & parameters(void) const
Give the parameters of the solid.
Definition: DDSolid.cc:121
DDTruncTubs::rOut
double rOut(void) const
outer radius
Definition: DDSolid.cc:166
Skims_PA_cff.name
name
Definition: Skims_PA_cff.py:17
DDMultiUnionSolid::rotations
const std::vector< DDRotation > & rotations(void) const
DDSolid
A DDSolid represents the shape of a part.
Definition: DDSolid.h:39
DDPolycone
Definition: DDSolid.h:211
DDRotation
Represents a uniquely identifyable rotation matrix.
Definition: DDTransform.h:57
DDTrap::x1
double x1(void) const
Half-length along x of the side at y=-pDy1 of the face at -pDz.
Definition: DDSolid.cc:139
DDSolidFactory::sphere
static DDSolid sphere(const DDName &name, double innerRadius, double outerRadius, double startPhi, double deltaPhi, double startTheta, double deltaTheta)
Definition: DDSolid.cc:673
DDBooleanSolid::solidA
DDSolid solidA(void) const
Definition: DDSolid.cc:466
photonAnalyzer_cfi.rMin
rMin
Definition: photonAnalyzer_cfi.py:90
DDCons::rOutPlusZ
double rOutPlusZ(void) const
Definition: DDSolid.cc:418
DDBooleanSolid::boolean_
const DDI::BooleanSolid & boolean_
Definition: DDSolid.h:184
DDCons::zhalf
double zhalf(void) const
Definition: DDSolid.cc:410
DDTrap::alpha1
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:143
DDPolyhedra::startPhi
double startPhi(void) const
Definition: DDSolid.cc:313
DDBase
Definition: DDBase.h:10
DDTrap::alpha2
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:151
DDEllipsoid::DDEllipsoid
DDEllipsoid(void)=delete
DDSolidFactory::box
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:533
DDBooleanSolid::DDBooleanSolid
DDBooleanSolid(void)=delete
DDSubtraction
Definition: DDSolid.h:325
hltrates_dqm_sourceclient-live_cfg.offset
offset
Definition: hltrates_dqm_sourceclient-live_cfg.py:82
DDPolycone::rMinVec
std::vector< double > rMinVec(void) const
Definition: DDSolid.cc:289
submitPVValidationJobs.t
string t
Definition: submitPVValidationJobs.py:644
eostools.which
def which(cmd)
Definition: eostools.py:336
DDSolidFactory::trap
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:595
DDParallelepiped::zHalf
double zHalf(void) const
DDSphere::deltaPhi
double deltaPhi(void) const
Definition: DDSolid.cc:484
DDParallelepiped
Definition: DDSolid.h:374
DDCutTubs::rIn
double rIn(void) const
Definition: DDSolid.cc:514
DDPolyhedra::rVec
std::vector< double > rVec(void) const
Definition: DDSolid.cc:317
DDSolid::DDSolid
DDSolid(void)
Uninitialilzed solid reference-object; for further details on reference-objects see documentation of ...
Definition: DDSolid.cc:49
DDTrap::x3
double x3(void) const
Half-length along x of the side at y=-pDy2 of the face at +pDz.
Definition: DDSolid.cc:147
DDMultiUnionSolid::DDMultiUnionSolid
DDMultiUnionSolid(void)=delete
DDParallelepiped::alpha
double alpha(void) const
DDParallelepiped::phi
double phi(void) const
DDParallelepiped::yHalf
double yHalf(void) const
DDTubs
Definition: DDSolid.h:255
DDBox::DDBox
DDBox(void)=delete
DDSolid::volume
double volume(void) const
Returns the volume of the given solid (does not work with boolean soids !)
Definition: DDSolid.cc:117
DDPolySolid::DDPolySolid
DDPolySolid(void)=delete
DDExtrudedPolygon::zscaleVec
std::vector< double > zscaleVec(void) const
Definition: DDSolid.cc:398