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
DDSolidShapes.h
DDOrb::DDOrb
DDOrb(void)=delete
DDBooleanSolid::solidB
DDSolid solidB(void) const
Definition: DDSolid.cc:472
DDTubs::zhalf
double zhalf(void) const
Definition: DDSolid.cc:454
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:200
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:342
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:139
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:135
DDEllipticalTube
Definition: DDSolid.h:363
DDTruncTubs::startPhi
double startPhi(void) const
angular start of the tube-section
Definition: DDSolid.cc:172
DDTrap::x4
double x4(void) const
Half-length along x of the side at y=+pDy2 of the face at +pDz.
Definition: DDSolid.cc:153
DDCons
Definition: DDSolid.h:292
DDPseudoTrap::y2
double y2(void) const
half length along y on +z
Definition: DDSolid.cc:198
DDMultiUnion
Definition: DDSolid.h:324
DDExtrudedPolygon::yVec
std::vector< double > yVec(void) const
Definition: DDSolid.cc:382
DDCons::deltaPhi
double deltaPhi(void) const
Definition: DDSolid.cc:426
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:145
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:202
DDName
DDName is used to identify DDD entities uniquely.
Definition: DDName.h:17
DDTorus::rMin
double rMin(void) const
Definition: DDSolid.cc:436
DDCons::DDCons
DDCons(void)=delete
DDPolyhedra::zVec
std::vector< double > zVec(void) const
Definition: DDSolid.cc:328
DDBox::halfZ
double halfZ(void) const
Definition: DDSolid.cc:216
operator<<
std::ostream & operator<<(std::ostream &, const DDSolid &)
Definition: DDSolid.cc:34
DDSphere::startPhi
double startPhi(void) const
Definition: DDSolid.cc:486
DDSphere::innerRadius
double innerRadius(void) const
Definition: DDSolid.cc:482
DDTorus::rMax
double rMax(void) const
Definition: DDSolid.cc:438
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:277
DDPseudoTrap::x2
double x2(void) const
half length along x on +z
Definition: DDSolid.cc:194
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:466
DDPolyhedra::rMinVec
std::vector< double > rMinVec(void) const
Definition: DDSolid.cc:335
alpha
float alpha
Definition: AMPTWrapper.h:105
DDPolyhedra::DDPolyhedra
DDPolyhedra(void)=delete
DDExtrudedPolygon::xVec
std::vector< double > xVec(void) const
Definition: DDSolid.cc:378
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:650
DDEllipsoid
Definition: DDSolid.h:373
DDAxes::x
DDCutTubs::deltaPhi
double deltaPhi(void) const
Definition: DDSolid.cc:524
DDAssembly
Interface to an Assembly.
Definition: DDSolid.h:77
DDCons::phiFrom
double phiFrom(void) const
Definition: DDSolid.cc:424
DDCons::rInMinusZ
double rInMinusZ(void) const
Definition: DDSolid.cc:416
DDOrb::radius
double radius(void) const
DDTruncTubs::cutAtStart
double cutAtStart(void) const
truncation at begin of the tube-section
Definition: DDSolid.cc:176
DDExtrudedPolygon::xyPointsSize
auto xyPointsSize(void) const -> std::size_t
Definition: DDSolid.cc:357
DDTorus
Definition: DDSolid.h:306
DDMultiUnionSolid::translations
const std::vector< DDTranslation > & translations(void) const
DDPseudoTrap
Definition: DDSolid.h:117
DDExtrudedPolygon::zVec
std::vector< double > zVec(void) const
Definition: DDSolid.cc:387
DDCons::rInPlusZ
double rInPlusZ(void) const
Definition: DDSolid.cc:420
DDTorus::startPhi
double startPhi(void) const
Definition: DDSolid.cc:442
DDCutTubs
Definition: DDSolid.h:278
DDSphere::deltaTheta
double deltaTheta(void) const
Definition: DDSolid.cc:492
DDCutTubs::rOut
double rOut(void) const
Definition: DDSolid.cc:520
DDCutTubs::zhalf
double zhalf(void) const
Definition: DDSolid.cc:516
DDTruncTubs::cutInside
bool cutInside(void) const
true, if truncation is on the inner side of the tube-section
Definition: DDSolid.cc:180
DDBooleanSolid
Definition: DDSolid.h:184
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:252
DDTorus::deltaPhi
double deltaPhi(void) const
Definition: DDSolid.cc:444
DDTruncTubs::zHalf
double zHalf(void) const
half of the z-Axis
Definition: DDSolid.cc:166
DDEllipsoid::xSemiAxis
double xSemiAxis(void) const
DDSolid::shape
DDSolidShape shape(void) const
The type of the solid.
Definition: DDSolid.cc:123
DDEllipticalTube::DDEllipticalTube
DDEllipticalTube(void)=delete
DDBooleanSolid::translation
DDTranslation translation(void) const
Definition: DDSolid.cc:468
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:599
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:637
DDIntersection::DDIntersection
DDIntersection(void)=delete
DDTruncTubs
A truncated tube section.
Definition: DDSolid.h:139
DDMultiUnionSolid
Definition: DDSolid.h:198
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:315
DDCons::rOutMinusZ
double rOutMinusZ(void) const
Definition: DDSolid.cc:418
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:565
SiPixelRawToDigiRegional_cfi.deltaPhi
deltaPhi
Definition: SiPixelRawToDigiRegional_cfi.py:9
DDBox
Interface to a Box.
Definition: DDSolid.h:167
DDTrap::DDTrap
DDTrap(void)=delete
DDSolid::operator<<
friend std::ostream & operator<<(std::ostream &, const DDSolid &)
Definition: DDSolid.cc:34
DDTrap::y1
double y1(void) const
Half-length along y of the face at -pDz.
Definition: DDSolid.cc:141
DDTorus::rTorus
double rTorus(void) const
Definition: DDSolid.cc:440
DDEllipticalTube::zHeight
double zHeight(void) const
Definition: DDSolid.cc:506
DDSphere::startTheta
double startTheta(void) const
Definition: DDSolid.cc:490
DDTrap::theta
double theta(void) const
Polar angle of the line joining the centres of the faces at -/+pDz.
Definition: DDSolid.cc:137
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:286
DDSolidFactory::tubs
static DDSolid tubs(const DDName &name, double zhalf, double rIn, double rOut, double startPhi, double deltaPhi)
Definition: DDSolid.cc:667
DDOrb
Definition: DDSolid.h:355
theta
Geom::Theta< T > theta() const
Definition: Basic3DVectorLD.h:150
DDEllipticalTube::xSemiAxis
double xSemiAxis(void) const
Definition: DDSolid.cc:502
DDShapelessSolid::DDShapelessSolid
DDShapelessSolid(void)=delete
DDPolycone::rMaxVec
std::vector< double > rMaxVec(void) const
Definition: DDSolid.cc:300
DDSolidFactory::assembly
static DDSolid assembly(const DDName &name)
Creates an assembly.
Definition: DDSolid.cc:545
DDPolySolid
Abstract class for DDPolycone and DDPolyhedra. Basically a common member function.
Definition: DDSolid.h:212
DDUnion
Definition: DDSolid.h:318
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:196
DDTorus::DDTorus
DDTorus(void)=delete
DDCutTubs::lowNorm
std::array< double, 3 > lowNorm(void) const
Definition: DDSolid.cc:526
DDTubs::rIn
double rIn(void) const
Definition: DDSolid.cc:456
DDTubs::deltaPhi
double deltaPhi(void) const
Definition: DDSolid.cc:462
DDTrap
Interface to a Trapezoid.
Definition: DDSolid.h:88
DDSolidFactory::intersection
static DDSolid intersection(const DDName &name, const DDSolid &a, const DDSolid &b, const DDTranslation &t, const DDRotation &r)
Definition: DDSolid.cc:604
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:584
DDIntersection
Definition: DDSolid.h:330
DDEllipticalTube::ySemiAxis
double ySemiAxis(void) const
Definition: DDSolid.cc:504
DDEllipsoid::zTopCut
double zTopCut(void) const
DDSolidFactory::ellipticalTube
static DDSolid ellipticalTube(const DDName &name, double xSemiAxis, double ySemiAxis, double zHeight)
Definition: DDSolid.cc:698
DDTruncTubs::rIn
double rIn(void) const
inner radius
Definition: DDSolid.cc:168
DDCutTubs::highNorm
std::array< double, 3 > highNorm(void) const
Definition: DDSolid.cc:530
DDTubs::rOut
double rOut(void) const
Definition: DDSolid.cc:458
interestingEgammaIsoDetIdsSequence_cff.innerRadius
innerRadius
Definition: interestingEgammaIsoDetIdsSequence_cff.py:15
DDSolidFactory
Definition: DDSolid.h:400
DDMultiUnionSolid::union_
DDI::MultiUnion * union_
Definition: DDSolid.h:208
DDSphere::outerRadius
double outerRadius(void) const
Definition: DDSolid.cc:484
DDExtrudedPolygon::zxVec
std::vector< double > zxVec(void) const
Definition: DDSolid.cc:392
DDPseudoTrap::x1
double x1(void) const
half length along x on -z
Definition: DDSolid.cc:192
DDBox::halfX
double halfX(void) const
Definition: DDSolid.cc:212
DDTranslation.h
DDSphere
Definition: DDSolid.h:342
DDShapelessSolid
This is simply a handle on the solid.
Definition: DDSolid.h:178
DDSolidFactory::orb
static DDSolid orb(const DDName &name, double radius)
DDTubs::startPhi
double startPhi(void) const
Definition: DDSolid.cc:460
DDBox::halfY
double halfY(void) const
Definition: DDSolid.cc:214
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:551
DDPolycone::rVec
std::vector< double > rVec(void) const
Definition: DDSolid.cc:279
DDExtrudedPolygon
Definition: DDSolid.h:249
DDPolycone::DDPolycone
DDPolycone(void)=delete
DDSolidFactory::shapeless
static DDSolid shapeless(const DDName &name)
Definition: DDSolid.cc:702
DDExtrudedPolygon::zyVec
std::vector< double > zyVec(void) const
Definition: DDSolid.cc:397
DDSolidFactory::unionSolid
static DDSolid unionSolid(const DDName &name, const DDSolid &a, const DDSolid &b, const DDTranslation &t, const DDRotation &r)
Definition: DDSolid.cc:594
DDUnion::DDUnion
DDUnion(void)=delete
DDPolyhedra
Definition: DDSolid.h:235
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:672
DDAxes::phi
DDPolyhedra::deltaPhi
double deltaPhi(void) const
Definition: DDSolid.cc:319
DDPseudoTrap::halfZ
double halfZ(void) const
half of the z-Axis
Definition: DDSolid.cc:190
DDSolidFactory::torus
static DDSolid torus(const DDName &name, double rMin, double rMax, double rTorus, double startPhi, double deltaPhi)
Definition: DDSolid.cc:662
DDTrap::y2
double y2(void) const
Half-length along y of the face at +pDz.
Definition: DDSolid.cc:149
DDPolycone::startPhi
double startPhi(void) const
Definition: DDSolid.cc:275
DDTruncTubs::deltaPhi
double deltaPhi(void) const
angular span of the tube-section
Definition: DDSolid.cc:174
DDCutTubs::startPhi
double startPhi(void) const
Definition: DDSolid.cc:522
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:625
DDTruncTubs::cutAtDelta
double cutAtDelta(void) const
truncation at end of the tube-section
Definition: DDSolid.cc:178
DDExtrudedPolygon::zSectionsSize
auto zSectionsSize(void) const -> std::size_t
Definition: DDSolid.cc:365
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:125
DDTruncTubs::rOut
double rOut(void) const
outer radius
Definition: DDSolid.cc:170
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:222
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:143
DDSolidFactory::sphere
static DDSolid sphere(const DDName &name, double innerRadius, double outerRadius, double startPhi, double deltaPhi, double startTheta, double deltaTheta)
Definition: DDSolid.cc:687
DDBooleanSolid::solidA
DDSolid solidA(void) const
Definition: DDSolid.cc:470
photonAnalyzer_cfi.rMin
rMin
Definition: photonAnalyzer_cfi.py:90
DDCons::rOutPlusZ
double rOutPlusZ(void) const
Definition: DDSolid.cc:422
DDBooleanSolid::boolean_
const DDI::BooleanSolid & boolean_
Definition: DDSolid.h:195
DDCons::zhalf
double zhalf(void) const
Definition: DDSolid.cc:414
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:147
DDPolyhedra::startPhi
double startPhi(void) const
Definition: DDSolid.cc:317
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:155
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:547
DDBooleanSolid::DDBooleanSolid
DDBooleanSolid(void)=delete
DDSubtraction
Definition: DDSolid.h:336
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:293
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:609
DDParallelepiped::zHalf
double zHalf(void) const
DDSphere::deltaPhi
double deltaPhi(void) const
Definition: DDSolid.cc:488
DDParallelepiped
Definition: DDSolid.h:385
DDCutTubs::rIn
double rIn(void) const
Definition: DDSolid.cc:518
DDPolyhedra::rVec
std::vector< double > rVec(void) const
Definition: DDSolid.cc:321
DDSolid::DDSolid
DDSolid(void)
Uninitialilzed solid reference-object; for further details on reference-objects see documentation of ...
Definition: DDSolid.cc:50
DDTrap::x3
double x3(void) const
Half-length along x of the side at y=-pDy2 of the face at +pDz.
Definition: DDSolid.cc:151
DDMultiUnionSolid::DDMultiUnionSolid
DDMultiUnionSolid(void)=delete
DDParallelepiped::alpha
double alpha(void) const
DDParallelepiped::phi
double phi(void) const
DDAssembly::DDAssembly
DDAssembly(void)=delete
DDParallelepiped::yHalf
double yHalf(void) const
DDTubs
Definition: DDSolid.h:266
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:121
DDPolySolid::DDPolySolid
DDPolySolid(void)=delete
DDExtrudedPolygon::zscaleVec
std::vector< double > zscaleVec(void) const
Definition: DDSolid.cc:402