Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
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
Definition: SoCons.h:71
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