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
G4BiasingProcessSharedData.hh
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file G4BiasingProcessSharedData.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
// G4BiasingProcessSharedData
30
//
31
// Class Description:
32
// This class represents the data that the G4BiasingProcessInterface
33
// objects attached to a same particle / hold by a same G4ProcessManager
34
// share. It allows the active G4BiasingProcessInterface objects to share
35
// information on operations that are common the these instances:
36
// - the current and previous G4VBiasingOperator objects (their
37
// pointers are collected once, at the beginning of the PostStepGPIL
38
// by the first interface invoked)
39
// - add the list of cooperating G4BiasingProcessInterface objects,
40
// acting on a same particle type.
41
// G4BiasingProcessInterface is friend class of this one.
42
//---------------------------------------------------------------------------
43
// Initial version Sep. 2014 M. Verderi
44
45
#ifndef G4BiasingProcessSharedData_h
46
#define G4BiasingProcessSharedData_h
47
48
#include "
globals.hh
"
49
#include "
G4Cache.hh
"
50
#include <vector>
51
52
class
G4VBiasingOperator
;
53
class
G4BiasingProcessInterface
;
54
class
G4ProcessManager
;
55
class
G4ParallelGeometriesLimiterProcess
;
56
57
class
G4BiasingProcessSharedData
{
58
59
friend
class
G4BiasingProcessInterface
;
60
friend
class
G4ParallelGeometriesLimiterProcess
;
61
62
public
:
63
// -------------------------
64
// -- Public access methods:
65
// -------------------------
66
// -- The biasing process interface objects sharing this shared data class:
67
const
std::vector< const G4BiasingProcessInterface* >&
GetBiasingProcessInterfaces
()
const
68
{
return
fPublicBiasingProcessInterfaces
; }
69
const
std::vector< const G4BiasingProcessInterface* >&
GetPhysicsBiasingProcessInterfaces
()
const
70
{
return
fPublicPhysicsBiasingProcessInterfaces
; }
71
const
std::vector< const G4BiasingProcessInterface* >&
GetNonPhysicsBiasingProcessInterfaces
()
const
72
{
return
fPublicNonPhysicsBiasingProcessInterfaces
; }
73
74
// -- The possible geometry limiter process:
75
const
G4ParallelGeometriesLimiterProcess
*
GetParallelGeometriesLimiterProcess
()
const
76
{
return
fParallelGeometriesLimiterProcess
; }
77
78
79
private
:
80
// -- Methods used by the G4BiasingProcessInterface objects, thanks to class friendness.
81
// -- Object is created by G4BiasingProcessInterface object:
82
G4BiasingProcessSharedData
(
const
G4ProcessManager
* mgr)
83
:
fProcessManager
(mgr),
84
fCurrentBiasingOperator
( nullptr ),
85
fPreviousBiasingOperator
( nullptr ),
86
fParallelGeometryOperator
( nullptr ),
87
fMassGeometryOperator
( nullptr ),
88
fIsNewOperator
(
true
),
89
fLeavingPreviousOperator
(
false
),
90
fParallelGeometriesLimiterProcess
( nullptr )
91
{}
92
~G4BiasingProcessSharedData
() {}
93
// -- biasing operators:
94
void
CurrentBiasingOperator
(
G4VBiasingOperator
* );
95
G4VBiasingOperator
*
CurrentBiasingOperator
()
const
;
96
void
PreviousBiasingOperator
(
G4VBiasingOperator
* );
97
G4VBiasingOperator
*
PreviousBiasingOperator
()
const
;
98
99
private
:
100
// --
101
const
G4ProcessManager
*
fProcessManager
;
102
// -- biasing operators:
103
G4VBiasingOperator
*
fCurrentBiasingOperator
;
104
G4VBiasingOperator
*
fPreviousBiasingOperator
;
105
G4VBiasingOperator
*
fParallelGeometryOperator
;
106
G4VBiasingOperator
*
fMassGeometryOperator
;
107
// --
108
G4bool
fIsNewOperator
;
109
G4bool
fLeavingPreviousOperator
;
110
111
// -- biasing process interfaces sharing this object:
112
std::vector < G4BiasingProcessInterface* >
fBiasingProcessInterfaces
;
113
std::vector < G4BiasingProcessInterface* >
fPhysicsBiasingProcessInterfaces
;
114
std::vector < G4BiasingProcessInterface* >
fNonPhysicsBiasingProcessInterfaces
;
115
// -- the same ones, for public use:
116
std::vector < const G4BiasingProcessInterface* >
fPublicBiasingProcessInterfaces
;
117
std::vector < const G4BiasingProcessInterface* >
fPublicPhysicsBiasingProcessInterfaces
;
118
std::vector < const G4BiasingProcessInterface* >
fPublicNonPhysicsBiasingProcessInterfaces
;
119
120
// -- possible process limiting step on parallel geometries:
121
G4ParallelGeometriesLimiterProcess
*
fParallelGeometriesLimiterProcess
;
122
123
124
// -- thread local:
125
// -- Map between process managers and shared data. This map is made of
126
// -- pointers of G4BiasingSharedData instead of objects themselves :
127
// -- each process needs to keep a valid pointer of a shared data object
128
// -- but a map of object will make pointers invalid when map is increased.
129
static
G4MapCache
<
const
G4ProcessManager
*,
130
G4BiasingProcessSharedData
* >
fSharedDataMap
;
131
132
};
133
134
#endif
geant4
tree
geant4-10.6-release
source
processes
biasing
generic
include
G4BiasingProcessSharedData.hh
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:27
using
1.8.2 with
ECCE GitHub integration