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
G4VisExtent.hh
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file G4VisExtent.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
//
27
//
28
//
29
// A.Walkden 28/11/95
30
31
// Class Description:
32
// G4VisExtent defines a bounding box in a visualisable object's local
33
// coordinate system which includes the object.
34
// WARNING: it also attempts to support the concept of a bounding
35
// sphere. (This is used extensively in the G4 Visualisation System
36
// to calculate camera parameters, etc.) Be aware that this involves
37
// loss of information. Given a bounding box, one can calculate the
38
// bounding sphere; inverting this will produce a cube which *might*
39
// *not* include the object. E.g., a long thin object of length l
40
// will have a bounding sphere of diameter l; the corresponding cube
41
// will have side l/std::sqrt(3) so that the bounding sphere diameter is
42
// still l. Thus the long thin object will stick out of the cube.
43
// So, if you once use the concept of bounding sphere you must stick
44
// with it and abandon the concept of bounding box.
45
// Class Description - End:
46
47
#ifndef G4VISEXTENT_HH
48
#define G4VISEXTENT_HH
49
50
#include "
globals.hh
"
51
#include "
G4Point3D.hh
"
52
#include "
G4Transform3D.hh
"
53
54
class
G4VisExtent
55
{
56
public
:
// With description
57
58
G4VisExtent
(
G4double
xmin
= 0.,
G4double
xmax
= 0.,
59
G4double
ymin
= 0.,
G4double
ymax
= 0.,
60
G4double
zmin = 0.,
G4double
zmax = 0.);
61
G4VisExtent
(
const
G4Point3D
& centre,
G4double
radius
);
62
~G4VisExtent
();
63
static
const
G4VisExtent
&
GetNullExtent
();
64
G4bool
operator !=
(
const
G4VisExtent
&
e
)
const
;
65
G4bool
operator ==
(
const
G4VisExtent
& e)
const
{
return
!
operator!=
(e);}
66
67
G4VisExtent
&
Transform
(
const
G4Transform3D
&);
68
// The above transforms the box defined by the 6 limits fXmin, fXmax,
69
// etc., and produces a new box that encloses the transformed box. If the
70
// transform includes a rotation the new box will likely be a good deal larger
71
// than the old one, but hey-ho, the concept of G4VisExtent requires the
72
// limits to be along the major axes and thus defines a box whose edges are
73
// parallel to the major axes. So use the above with care.
74
75
G4double
GetXmin
()
const
;
76
G4double
GetXmax
()
const
;
77
G4double
GetYmin
()
const
;
78
G4double
GetYmax
()
const
;
79
G4double
GetZmin
()
const
;
80
G4double
GetZmax
()
const
;
81
const
G4Point3D
&
GetExtentCentre
()
const
;
82
const
G4Point3D
&
GetExtentCenter
()
const
;
83
G4double
GetExtentRadius
()
const
;
84
void
SetXmin
(
G4double
xmin
);
85
void
SetXmax
(
G4double
xmax
);
86
void
SetYmin
(
G4double
ymin
);
87
void
SetYmax
(
G4double
ymax
);
88
void
SetZmin
(
G4double
zmin);
89
void
SetZmax
(
G4double
zmax);
90
friend
std::ostream&
operator <<
(std::ostream& os,
const
G4VisExtent
& e);
91
92
private
:
93
G4double
fXmin
,
fXmax
,
fYmin
,
fYmax
,
fZmin
,
fZmax
;
94
mutable
G4bool
fRadiusCached
,
fCentreCached
;
95
mutable
G4double
fRadius
;
96
mutable
G4Point3D
fCentre
;
97
};
98
99
inline
G4double
G4VisExtent::GetXmin
()
const
{
return
fXmin
; }
100
inline
G4double
G4VisExtent::GetXmax
()
const
{
return
fXmax
; }
101
inline
G4double
G4VisExtent::GetYmin
()
const
{
return
fYmin
; }
102
inline
G4double
G4VisExtent::GetYmax
()
const
{
return
fYmax
; }
103
inline
G4double
G4VisExtent::GetZmin
()
const
{
return
fZmin
; }
104
inline
G4double
G4VisExtent::GetZmax
()
const
{
return
fZmax
; }
105
106
inline
const
G4Point3D
&
G4VisExtent::GetExtentCenter
()
const
{
107
return
GetExtentCentre
();
108
}
109
110
inline
void
G4VisExtent::SetXmin
(
G4double
xmin
)
111
{
fXmin
=
xmin
;
fRadiusCached
=
false
;
fCentreCached
=
false
;}
112
inline
void
G4VisExtent::SetXmax
(
G4double
xmax
)
113
{
fXmax
=
xmax
;
fRadiusCached
=
false
;
fCentreCached
=
false
;}
114
inline
void
G4VisExtent::SetYmin
(
G4double
ymin
)
115
{
fYmin
=
ymin
;
fRadiusCached
=
false
;
fCentreCached
=
false
;}
116
inline
void
G4VisExtent::SetYmax
(
G4double
ymax
)
117
{
fYmax
=
ymax
;
fRadiusCached
=
false
;
fCentreCached
=
false
;}
118
inline
void
G4VisExtent::SetZmin
(
G4double
zmin)
119
{
fZmin
= zmin;
fRadiusCached
=
false
;
fCentreCached
=
false
;}
120
inline
void
G4VisExtent::SetZmax
(
G4double
zmax)
121
{
fZmax
= zmax;
fRadiusCached
=
false
;
fCentreCached
=
false
;}
122
123
#endif
geant4
tree
geant4-10.6-release
source
graphics_reps
include
G4VisExtent.hh
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:21
using
1.8.2 with
ECCE GitHub integration