Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4FCylindricalSurface.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 G4FCylindricalSurface
31//
32// Class Description:
33//
34// Definition of a generic bounded cylindrical surface.
35//
36// Position.axis| radius
37// >|---|<---------
38// |
39// -- +---|---+
40// l | | | |
41// e | | | |
42// n | | | |
43// g | | | |
44// t | | | |
45// h | | | |
46// -- +---|---+
47// Position
48
49// The code for G4CylindricalSurface has been derived from the original
50// implementation in the "Gismo" package.
51//
52// Author: A.Breakstone
53// Adaptation: J.Sulkimo, P.Urban.
54// Revisions by: L.Broglia, G.Cosmo.
55// ----------------------------------------------------------------------
56#ifndef __FCYLINDER_H
57#define __FCYLINDER_H
58
59#include "G4PointRat.hh"
60#include "G4Axis2Placement3D.hh"
61#include "G4Surface.hh"
62
63
65{
66
67 public: // with description
68
70 // Default constructor.
71
73 const G4Vector3D& a,
74 G4double r,
75 G4double l );
76 // o : origin.
77 // a : axis.
78 // r : radius.
79 // l : length.
80
81 virtual ~G4FCylindricalSurface();
82 // Destructor.
83
84 inline G4int operator==( const G4FCylindricalSurface& c ) const;
85 // Equality operator.
86
87 virtual G4Vector3D SurfaceNormal( const G4Point3D& p ) const;
88 // Returns the Normal unit vector to the G4FCylindricalSurface at a point
89 // p on (or nearly on) the G4FCylindricalSurface.
90
91 virtual G4int Inside( const G4Vector3D& x ) const;
92 // Returns 1 if the point x is Inside the G4FCylindricalSurface,
93 // returns 0 otherwise.
94
95 inline G4String GetEntityType() const;
96 // Returns the shape identifier.
97
98 G4int Intersect(const G4Ray&);
99 // Counts the number of intersections of a bounded cylindrical surface
100 // by a ray. At first, it calculates the intersections with the infinite
101 // cylindrical surface. Then, it counts the intersections within the
102 // finite cylindrical 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 either the intersection with
105 // the opposite surface or kInfinity.
106 // If no intersection is found, it sets distance = kInfinity and returns 0.
107
108 virtual G4double HowNear( const G4Vector3D& x ) const;
109 // Computes the shortest distance from the point x to the
110 // G4FCylindricalSurface. The distance will be always positive.
111
112 void CalcBBox();
113 // Computes the bounding box.
114
115 virtual const char* NameOf() const;
116 // Returns the class name.
117
118 virtual void PrintOn( std::ostream& os = G4cout ) const;
119 // Printing function.
120
121 virtual G4int WithinBoundary( const G4Vector3D& x ) const;
122 // Returns 1 if the point x is within the boundary, 0 otherwise.
123
124 virtual G4double Scale() const;
125 // Return the radius of a G4FCylindricalSurface.
126 // Used for Scale-invariant tests of surface thickness.
127 // If the radius is zero, it returns the length.
128
129 virtual G4double Area() const;
130 // Calculates the area of a G4FCylindricalSurface.
131
132 virtual void resize( G4double r, G4double l );
133 // Changes the radius and length of the G4FCylindricalSurface:
134 // the first (input) argument is the new radius;
135 // the second (input) argument is the new length.
136
137 inline G4double GetLength() const;
138 inline G4Vector3D GetAxis() const;
139 inline G4double GetRadius() const;
141 // Get/Set methods for the geometrical data of the G4FCylindricalSurface.
142
143 public: // without description
144
146 // Re-calculates the private values of the G4FCylindrical surface
147 // before the Intersect and HowNear function if the G4FCylindrical
148 // was created by the STEP interface.
149
150 protected:
151
155
156 private:
157
160 // Private copy constructor and assignment operator.
161
162};
163
164#include "G4FCylindricalSurface.icc"
165
166#endif
double G4double
Definition: G4Types.hh:64
int G4int
Definition: G4Types.hh:66
G4DLLIMPORT std::ostream G4cout
virtual G4double Area() const
virtual void PrintOn(std::ostream &os=G4cout) const
virtual G4double Scale() const
G4String GetEntityType() const
G4double GetRadius() const
G4int Intersect(const G4Ray &)
virtual const char * NameOf() const
virtual void resize(G4double r, G4double l)
virtual G4Vector3D SurfaceNormal(const G4Point3D &p) const
G4double GetLength() const
virtual G4int WithinBoundary(const G4Vector3D &x) const
G4Vector3D GetAxis() const
void SetRadius(G4double r)
virtual G4double HowNear(const G4Vector3D &x) const
G4int operator==(const G4FCylindricalSurface &c) const
virtual G4int Inside(const G4Vector3D &x) const
Definition: G4Ray.hh:49