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
G4TwistTubsFlatSide.hh
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file G4TwistTubsFlatSide.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
// G4TwistTubsFlatSide
27
//
28
// Class description:
29
//
30
// Class describing a flat boundary surface for a cylinder.
31
32
// 01-Aug-2002 - Kotoyo Hoshina (hoshina@hepburn.s.chiba-u.ac.jp), created.
33
// 13-Nov-2003 - O.Link (Oliver.Link@cern.ch), Integration in Geant4
34
// from original version in Jupiter-2.5.02 application.
35
// --------------------------------------------------------------------
36
#ifndef G4TWISTTUBSFLATSIDE_HH
37
#define G4TWISTTUBSFLATSIDE_HH
38
39
#include "
G4VTwistSurface.hh
"
40
41
class
G4TwistTubsFlatSide
:
public
G4VTwistSurface
42
{
43
public
:
// with description
44
45
G4TwistTubsFlatSide
(
const
G4String
&
name
,
46
const
G4RotationMatrix
& rot,
47
const
G4ThreeVector
& tlate,
48
const
G4ThreeVector
&
n
,
49
const
EAxis
axis1 =
kRho
,
// RHO axis !
50
const
EAxis
axis2 =
kPhi
,
// PHI axis !
51
G4double
axis0min = -
kInfinity
,
52
G4double
axis1min = -
kInfinity
,
53
G4double
axis0max =
kInfinity
,
54
G4double
axis1max =
kInfinity
);
55
56
G4TwistTubsFlatSide
(
const
G4String
& name,
57
G4double
EndInnerRadius[2],
58
G4double
EndOuterRadius[2],
59
G4double
DPhi,
60
G4double
EndPhi[2],
61
G4double
EndZ[2],
62
G4int
handedness ) ;
63
64
virtual
~G4TwistTubsFlatSide
();
65
virtual
G4ThreeVector
GetNormal
(
const
G4ThreeVector
&
/* xx */
,
66
G4bool
isGlobal =
false
);
67
virtual
G4int
DistanceToSurface
(
const
G4ThreeVector
& gp,
68
const
G4ThreeVector
& gv,
69
G4ThreeVector
gxx[],
70
G4double
distance[],
71
G4int
areacode[],
72
G4bool
isvalid[],
73
EValidate
validate =
kValidateWithTol
);
74
75
virtual
G4int
DistanceToSurface
(
const
G4ThreeVector
& gp,
76
G4ThreeVector
gxx[],
77
G4double
distance[],
78
G4int
areacode[]);
79
80
virtual
G4ThreeVector
SurfacePoint
(
G4double
,
G4double
,
81
G4bool
isGlobal =
false
) ;
82
virtual
G4double
GetBoundaryMin
(
G4double
phi
) ;
83
virtual
G4double
GetBoundaryMax
(
G4double
phi) ;
84
virtual
G4double
GetSurfaceArea
() {
return
fSurfaceArea
; }
85
virtual
void
GetFacets
(
G4int
m
,
G4int
n,
G4double
xyz[][3],
86
G4int
faces[][4],
G4int
iside ) ;
87
88
public
:
// without description
89
90
G4TwistTubsFlatSide
(__void__&);
91
// Fake default constructor for usage restricted to direct object
92
// persistency for clients requiring preallocation of memory for
93
// persistifiable objects.
94
95
protected
:
// with description
96
97
virtual
G4int
GetAreaCode
(
const
G4ThreeVector
&
xx
,
98
G4bool
withTol =
true
) ;
99
100
private
:
101
102
virtual
void
SetCorners
();
103
virtual
void
SetBoundaries
();
104
105
private
:
106
107
G4double
fSurfaceArea
= 0.0;
108
};
109
110
inline
G4ThreeVector
G4TwistTubsFlatSide::
111
SurfacePoint
(
G4double
phi
,
G4double
rho ,
G4bool
isGlobal )
112
{
113
G4ThreeVector
SurfPoint (rho*std::cos(phi) , rho*std::sin(phi) , 0);
114
115
if
(isGlobal) {
return
(
fRot
* SurfPoint +
fTrans
); }
116
return
SurfPoint;
117
}
118
119
inline
120
G4double
G4TwistTubsFlatSide::GetBoundaryMin
(
G4double
)
121
{
122
G4ThreeVector
dphimin =
GetCorner
(
sC0Max1Min
);
123
return
std::atan2( dphimin.
y
(), dphimin.
x
() );
124
}
125
126
inline
127
G4double
G4TwistTubsFlatSide::GetBoundaryMax
(
G4double
)
128
{
129
G4ThreeVector
dphimax =
GetCorner
(
sC0Max1Max
);
130
return
std::atan2( dphimax.
y
(), dphimax.
x
() );
131
}
132
133
#endif
geant4
tree
geant4-10.6-release
source
geometry
solids
specific
include
G4TwistTubsFlatSide.hh
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:19
using
1.8.2 with
ECCE GitHub integration