Geant4
11.2.2
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4GeometryWorkspace.hh
Go to the documentation of this file.
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
// G4GeometryWorkspace
27
//
28
// Class Description:
29
//
30
// Class managing the per-thread state of the geometry, spanning those
31
// which have a per-thread state and their dependents.
32
// In particular it:
33
// - owns the arrays that implement 'split' classes
34
// - owns classes/objects which are owned by the split classes.
35
// The classes/objects affected are:
36
// - 'split' classes part of its state is per-thread,
37
// - per-thread objects, in particular those which are owned
38
// by the split classes.
39
// Goal: Take ownership and control of per-thread state of
40
// classes to work with multi-threading.
41
42
// Authors: John Apostolakis (CERN), Andrea Dotti (SLAC), July 2013
43
// --------------------------------------------------------------------
44
#ifndef G4GEOMETRYWORKSPACE_HH
45
#define G4GEOMETRYWORKSPACE_HH 1
46
47
#include "
G4TWorkspacePool.hh
"
48
49
// Headers defining MT "manager" types
50
//
51
#include "
G4PVReplica.hh
"
52
#include "
G4VSolid.hh
"
53
#include "
G4LogicalVolume.hh
"
54
#include "
G4Region.hh
"
55
56
class
G4GeometryWorkspace
57
{
58
public
:
59
60
using
pool_type
=
G4TWorkspacePool<G4GeometryWorkspace>
;
61
62
G4GeometryWorkspace
();
63
~G4GeometryWorkspace
() =
default
;
64
65
void
UseWorkspace
();
// Take ownership
66
void
ReleaseWorkspace
();
// Release ownership
67
void
DestroyWorkspace
();
// Release ownership and destroy
68
69
void
InitialiseWorkspace
();
70
// To be called at start of each run (especially 2nd and further runs)
71
72
static
pool_type
*
GetPool
();
73
74
protected
:
// Implementation methods
75
76
void
InitialisePhysicalVolumes
();
77
G4bool
CloneReplicaSolid
(
G4PVReplica
* );
78
79
private
:
// Helper pointers - can be per instance or shared
80
81
G4LVManager
* fpLogicalVolumeSIM;
82
G4PVManager
* fpPhysicalVolumeSIM;
83
G4PVRManager
* fpReplicaSIM;
84
G4RegionManager
* fpRegionSIM;
85
86
// Per Instance variables
87
// NOTE: the ownership of the Data Arrays is IN this object
88
// Store SubInstanceManager object pointers (SIM pointers)
89
90
G4LVData
* fLogicalVolumeOffset;
91
G4PVData
* fPhysicalVolumeOffset;
92
G4ReplicaData
* fReplicaOffset;
93
G4RegionData
* fRegionOffset;
94
};
95
96
#endif
G4LogicalVolume.hh
G4PVReplica.hh
G4Region.hh
G4TWorkspacePool.hh
G4bool
bool G4bool
Definition
G4Types.hh:86
G4VSolid.hh
G4GeomSplitter
Definition
G4GeomSplitter.hh:45
G4GeometryWorkspace
Definition
G4GeometryWorkspace.hh:57
G4GeometryWorkspace::UseWorkspace
void UseWorkspace()
Definition
G4GeometryWorkspace.cc:78
G4GeometryWorkspace::InitialisePhysicalVolumes
void InitialisePhysicalVolumes()
Definition
G4GeometryWorkspace.cc:108
G4GeometryWorkspace::G4GeometryWorkspace
G4GeometryWorkspace()
Definition
G4GeometryWorkspace.cc:50
G4GeometryWorkspace::~G4GeometryWorkspace
~G4GeometryWorkspace()=default
G4GeometryWorkspace::InitialiseWorkspace
void InitialiseWorkspace()
Definition
G4GeometryWorkspace.cc:174
G4GeometryWorkspace::CloneReplicaSolid
G4bool CloneReplicaSolid(G4PVReplica *)
Definition
G4GeometryWorkspace.cc:141
G4GeometryWorkspace::DestroyWorkspace
void DestroyWorkspace()
Definition
G4GeometryWorkspace.cc:189
G4GeometryWorkspace::ReleaseWorkspace
void ReleaseWorkspace()
Definition
G4GeometryWorkspace.cc:97
G4GeometryWorkspace::GetPool
static pool_type * GetPool()
Definition
G4GeometryWorkspace.cc:43
G4LVData
Definition
G4LogicalVolume.hh:129
G4PVData
Definition
G4VPhysicalVolume.hh:56
G4PVReplica
Definition
G4PVReplica.hh:90
G4RegionData
Definition
G4Region.hh:59
G4ReplicaData
Definition
G4PVReplica.hh:73
G4TWorkspacePool
Definition
G4TWorkspacePool.hh:51
geant4-v11.2.2
source
geometry
volumes
include
G4GeometryWorkspace.hh
Generated by
1.12.0