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