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
G4BlockingList.hh
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file G4BlockingList.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
// class G4BlockingList
27
//
28
// Class description:
29
//
30
// A utility class responsible for (efficiently) maintaining a List
31
// of blocked volume numbers, with rapid `reset' operations.
32
//
33
// Notes:
34
//
35
// Implemented via a ValVector of ints: a tag value is used to set
36
// the indices of blocked volumes. On reset the current tag value is
37
// increased, so that the ValVector must only be zeroed when the
38
// numerical range of the tag is used.
39
40
// 24.7.96, P.Kent - Separated from G4Navigator
41
// --------------------------------------------------------------------
42
#ifndef G4BLOCKINGLIST_HH
43
#define G4BLOCKINGLIST_HH
44
45
#include "
G4Types.hh
"
46
#include <vector>
47
48
const
G4int
kBlockingListMaxDefault
= 500;
// Block up to 511 daughters
49
// initially
50
const
G4int
kBlockingListStride
= 128;
51
const
G4int
kBlockTagNoMax
= 2147483647;
// 2^31-1 maximum tag no may reach
52
53
class
G4BlockingList
54
{
55
public
:
// with description
56
57
G4BlockingList
(
G4int
maxDefault =
kBlockingListMaxDefault
,
58
G4int
stride =
kBlockingListStride
);
59
// Create empty blocking List of default size and `stride' resize count.
60
61
~G4BlockingList
();
62
// Destructor. No operations.
63
64
void
Reset
();
65
// Efficiently `Reset' the blocking List, so that no volumes
66
// are blocked [Advance tag number and only fully clear List
67
// if tag max reached]
68
69
void
FullyReset
();
70
// Clear the blocking List and reset tag value [slow].
71
72
void
Enlarge
(
const
G4int
nv);
73
// Enlarges blocking List if current size < nv, in units of stride.
74
// Clears the new part of the List.
75
76
size_t
Length
()
const
;
77
// Returns the current length of the List. Note a length of 16
78
// means volumes of indices between 0 & 15 inclusive may be blocked.
79
80
void
BlockVolume
(
const
G4int
v
);
81
// Block the volume number v.
82
// Requires: 0<=v<Length().
83
84
G4bool
IsBlocked
(
const
G4int
v)
const
;
85
// Return true if the volume number v is blocked, else false.
86
// Requires: 0 <= v < Length().
87
88
private
:
89
90
G4int
fBlockTagNo
= 1,
fStride
;
91
// Current blocked volume tag number.
92
93
std::vector<G4int>
fBlockingList
;
94
// Blocked volumes: Elements with indices
95
// corresponding to blocked volume set to fBlockTagNo.
96
};
97
98
#include "G4BlockingList.icc"
99
100
#endif
geant4
tree
geant4-10.6-release
source
geometry
management
include
G4BlockingList.hh
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:17
using
1.8.2 with
ECCE GitHub integration