CMS 3D CMS Logo

volumeHandle.h
Go to the documentation of this file.
1 #ifndef volumeHandle_H
2 #define volumeHandle_H
3 
13 #include "BaseVolumeHandle.h"
14 #include "MagGeoBuilderFromDDD.h"
15 
19 
20 class DDExpandedView;
21 class MagVolume6Faces;
22 
24 public:
25  volumeHandle(const DDExpandedView& fv, bool expand2Pi = false, bool debugVal = false);
26 
27  // Disallow Default/copy ctor & assignment op.
28  // (we want to handle only pointers!!!)
29  volumeHandle(const volumeHandle& v) = delete;
30  volumeHandle operator=(const volumeHandle& v) = delete;
31 
32  DDSolidShape shape() const override { return solid.shape(); }
33 
35  std::vector<VolumeSide> sides() const override;
36 
37 private:
38  // initialise the refPlane
39  void referencePlane(const DDExpandedView& fv);
40 
41  // Build the surfaces for a box
42  void buildBox(double halfX, double halfY, double halfZ);
43  // Build the surfaces for a trapezoid
44  void buildTrap(double x1,
45  double x2,
46  double x3,
47  double x4,
48  double y1,
49  double y2,
50  double theta,
51  double phi,
52  double halfZ,
53  double alpha1,
54  double alpha2);
55  // Build the surfaces for a ddtubs shape
56  void buildTubs(double zhalf, double rIn, double rOut, double startPhi, double deltaPhi);
57  // Build the surfaces for a ddcons shape
58  void buildCons(double zhalf,
59  double rInMinusZ,
60  double rOutMinusZ,
61  double rInPlusZ,
62  double rOutPlusZ,
63  double startPhi,
64  double deltaPhi);
65  // Build the surfaces for a ddpseudotrap shape
66  void buildPseudoTrap(double x1, double x2, double y1, double y2, double halfZ, double radius, bool atMinusZ);
67  // Build the surfaces for a ddtrunctubs shape
68  void buildTruncTubs(double zhalf,
69  double rIn,
70  double rOut,
71  double startPhi,
72  double deltaPhi,
73  double cutAtStart,
74  double cutAtDelta,
75  bool cutInside);
76 
77  // the DDSolid.
79 };
80 
81 #endif
void buildTrap(double x1, double x2, double x3, double x4, double y1, double y2, double theta, double phi, double halfZ, double alpha1, double alpha2)
volumeHandle(const DDExpandedView &fv, bool expand2Pi=false, bool debugVal=false)
Definition: volumeHandle.cc:40
std::vector< VolumeSide > sides() const override
The surfaces and they orientation, as required to build a MagVolume.
A DDSolid represents the shape of a part.
Definition: DDSolid.h:39
void buildBox(double halfX, double halfY, double halfZ)
void buildCons(double zhalf, double rInMinusZ, double rOutMinusZ, double rInPlusZ, double rOutPlusZ, double startPhi, double deltaPhi)
void referencePlane(const DDExpandedView &fv)
DDSolidShape shape(void) const
The type of the solid.
Definition: DDSolid.cc:123
void buildTruncTubs(double zhalf, double rIn, double rOut, double startPhi, double deltaPhi, double cutAtStart, double cutAtDelta, bool cutInside)
void buildPseudoTrap(double x1, double x2, double y1, double y2, double halfZ, double radius, bool atMinusZ)
DDSolidShape
Definition: DDSolidShapes.h:6
volumeHandle operator=(const volumeHandle &v)=delete
DDSolidShape shape() const override
Shape of the solid.
Definition: volumeHandle.h:32
Provides an exploded view of the detector (tree-view)
Geom::Theta< T > theta() const
void buildTubs(double zhalf, double rIn, double rOut, double startPhi, double deltaPhi)