|
ATLAS Offline Software
|
Go to the documentation of this file.
19 #include <Inventor/C/errors/debugerror.h>
21 #include <Inventor/nodes/SoSeparator.h>
22 #include <Inventor/nodes/SoTransform.h>
23 #include <Inventor/nodes/SoVertexProperty.h>
24 #include <Inventor/nodes/SoLineSet.h>
45 #include "GeoModelKernel/GeoSimplePolygonBrep.h"
77 std::cout<<
"ERROR! Surface unknown!"<<std::endl;
82 SoSeparator* sosep =
new SoSeparator();
95 sosep->addChild(sotra);
96 sosep->addChild(sono);
118 hminphi, hmaxphi, heta, hminphi,
130 hminphi, hmaxphi, heta, hminphi,
138 std::vector<double>
x,
y;
155 const double hminphi = 0.5*cannulus->
minR()*cannulus->
phi();
156 const double hmaxphi = 0.5*cannulus->
maxR()*cannulus->
phi();
157 const double heta = 0.5 * (cannulus->
maxR() - cannulus->
minR());
159 hminphi, hmaxphi, heta, hminphi,
183 (*cylinderSurface).pRMin =
radius-0.25;
184 (*cylinderSurface).pRMax =
radius+0.25;
185 (*cylinderSurface).pDz = hlength;
187 return cylinderSurface;
196 double iradius = cdbo->
rMin();
197 double oradius = cdbo->
rMax();
201 (*discSurface).pRMin = iradius;
202 (*discSurface).pRMax = oradius;
203 (*discSurface).pDz = 0.25;
205 if (fabs(halfphisec-
M_PI)>10
e-5){
207 (*discSurface).pSPhi = -halfphisec;
208 (*discSurface).pDPhi = 2.* halfphisec;
224 SoVertexProperty * scatVtxProperty =
new SoVertexProperty();
225 scatVtxProperty->vertex.set1Value(0, 0.0,0.0,-hlength);
226 scatVtxProperty->vertex.set1Value(1, 0.0,0.0, hlength);
227 SoLineSet * lineSurface =
new SoLineSet();
228 lineSurface->numVertices = 2;
229 lineSurface->vertexProperty = scatVtxProperty;
235 (*lineSurface).pRMin = 0.;
236 (*lineSurface).pRMax =
radius;
237 (*lineSurface).pDz = hlength;
248 (*perigeeSurface).pRMin = 0.;
249 (*perigeeSurface).pRMax = 5.;
250 (*perigeeSurface).pDz = 4000.;
251 return perigeeSurface;
void setParametersForTrapezoid(float dz, float theta, float phi, float dy1, float dx1, float dx2, float dy2, float dx3, float dx4, float alp1, float alp2)
double halflengthY2() const
virtual const SurfaceBounds & bounds() const override final
This method returns the bounds of the Surface by reference.
double maxR() const
This method returns the bigger radius.
SoTubs - Inventor version of the G4Tubs Geant Geometry entity.
SoNode * translateStraightLineSurface(const Trk::StraightLineSurface &slsf, const bool &simple=false) const
double minHalflengthX() const
This method returns the halflength in X at minimal Y (first coordinate of local surface frame)
double halfPhiSector() const
This method returns the halfPhiSector which is covered by the disc.
virtual const CylinderBounds & bounds() const override final
This method returns the CylinderBounds by reference (NoBounds is not possible for cylinder)
double phi() const
This method returns the opening angle.
std::vector< size_t > vec
double halflengthX() const
This method returns the minimal halflength in X (first coordinate of local surface frame)
double minHalflengthPhi() const
This method returns the minimal halflength in phi (first coordinate of local surface frame)
double rMax() const
This method returns outer radius.
SoNode * translatePerigeeSurface(const Trk::PerigeeSurface &persf) const
virtual ~SurfaceToSoNode()
double halflengthEta() const
This method returns the halflength in Eta (second coordinate of local surface frame)
double medHalflengthX() const
This method returns the (maximal) halflength in X (first coordinate of local surface frame)
typename vecDetail::vec_typedef< T, N >::type vec
Define a nice alias for the vectorized type.
double rMin() const
This method returns inner radius.
double halflengthPhi() const
This method returns the halflength in phi (first coordinate of local surface frame)
Eigen::Affine3d Transform3D
const SurfaceBounds & bounds() const override final
This method returns the bounds by reference.
Amg::Vector3D transform(Amg::Vector3D &v, Amg::Transform3D &tr)
Transform a point from a Trasformation3D.
SoNode * translateSurface(const Trk::Surface &sf, const bool &simple=false) const
double minR() const
This method returns the smaller radius.
static void initClass()
Class Initializer, required.
void setParametersForBox(float dx, float dy, float dz, float xcenter=0.0, float ycenter=0.0, float zcenter=0.0)
double maxHalflengthY() const
This method returns the halflength in Y (second coordinate of local surface frame)
static const double surfaceThickness
double halflengthEta() const
This method returns the halflength in eta (second coordinate of local surface frame)
SoNode * translateDiscSurface(const Trk::DiscSurface &dsf) const
double minHalflengthY() const
This method returns the maximal halflength in X (first coordinate of local surface frame)
double maxHalflengthX() const
This method returns the halflength in X at maximal Y (first coordinate of local surface frame)
Eigen::Matrix< double, 3, 1 > Vector3D
double halflengthY1() const
This method returns the halflength in Y of trapezoid at negative/positive Y (second coordinate)
double maxHalflengthPhi() const
This method returns the maximal halflength in phi (first coordinate of local surface frame)
virtual const SurfaceBounds & bounds() const override final
This method returns the bounds by reference, static NoBounds in case of no boundaries.
SoPolyhedron is an Inventor encapsulation of the HepPolyedron class written by E.Chernyaev.
SoNode * translatePlaneSurface(const Trk::PlaneSurface &psf) const
SoNode * translateCylinderSurface(const Trk::CylinderSurface &csf) const
static SoTransform * toSoTransform(const HepGeom::Transform3D &, SoTransform *t=0)
double halflengthZ() const
This method returns the halflengthZ.
virtual double r() const override final
This method returns the radius.