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