Geant4
9.6.p02
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
geant4_9_6_p02
source
geometry
solids
BREPS
include
G4FConicalSurface.hh
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
// ----------------------------------------------------------------------
30
// Class G4FConicalSurface
31
//
32
// Class description:
33
//
34
// Definition of a generic conical surface.
35
/*
36
Position.axis|
37
|
38
-- ---|--- small_radius
39
l | / | \
40
e | / | \
41
n | / | \
42
g | / | \
43
t | / | \
44
h | / | \
45
-- ---------|--------- large_radius
46
Position
47
*/
48
49
// The code for G4FConicalSurface has been derived from the original
50
// implementation in the "Gismo" package.
51
//
52
// Author: Alan Breakstone
53
// Adaptation: J.Sulkimo, P.Urban.
54
// Revisions by: L.Broglia, G.Cosmo.
55
// ----------------------------------------------------------------------
56
#ifndef __FCONIC_H
57
#define __FCONIC_H
58
59
#include "
G4PointRat.hh
"
60
#include "
G4Axis2Placement3D.hh
"
61
#include "
G4Surface.hh
"
62
63
class
G4FConicalSurface
:
public
G4Surface
64
{
65
66
public
:
// with description
67
68
G4FConicalSurface
();
69
virtual
~G4FConicalSurface
();
70
// Default constructor and destructor.
71
72
G4FConicalSurface
(
const
G4Point3D
& o,
const
G4Vector3D
&
a
,
73
G4double
l,
G4double
sr
,
G4double
lr );
74
// o : origin of the G4FConicalSurface.
75
// a : axis of the G4FConicalSurface.
76
// l : length of the G4FConicalSurface.
77
// sl: small radius of the G4FConicalSurface.
78
// lr: large radius of the G4FConicalSurface.
79
80
virtual
G4Vector3D
SurfaceNormal
(
const
G4Point3D
&
p
)
const
;
81
// Returns the normal to the surface on point p.
82
83
G4int
Inside
(
const
G4Vector3D
&
x
)
const
;
84
// Returns 0 if point x is outside G4ConicalSurface, 1 if Inside.
85
86
inline
G4String
GetEntityType
()
const
;
87
// Returns the type identifier.
88
89
virtual
const
char
*
Name
()
const
;
90
// Returns the class type name.
91
92
virtual
void
PrintOn
( std::ostream& os =
G4cout
)
const
;
93
// Printing function.
94
95
G4int
operator==
(
const
G4FConicalSurface
&
c
)
const
;
96
// Equality operator.
97
98
G4int
Intersect
(
const
G4Ray
& ry );
99
// Counts the number of intersections of a bounded conical surface by a ray.
100
// At first, calculates the intersections with the semi-infinite
101
// conical surface; then, it counts the intersections within the
102
// finite conical surface boundaries, and sets the "distance" to the
103
// closest distance from the start point to the nearest intersection.
104
// If the point is on the surface it returns or the intersection with
105
// the opposite surface or kInfinity.
106
// If no intersection is found, it sets distance = kInfinity and returns 0.
107
108
void
CalcBBox
();
109
// Computes the bounding-box.
110
111
virtual
G4double
HowNear
(
const
G4Vector3D
& x )
const
;
112
// Computes the shortest distance from the point x to the G4FConicalSurface.
113
// The distance will always be positive.
114
// This function works only with Cone axis equal (0,0,1) or (0,0,-1),
115
// it projects the surface and the point on the x,z plane and computes
116
// the distance in analytical way.
117
118
virtual
G4int
WithinBoundary
(
const
G4Vector3D
& x )
const
;
119
// Returns 1 if the point x is within the boundary, returns 0 otherwise.
120
121
virtual
G4double
Scale
()
const
;
122
// Returns the size of a G4FConicalSurface.
123
// Used for Scale-invariant tests of surface thickness.
124
// If the small radius is zero, returns the large radius.
125
126
virtual
G4double
Area
()
const
;
127
// Calculates the area of a G4FConicalSurface.
128
129
virtual
void
resize
(
G4double
l,
G4double
sr,
G4double
lr );
130
// Changes the radii and length of the G4FConicalSurface.
131
// - l (input) argument: the new length
132
// - sr (input) argument: the new small radius
133
// - lr (input) argument: the new large radius
134
135
136
inline
G4double
GetLength
()
const
;
137
inline
G4double
GetSmallRadius
()
const
;
138
inline
G4double
GetLargeRadius
()
const
;
139
inline
G4double
GetTan_Angle
()
const
;
140
// Accessors to dimensions of the G4FConicalSurface.
141
142
protected
:
143
144
G4double
length
;
145
// length of G4FConicalSurface
146
147
G4double
small_radius
;
148
// small radius of G4FConicalSurface, can be zero
149
G4double
large_radius
;
150
// large radius of G4FConicalSurface, must be greater than the small
151
// radius. Note that the angle of the G4ConicalSurface is calculated
152
// from these three quantities.
153
154
G4Axis2Placement3D
Position
;
155
G4double
tan_angle
;
156
157
private
:
158
159
G4FConicalSurface
(
const
G4FConicalSurface
&);
160
G4FConicalSurface
& operator=(
const
G4FConicalSurface
&);
161
// Private copy constructor and assignment operator.
162
163
};
164
165
#include "G4FConicalSurface.icc"
166
167
#endif
Generated on Sat May 25 2013 14:33:12 for Geant4 by
1.8.4