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
G4UTrap.hh
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file G4UTrap.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
// 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 <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
G4double
GetZHalfLength()
const
;
105
G4double
GetYHalfLength1()
const
;
106
G4double
GetXHalfLength1()
const
;
107
G4double
GetXHalfLength2()
const
;
108
G4double
GetYHalfLength2()
const
;
109
G4double
GetXHalfLength3()
const
;
110
G4double
GetXHalfLength4()
const
;
111
G4double
GetThetaCphi()
const
;
112
G4double
GetThetaSphi()
const
;
113
TrapSidePlane
GetSidePlane(
G4int
n
)
const
;
114
G4ThreeVector
GetSymAxis()
const
;
115
116
void
SetAllParameters(
G4double
pDz,
G4double
pTheta,
G4double
pPhi,
117
G4double
pDy1,
G4double
pDx1,
G4double
pDx2,
118
G4double
pAlp1,
119
G4double
pDy2,
G4double
pDx3,
G4double
pDx4,
120
G4double
pAlp2);
121
void
SetPlanes(
const
G4ThreeVector
pt
[8]);
122
123
inline
G4GeometryType
GetEntityType()
const
;
124
125
void
BoundingLimits(
G4ThreeVector
&
pMin
,
G4ThreeVector
&
pMax
)
const
;
126
127
G4bool
CalculateExtent(
const
EAxis
pAxis,
128
const
G4VoxelLimits
& pVoxelLimit,
129
const
G4AffineTransform
& pTransform,
130
G4double
&
pMin
,
G4double
&
pMax
)
const
;
131
132
G4Polyhedron
* CreatePolyhedron()
const
;
133
134
public
:
// without description
135
136
G4UTrap(__void__&);
137
// Fake default constructor for usage restricted to direct object
138
// persistency for clients requiring preallocation of memory for
139
// persistifiable objects.
140
141
G4UTrap(
const
G4UTrap& rhs);
142
G4UTrap& operator=(
const
G4UTrap& rhs);
143
// Copy constructor and assignment operator.
144
};
145
146
// --------------------------------------------------------------------
147
// Inline methods
148
// --------------------------------------------------------------------
149
150
inline
G4GeometryType
G4UTrap::GetEntityType()
const
151
{
152
return
"G4Trap"
;
153
}
154
155
#endif // G4GEOM_USE_USOLIDS
156
157
#endif
geant4
tree
geant4-10.6-release
source
geometry
solids
CSG
include
G4UTrap.hh
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:18
using
1.8.2 with
ECCE GitHub integration