Geant4 11.2.2
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
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