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
G4VoxelLimits.hh
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file G4VoxelLimits.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
// G4VoxelLimits
27
//
28
// Class description:
29
//
30
// Represents limitation/restrictions of space, where restrictions
31
// are only made perpendicular to the cartesian axes.
32
//
33
// Member data:
34
//
35
// G4double fxAxisMin,fxAxisMax
36
// G4double fyAxisMin,fyAxisMax
37
// G4double fzAxisMin,fzAxisMax
38
// - The min and max values along each axis. +-kInfinity if not restricted.
39
40
// 13.07.95, P.Kent - Initial version.
41
// --------------------------------------------------------------------
42
#ifndef G4VOXELLIMITS_HH
43
#define G4VOXELLIMITS_HH
44
45
#include "
G4Types.hh
"
46
#include "
geomdefs.hh
"
47
48
#include "
G4ThreeVector.hh
"
49
50
#include <assert.h>
51
52
class
G4VoxelLimits
53
{
54
public
:
// with description
55
56
G4VoxelLimits
();
57
// Constructor - initialise to be unlimited. Volume unrestricted.
58
59
~G4VoxelLimits
();
60
// Destructor. No actions.
61
62
void
AddLimit
(
const
EAxis
pAxis,
const
G4double
pMin
,
const
G4double
pMax
);
63
// Restrict the volume to between specified min and max along the
64
// given axis. Cartesian axes only, pMin<=pMax.
65
66
G4double
GetMaxXExtent
()
const
;
67
// Return maximum x extent.
68
G4double
GetMaxYExtent
()
const
;
69
// Return maximum y extent.
70
G4double
GetMaxZExtent
()
const
;
71
// Return maximum z extent.
72
73
G4double
GetMinXExtent
()
const
;
74
// Return minimum x extent.
75
G4double
GetMinYExtent
()
const
;
76
// Return minimum y extent.
77
G4double
GetMinZExtent
()
const
;
78
// Return minimum z extent.
79
80
G4double
GetMaxExtent
(
const
EAxis
pAxis)
const
;
81
// Return maximum extent of volume along specified axis.
82
G4double
GetMinExtent
(
const
EAxis
pAxis)
const
;
83
// Return minimum extent of volume along specified axis.
84
85
G4bool
IsXLimited
()
const
;
86
// Return true if the x axis is limited.
87
G4bool
IsYLimited
()
const
;
88
// Return true if the y axis is limited.
89
G4bool
IsZLimited
()
const
;
90
// Return true if the z axis is limited.
91
92
G4bool
IsLimited
()
const
;
93
// Return true if limited along any axis
94
G4bool
IsLimited
(
const
EAxis
pAxis)
const
;
95
// Return true if the specified axis is restricted/limited.
96
97
G4bool
ClipToLimits
(
G4ThreeVector
& pStart,
G4ThreeVector
& pEnd)
const
;
98
// Clip the line segment pStart->pEnd to the volume described by the
99
// current limits. Return true if the line remains after clipping,
100
// else false, and leave the vectors in an undefined state.
101
102
G4bool
Inside
(
const
G4ThreeVector
& pVec)
const
;
103
// Return true if the specified vector is inside/on boundaries of limits.
104
105
G4int
OutCode
(
const
G4ThreeVector
& pVec)
const
;
106
// Calculate the `outcode' for the specified vector.
107
// Intended for use during clipping against the limits
108
// The bits are set given the following conditions:
109
// 0 pVec.x()<fxAxisMin && IsXLimited()
110
// 1 pVec.x()>fxAxisMax && IsXLimited()
111
// 2 pVec.y()<fyAxisMin && IsYLimited()
112
// 3 pVec.y()>fyAxisMax && IsYLimited()
113
// 4 pVec.z()<fzAxisMin && IsZLimited()
114
// 5 pVec.z()>fzAxisMax && IsZLimited()
115
116
private
:
117
118
G4double
fxAxisMin
= -
kInfinity
,
fxAxisMax
=
kInfinity
;
119
G4double
fyAxisMin
= -
kInfinity
,
fyAxisMax
=
kInfinity
;
120
G4double
fzAxisMin
= -
kInfinity
,
fzAxisMax
=
kInfinity
;
121
};
122
123
#include "G4VoxelLimits.icc"
124
125
std::ostream&
operator <<
(std::ostream& os,
const
G4VoxelLimits
& pLim);
126
// Print the limits to the stream in the form:
127
// "{(xmin,xmax) (ymin,ymax) (zmin,zmax)}"
128
// Replace (xmin,xmax) by (-,-) when not limited.
129
130
#endif
geant4
tree
geant4-10.6-release
source
geometry
management
include
G4VoxelLimits.hh
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:17
using
1.8.2 with
ECCE GitHub integration