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
SoTubs.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: SoTubs */
31/* Description: Represents the G4Tubs Geant Geometry entity */
32/* Author: Joe Boudreau Nov 11 1996 */
33/* */
34/*---------------------------------------------------------------------------*/
35#ifndef HEPVis_SoTubs_h
36#define HEPVis_SoTubs_h
37
38#include <Inventor/fields/SoSFFloat.h>
39#include <Inventor/fields/SoSFNode.h>
40#include <Inventor/fields/SoSFBool.h>
41#include <Inventor/nodes/SoShape.h>
42
43class SoSFNode;
44
45//! SoTubs - Inventor version of the G4Tubs Geant Geometry entity
46/*!
47 * Node: SoTubs
48 *
49 * Description: The Inventor version of the G4Tubs Geant Geometry entity
50 *
51 * Author: Joe Boudreau Nov 11 1996
52 *
53 * class G4Tubs
54 *
55 * A tube or tube segment with curved sides parallel to
56 * the z-axis. The tube has a specified half-length along
57 * the z axis, about which it is centred, and a given
58 * minimum and maximum radius. A minimum radius of 0
59 * signifies a filled tube /cylinder. The tube segment is
60 * specified by starting and delta
61 * angles for phi, with 0 being the +x axis, PI/2
62 * the +y axis. A delta angle of 2PI signifies a
63 * complete, unsegmented tube/cylinder
64 *
65 * Always use Inventor Fields. This allows Inventor to detect a change to
66 * the data field and take the appropriate action; e.g., redraw the scene.
67*/
68
69#define SoTubs Geant4_SoTubs
70
71class SoTubs:public SoShape {
72
73 // The following is required:
74 SO_NODE_HEADER(SoTubs);
75
76public:
77
78 //
79 //! Inside radius of the tube
80 //
81 SoSFFloat pRMin;
82 //
83 //! Outside radius of the tube
84 //
85 SoSFFloat pRMax;
86 //
87 //! Half-length in Z
88 //
89 SoSFFloat pDz;
90 //
91 //! Starting angle, in radians
92 //
93 SoSFFloat pSPhi;
94 //
95 //! Delta-angle, in radians
96 //
97 SoSFFloat pDPhi;
98 //
99 //! Alternate rep - required
100 //
101 SoSFNode alternateRep;
102
103 //
104 //! Constructor, required
105 //
106 SoTubs();
107
108 //
109 //! Class Initializer, required
110 //
111 static void initClass();
112
113 //
114 //! Generate AlternateRep, required. Generating an alternate representation
115 //! must be done upon users request. It allows an Inventor program to read
116 //! back the file without requiring *this* code to be dynamically linked.
117 //! If the users expects that *this* code will be dynamically linked, he
118 //! need not invoke this method.
119 //
120 virtual void generateAlternateRep();
121
122 //
123 //! We better be able to clear it, too!
124 //
125 virtual void clearAlternateRep();
126
127protected:
128
129 //
130 //! compute bounding Box, required
131 //
132 virtual void computeBBox(SoAction *action, SbBox3f &box, SbVec3f &center );
133
134 //
135 //! Generate Primitives, required
136 //
137 virtual void generatePrimitives(SoAction *action);
138
139 //
140 //! GetChildList, required whenever the class has hidden children
141 //
142 virtual SoChildList *getChildren() const;
143
144
145protected:
146 //
147 //! Destructor, required
148 //
149 virtual ~SoTubs();
150
151private:
152
153 //
154 //! Generate Children. Used to create the hidden children. Required whenever
155 //! the node has hidden children.
156 //
157 void generateChildren();
158
159 //
160 //! Used to modify hidden children when a data field is changed. Required
161 //! whenever the class has hidden children.
162 //
163 void updateChildren();
164
165 //
166 //! ChildList. Required whenever the class has hidden children.
167 //
168 SoChildList *children;
169
170 //
171 //! help with trigonometry. increments sines an cosines by an angle.
172 //
173 void inc(double & sinPhi, double & cosPhi, double sinDeltaPhi, double cosDeltaPhi) const {
174 double oldSin=sinPhi,oldCos=cosPhi;
175 sinPhi = oldSin*cosDeltaPhi+oldCos*sinDeltaPhi;
176 cosPhi = oldCos*cosDeltaPhi-oldSin*sinDeltaPhi;
177 }
178
179};
180
181#endif
#define SoTubs
SoTubs - Inventor version of the G4Tubs Geant Geometry entity.
Definition SoTubs.h:69
virtual SoChildList * getChildren() const
GetChildList, required whenever the class has hidden children.
Definition SoTubs.cc:250
virtual void computeBBox(SoAction *action, SbBox3f &box, SbVec3f &center)
compute bounding Box, required
Definition SoTubs.cc:256
SoSFFloat pDz
Half-length in Z.
Definition SoTubs.h:89
virtual void clearAlternateRep()
We better be able to clear it, too!
Definition SoTubs.cc:469
SoSFNode alternateRep
Alternate rep - required.
Definition SoTubs.h:101
virtual void generatePrimitives(SoAction *action)
Generate Primitives, required.
Definition SoTubs.cc:94
SoSFFloat pDPhi
Delta-angle, in radians.
Definition SoTubs.h:97
virtual void generateAlternateRep()
Definition SoTubs.cc:458
SoSFFloat pSPhi
Starting angle, in radians.
Definition SoTubs.h:93
static void initClass()
Class Initializer, required.
Definition SoTubs.cc:84
SoSFFloat pRMin
Inside radius of the tube.
Definition SoTubs.h:81
SoSFFloat pRMax
Outside radius of the tube.
Definition SoTubs.h:85