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
SoCons.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: SoCons */
32/* Description: Represents the G4Cons Geant Geometry entity */
33/* Author: Joe Boudreau Nov 11 1996 */
34/* */
35/*---------------------------------------------------------------------------*/
36#ifndef HEPVis_SoCons_h
37#define HEPVis_SoCons_h
38
39#include <Inventor/fields/SoSFFloat.h>
40#include <Inventor/fields/SoSFNode.h>
41#include <Inventor/fields/SoSFBool.h>
42#include <Inventor/nodes/SoShape.h>
43
44class SoSFNode;
45//! SoCons - Inventor version of the G4Cons Geant Geometry entity
46/*!
47 * Node: SoCons
48 *
49 * Description: The Inventor version of the G4Cons Geant Geometry entity
50 *
51 * Author: Joe Boudreau Nov 11 1996
52 *
53 * A G4Cons is, in the general case, a Phi segment of a cone, with half-length
54 * fDz, inner and outer radii specified at -fDz and +fDz. The Phi segment is
55 * described by a starting fSPhi angle, and the +fDPhi delta angle for the shape.
56 * If the delta angle is >=2*M_PI, the shape is treated as continuous in Phi
57 *
58 * Member Data:
59 *
60 * fRmin1 inside radius at -fDz
61 * fRmin2 inside radius at +fDz
62 * fRmax1 outside radius at -fDz
63 * fRmax2 outside radius at +fDz
64 * fDz half length in z
65 *
66 * fSPhi starting angle of the segment in radians
67 * fDPhi delta angle of the segment in radians
68*/
69
70#define SoCons Geant4_SoCons
71
72class SoCons:public SoShape {
73
74 // The following is required:
75 SO_NODE_HEADER(SoCons);
76
77public:
78
79 //
80 //! Inside radius at -fDz
81 //
82 SoSFFloat fRmin1;
83 //
84 //! Inside radius at +fDz
85 //
86 SoSFFloat fRmin2;
87 //
88 //! Outside radius at -fDz
89 //
90 SoSFFloat fRmax1;
91 //
92 //! Outside radius at +fDz
93 //
94 SoSFFloat fRmax2;
95 //
96 //! Half-length along Z
97 //
98 SoSFFloat fDz;
99 //
100 //! Starting angle, in radians
101 //
102 SoSFFloat fSPhi;
103 //
104 //! Delta-angle, in radians
105 //
106 SoSFFloat fDPhi;
107 //
108 //! An Inventor option - slightly better render, worse performance
109 //
110 SoSFBool smoothDraw;
111 //
112 //! Alternate rep required - for use by users without HEPVis shared objects
113 //
114 SoSFNode alternateRep;
115
116 //
117 //! Constructor, required
118 //
120
121 //
122 //! Class Initializer, required
123 //
124 static void initClass();
125
126 //
127 //! Generate AlternateRep, required. Generating an alternate representation
128 //! must be done upon users request. It allows an Inventor program to read
129 //! back the file without requiring *this* code to be dynamically linked.
130 //! If the users expects that *this* code will be dynamically linked, he
131 //! need not invoke this method.
132 //
133 virtual void generateAlternateRep();
134
135 //
136 //! We better be able to clear it, too!
137 //
138 virtual void clearAlternateRep();
139
140protected:
141
142 //
143 //! compute bounding Box, required
144 //
145 virtual void computeBBox(SoAction *action, SbBox3f &box, SbVec3f &center );
146
147 //
148 //! Generate Primitives, required
149 //
150 virtual void generatePrimitives(SoAction *action);
151
152 //
153 //! GetChildList, required whenever the class has hidden children
154 //
155 virtual SoChildList *getChildren() const;
156
157
158protected:
159 //
160 //! Destructor, required
161 //
162 virtual ~SoCons();
163
164private:
165
166 //
167 //! Generate Children. Used to create the hidden children. Required whenever
168 //! the node has hidden children.
169 //
170 void generateChildren();
171
172 //
173 //! Used to modify hidden children when a data field is changed. Required
174 //! whenever the class has hidden children.
175 //
176 void updateChildren();
177
178 //
179 //! ChildList. Required whenever the class has hidden children.
180 //
181 SoChildList *children;
182
183 //
184 //! help with trigonometry. increments sines an cosines by an angle.
185 //
186 void inc(double & sinPhi, double & cosPhi, double sinDeltaPhi, double cosDeltaPhi) const {
187 double oldSin=sinPhi,oldCos=cosPhi;
188 sinPhi = oldSin*cosDeltaPhi+oldCos*sinDeltaPhi;
189 cosPhi = oldCos*cosDeltaPhi-oldSin*sinDeltaPhi;
190 }
191};
192
193#endif
Definition: SoCons.h:72
SoCons()
Constructor, required.
SoSFFloat fDPhi
Delta-angle, in radians.
Definition: SoCons.h:106
virtual SoChildList * getChildren() const
GetChildList, required whenever the class has hidden children.
SoSFFloat fSPhi
Starting angle, in radians.
Definition: SoCons.h:102
SoSFFloat fRmax2
Outside radius at +fDz.
Definition: SoCons.h:94
static void initClass()
Class Initializer, required.
SoSFFloat fRmax1
Outside radius at -fDz.
Definition: SoCons.h:90
SoSFFloat fRmin1
Inside radius at -fDz.
Definition: SoCons.h:82
SoSFFloat fRmin2
Inside radius at +fDz.
Definition: SoCons.h:86
SoSFNode alternateRep
Alternate rep required - for use by users without HEPVis shared objects.
Definition: SoCons.h:114
SoSFFloat fDz
Half-length along Z.
Definition: SoCons.h:98
virtual void generatePrimitives(SoAction *action)
Generate Primitives, required.
virtual void generateAlternateRep()
virtual ~SoCons()
Destructor, required.
SoSFBool smoothDraw
An Inventor option - slightly better render, worse performance.
Definition: SoCons.h:110
virtual void clearAlternateRep()
We better be able to clear it, too!
virtual void computeBBox(SoAction *action, SbBox3f &box, SbVec3f &center)
compute bounding Box, required