Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
SoTrap.h
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26//
27// $Id$
28//
29/*-----------------------------Hepvis----------------------------------------*/
30/* */
31/* Node: SoTrap */
32/* Description: Represents the G4Trap Geant Geometry entity */
33/* Author: Joe Boudreau Nov 11 1996 */
34/* */
35/*---------------------------------------------------------------------------*/
36#ifndef HEPVis_SoTrap_h
37#define HEPVis_SoTrap_h
38
39// Inheritance :
40#include <Inventor/nodes/SoShape.h>
41
42#include <Inventor/fields/SoSFNode.h>
43#include <Inventor/fields/SoSFBool.h>
44#include <Inventor/fields/SoSFFloat.h>
45
46//adding fields
47#ifdef WIN32
48#include <SoWinEnterScope.h>
49#endif
50
51
52// Defining Class
53#ifdef WIN32
54#include <SoWinLeaveScope.h>
55#endif
56
57class SoSFNode;
58
59//! SoTrap - Inventor version of the G4Trap Geant Geometry entity
60/*! Node: SoTrap
61 *
62 * Description: Inventor version of the G4Trap Geant Geometry entity
63 *
64 * Author: Joe Boudreau Nov 11 1996
65 *
66 * A G4Trap is a general trapezoid: The faces perpendicular to the z planes
67 * are tapezia, and their centres are not necessarily on a line parallel to
68 * the z axis.
69 *
70 * Note that of the 11 parameters desribed below, only 9 are really
71 * independent - a check for planarity is made in the calculation of the
72 * equation for each plane. If the planes are not parallel, a call to
73 * G4Exception is made.
74 *
75 * Always use Inventor Fields. This allows Inventor to detect a change to
76 * the data field and take the appropriate action; e.g., redraw the scene.
77 *
78*/
79
80#define SoTrap Geant4_SoTrap
81
82class SoTrap:public SoShape {
83
84 // The following is required:
85 SO_NODE_HEADER(SoTrap);
86
87public:
88#if defined(WIN32) && defined(BUILDING_DLL)
89 // When building the node as a DLL under Win32 we must explicitly
90 // declare this entry point as visible outside the DLL. The macro
91 // BUILDING_DLL is defined in the node's source file.
92 _declspec(dllexport)
93#endif
94
95 //
96 //! half-length along Z
97 //
98 SoSFFloat pDz;
99 //
100 //! Polar angle of the line joining the centres of the faces at -/+pDz
101 //
102 SoSFFloat pTheta;
103 //
104 //! Azimuthal angle of the line joing the centre of the face at -pDz
105 //! to the centre of the face at +pDz
106 //
107 SoSFFloat pPhi;
108 //
109 //! Half-length along y of the face at -pDz
110 //
111 SoSFFloat pDy1;
112 //
113 //! Half-length along x of the side at y=-pDy1 of the face at -pDz
114 //
115 SoSFFloat pDx1;
116 //
117 //! Half-length along x of the side at y=+pDy1 of the face at -pDz
118 //
119 SoSFFloat pDx2;
120 //
121 //! Half-length along y of the face at +pDz
122 //
123 SoSFFloat pDy2;
124 //
125 //! Half-length along x of the side at y=-pDy2 of the face at +pDz
126 //
127 SoSFFloat pDx3;
128 //
129 //! Half-length along x of the side at y=+pDy2 of the face at +pDz
130 //
131 SoSFFloat pDx4;
132 //
133 //! Angle with respect to the y axis from the centre of the side at
134 //! y=-pDy1 to the centre at y=+pDy1 of the face at -pDz
135 //
136 SoSFFloat pAlp1;
137 //
138 //! Angle with respect to the y axis from the centre of the side at
139 //! y=-pDy2 to the centre at y=+pDy2 of the face at +pDz
140 //
141 SoSFFloat pAlp2;
142
143 //
144 //! Alternate rep - required
145 //
146 SoSFNode alternateRep;
147
148 //
149 //! Constructor, required
150 //
152
153 //
154 //! Class Initializer, required
155 //
156 static void initClass();
157
158 //
159 //! Generate AlternateRep, required. Generating an alternate representation
160 //! must be done upon users request. It allows an Inventor program to read
161 //! back the file without requiring *this* code to be dynamically linked.
162 //! If the users expects that *this* code will be dynamically linked, he
163 //! need not invoke this method.
164 //
165 virtual void generateAlternateRep();
166
167 //
168 //! We better be able to clear it, too!
169 //
170 virtual void clearAlternateRep();
171
172protected:
173
174 //
175 //! compute bounding Box, required
176 //
177 virtual void computeBBox(SoAction *action, SbBox3f &box, SbVec3f &center );
178
179 //
180 //! Generate Primitives, required
181 //
182 virtual void generatePrimitives(SoAction *action);
183
184 //
185 //! GetChildList, required whenever the class has hidden children
186 //
187 virtual SoChildList *getChildren() const;
188
189 //
190 //! Destructor, required
191 //
192 virtual ~SoTrap();
193
194private:
195
196 //
197 //! Generate Children. Used to create the hidden children. Required whenever
198 //! the node has hidden children.
199 //
200 void generateChildren();
201
202 //
203 //! Used to modify hidden children when a data field is changed. Required
204 //! whenever the class has hidden children.
205 //
206 void updateChildren();
207
208 //
209 //! ChildList. Required whenever the class has hidden children.
210 //
211 SoChildList *children;
212
213};
214
215#ifdef WIN32
216#include <SoWinEnterScope.h>
217#endif
218
219#endif
Definition: SoTrap.h:82
SoSFFloat pDx2
Half-length along x of the side at y=+pDy1 of the face at -pDz.
Definition: SoTrap.h:119
SoSFFloat pDz
half-length along Z
Definition: SoTrap.h:98
SoSFFloat pAlp2
Definition: SoTrap.h:141
SoSFFloat pDx4
Half-length along x of the side at y=+pDy2 of the face at +pDz.
Definition: SoTrap.h:131
SoSFFloat pDy1
Half-length along y of the face at -pDz.
Definition: SoTrap.h:111
virtual void computeBBox(SoAction *action, SbBox3f &box, SbVec3f &center)
compute bounding Box, required
SoSFFloat pAlp1
Definition: SoTrap.h:136
static void initClass()
Class Initializer, required.
virtual void generatePrimitives(SoAction *action)
Generate Primitives, required.
SoTrap()
Constructor, required.
SoSFFloat pTheta
Polar angle of the line joining the centres of the faces at -/+pDz.
Definition: SoTrap.h:102
SoSFFloat pDx3
Half-length along x of the side at y=-pDy2 of the face at +pDz.
Definition: SoTrap.h:127
virtual SoChildList * getChildren() const
GetChildList, required whenever the class has hidden children.
SoSFFloat pDx1
Half-length along x of the side at y=-pDy1 of the face at -pDz.
Definition: SoTrap.h:115
virtual ~SoTrap()
Destructor, required.
virtual void clearAlternateRep()
We better be able to clear it, too!
SoSFFloat pPhi
Definition: SoTrap.h:107
virtual void generateAlternateRep()
SoSFFloat pDy2
Half-length along y of the face at +pDz.
Definition: SoTrap.h:123
SoSFNode alternateRep
Alternate rep - required.
Definition: SoTrap.h:146