Geant4-11
source
geometry
solids
CSG
include
G4UTrap.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
// G4UTrap
27
//
28
// Class description:
29
//
30
// Wrapper class for G4Trap to make use of VecGeom Trapezoid.
31
32
// 13.09.13 G.Cosmo, CERN/PH
33
// --------------------------------------------------------------------
34
#ifndef G4UTRAP_HH
35
#define G4UTRAP_HH
36
37
#include "
G4UAdapter.hh
"
38
39
#if ( defined(G4GEOM_USE_USOLIDS) || defined(G4GEOM_USE_PARTIAL_USOLIDS) )
40
41
#include <VecGeom/volumes/UnplacedTrapezoid.h>
42
43
#include "
G4Polyhedron.hh
"
44
45
class
G4UTrap :
public
G4UAdapter<vecgeom::UnplacedTrapezoid>
46
{
47
using
Shape_t = vecgeom::UnplacedTrapezoid;
48
using
Base_t = G4UAdapter<vecgeom::UnplacedTrapezoid>;
49
50
public
:
// with description
51
52
G4UTrap(
const
G4String
& pName,
53
G4double
pDz,
54
G4double
pTheta,
G4double
pPhi,
55
G4double
pDy1,
G4double
pDx1,
G4double
pDx2,
56
G4double
pAlp1,
57
G4double
pDy2,
G4double
pDx3,
G4double
pDx4,
58
G4double
pAlp2 );
59
//
60
// The most general constructor for G4Trap which prepares plane
61
// equations and corner coordinates from parameters
62
63
G4UTrap(
const
G4String
& pName,
64
const
G4ThreeVector
pt[8] ) ;
65
//
66
// Prepares plane equations and parameters from corner coordinates
67
68
G4UTrap(
const
G4String
& pName,
69
G4double
pZ,
70
G4double
pY,
71
G4double
pX,
G4double
pLTX );
72
//
73
// Constructor for Right Angular Wedge from STEP (assumes pLTX<=pX)
74
75
G4UTrap(
const
G4String
& pName,
76
G4double
pDx1,
G4double
pDx2,
77
G4double
pDy1,
G4double
pDy2,
78
G4double
pDz );
79
//
80
// Constructor for G4Trd
81
82
G4UTrap(
const
G4String
& pName,
83
G4double
pDx,
G4double
pDy,
G4double
pDz,
84
G4double
pAlpha,
G4double
pTheta,
G4double
pPhi );
85
//
86
// Constructor for G4Para
87
88
G4UTrap(
const
G4String
& pName );
89
//
90
// Constructor for "nominal" G4Trap whose parameters are to be set
91
// by a G4VPVParamaterisation later
92
93
~G4UTrap();
94
95
void
ComputeDimensions(
G4VPVParameterisation
* p,
96
const
G4int
n
,
97
const
G4VPhysicalVolume
* pRep);
98
99
G4VSolid
* Clone()
const
;
100
101
using
Base_t::GetTanAlpha1;
102
using
Base_t::GetTanAlpha2;
103
104
// Accessors
105
106
G4double
GetZHalfLength()
const
;
107
G4double
GetYHalfLength1()
const
;
108
G4double
GetXHalfLength1()
const
;
109
G4double
GetXHalfLength2()
const
;
110
G4double
GetTanAlpha1()
const
;
111
G4double
GetYHalfLength2()
const
;
112
G4double
GetXHalfLength3()
const
;
113
G4double
GetXHalfLength4()
const
;
114
G4double
GetTanAlpha2()
const
;
115
116
TrapSidePlane
GetSidePlane(
G4int
n
)
const
;
117
G4ThreeVector
GetSymAxis()
const
;
118
119
G4double
GetPhi()
const
;
120
G4double
GetTheta()
const
;
121
G4double
GetAlpha1()
const
;
122
G4double
GetAlpha2()
const
;
123
// Obtain (re)computed values of original parameters
124
125
// Modifiers
126
127
void
SetAllParameters(
G4double
pDz,
G4double
pTheta,
G4double
pPhi,
128
G4double
pDy1,
G4double
pDx1,
G4double
pDx2,
129
G4double
pAlp1,
130
G4double
pDy2,
G4double
pDx3,
G4double
pDx4,
131
G4double
pAlp2);
132
133
inline
G4GeometryType
GetEntityType()
const
;
134
135
void
BoundingLimits(
G4ThreeVector
&
pMin
,
G4ThreeVector
&
pMax
)
const
;
136
137
G4bool
CalculateExtent(
const
EAxis
pAxis,
138
const
G4VoxelLimits
& pVoxelLimit,
139
const
G4AffineTransform
& pTransform,
140
G4double
&
pMin
,
G4double
&
pMax
)
const
;
141
142
G4Polyhedron
* CreatePolyhedron()
const
;
143
144
public
:
// without description
145
146
G4UTrap(__void__&);
147
// Fake default constructor for usage restricted to direct object
148
// persistency for clients requiring preallocation of memory for
149
// persistifiable objects.
150
151
G4UTrap(
const
G4UTrap& rhs);
152
G4UTrap& operator=(
const
G4UTrap& rhs);
153
// Copy constructor and assignment operator.
154
155
private
:
156
157
void
SetPlanes(
const
G4ThreeVector
pt[8]);
158
// Set parameters using eight vertices
159
160
void
CheckParameters()
const
;
161
// Check dimensions
162
163
void
GetVertices(
G4ThreeVector
pt[8])
const
;
164
// Compute coordinates of vertices
165
166
void
CheckPlanarity(
const
G4ThreeVector
pt[8])
const
;
167
// Check planarity of lateral planes
168
};
169
170
// --------------------------------------------------------------------
171
// Inline methods
172
// --------------------------------------------------------------------
173
174
inline
G4GeometryType
G4UTrap::GetEntityType()
const
175
{
176
return
"G4Trap"
;
177
}
178
179
#endif
// G4GEOM_USE_USOLIDS
180
181
#endif
pMax
static const G4double pMax
Definition:
G4HadronNucleonXsc.cc:59
pMin
static const G4double pMin
Definition:
G4HadronNucleonXsc.cc:58
G4Polyhedron.hh
G4double
double G4double
Definition:
G4Types.hh:83
G4bool
bool G4bool
Definition:
G4Types.hh:86
G4int
int G4int
Definition:
G4Types.hh:85
G4UAdapter.hh
CLHEP::Hep3Vector
Definition:
ThreeVector.h:36
G4AffineTransform
Definition:
G4AffineTransform.hh:70
G4Polyhedron
Definition:
G4Polyhedron.hh:123
G4String
Definition:
G4String.hh:62
G4VPVParameterisation
Definition:
G4VPVParameterisation.hh:69
G4VPhysicalVolume
Definition:
G4VPhysicalVolume.hh:79
G4VSolid
Definition:
G4VSolid.hh:83
G4VoxelLimits
Definition:
G4VoxelLimits.hh:53
EAxis
EAxis
Definition:
geomdefs.hh:54
CLHEP::detail::n
n
Definition:
Ranlux64Engine.cc:90
TrapSidePlane
Definition:
G4Trap.hh:91
Generated by
1.9.3