ECCE @ EIC Software
Reference for
ECCE @ EIC
simulation and reconstruction software on GitHub
Home page
Related Pages
Modules
Namespaces
Classes
Files
External Links
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
G4GenericPolycone.hh
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file G4GenericPolycone.hh
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
// G4GenericPolycone
27
//
28
// Class description:
29
//
30
// Class implementing a GenericPolycone constructed by points with
31
// (r,z)coordinates, allows Z 'go back'
32
//
33
//
34
// G4GenericPolycone( const G4String& name,
35
// G4double phiStart, // initial phi starting angle
36
// G4double phiTotal, // total phi angle
37
// G4int numRZ, // number corners in r,z space
38
// const G4double r[], // r coordinate of these corners
39
// const G4double z[]) // z coordinate of these corners
40
//
41
42
// Authors: T.Nikitina, G.Cosmo - CERN
43
// --------------------------------------------------------------------
44
#ifndef G4GENERICPOLYCONE_HH
45
#define G4GENERICPOLYCONE_HH
46
47
#include "
G4GeomTypes.hh
"
48
49
#if defined(G4GEOM_USE_USOLIDS)
50
#define G4GEOM_USE_UGENERICPOLYCONE 1
51
#endif
52
53
#if defined(G4GEOM_USE_UGENERICPOLYCONE)
54
#define G4UGenericPolycone G4GenericPolycone
55
#include "
G4UGenericPolycone.hh
"
56
#else
57
58
#include "
G4VCSGfaceted.hh
"
59
#include "
G4PolyconeSide.hh
"
60
61
class
G4EnclosingCylinder
;
62
class
G4ReduciblePolygon
;
63
class
G4VCSGface
;
64
65
class
G4GenericPolycone
:
public
G4VCSGfaceted
66
{
67
68
public
:
// with description
69
70
G4GenericPolycone
(
const
G4String
&
name
,
71
G4double
phiStart,
// initial phi starting angle
72
G4double
phiTotal,
// total phi angle
73
G4int
numRZ,
// number corners in r,z space
74
const
G4double
r
[],
// r coordinate of these corners
75
const
G4double
z
[] );
// z coordinate of these corners
76
77
virtual
~G4GenericPolycone
();
78
79
// Methods for solid
80
81
EInside
Inside
(
const
G4ThreeVector
&
p
)
const
;
82
G4double
DistanceToIn
(
const
G4ThreeVector
&p,
const
G4ThreeVector
&
v
)
const
;
83
G4double
DistanceToIn
(
const
G4ThreeVector
&p )
const
;
84
85
void
BoundingLimits
(
G4ThreeVector
&
pMin
,
G4ThreeVector
&
pMax
)
const
;
86
G4bool
CalculateExtent
(
const
EAxis
pAxis,
87
const
G4VoxelLimits
& pVoxelLimit,
88
const
G4AffineTransform
& pTransform,
89
G4double
& pmin,
G4double
& pmax)
const
;
90
91
G4ThreeVector
GetPointOnSurface
()
const
;
92
93
G4GeometryType
GetEntityType
()
const
;
94
95
G4VSolid
*
Clone
()
const
;
96
97
std::ostream&
StreamInfo
(std::ostream& os)
const
;
98
99
G4Polyhedron
*
CreatePolyhedron
()
const
;
100
101
G4bool
Reset
();
102
103
// Accessors
104
105
inline
G4double
GetStartPhi
()
const
;
106
inline
G4double
GetEndPhi
()
const
;
107
inline
G4double
GetSinStartPhi
()
const
;
108
inline
G4double
GetCosStartPhi
()
const
;
109
inline
G4double
GetSinEndPhi
()
const
;
110
inline
G4double
GetCosEndPhi
()
const
;
111
inline
G4bool
IsOpen
()
const
;
112
inline
G4int
GetNumRZCorner
()
const
;
113
inline
G4PolyconeSideRZ
GetCorner
(
G4int
index)
const
;
114
115
public
:
// without description
116
117
G4GenericPolycone
(__void__&);
118
// Fake default constructor for usage restricted to direct object
119
// persistency for clients requiring preallocation of memory for
120
// persistifiable objects.
121
122
G4GenericPolycone
(
const
G4GenericPolycone
& source );
123
G4GenericPolycone
&
operator=
(
const
G4GenericPolycone
& source );
124
// Copy constructor and assignment operator.
125
126
protected
:
// without description
127
128
// Generic initializer, called by all constructors
129
130
void
Create
(
G4double
phiStart,
// initial phi starting angle
131
G4double
phiTotal,
// total phi angle
132
G4ReduciblePolygon
* rz );
// r/z coordinate of these corners
133
134
void
CopyStuff
(
const
G4GenericPolycone
& source );
135
136
// Methods for random point generation
137
138
protected
:
// without description
139
140
// Here are our parameters
141
142
G4double
startPhi
;
// Starting phi value (0 < phiStart < 2pi)
143
G4double
endPhi
;
// end phi value (0 < endPhi-phiStart < 2pi)
144
G4bool
phiIsOpen
=
false
;
// true if there is a phi segment
145
G4int
numCorner
;
// number RZ points
146
G4PolyconeSideRZ
*
corners
=
nullptr
;
// corner r,z points
147
148
// Our quick test
149
150
G4EnclosingCylinder
*
enclosingCylinder
=
nullptr
;
151
};
152
153
#include "G4GenericPolycone.icc"
154
155
#endif
156
157
#endif
geant4
tree
geant4-10.6-release
source
geometry
solids
specific
include
G4GenericPolycone.hh
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:19
using
1.8.2 with
ECCE GitHub integration