Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4VPhysicsConstructor.cc
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// G4VPhysicsConstructor implementation
27//
28// Original author: H.Kurashige (Kobe University), 12 November 2000
29// --------------------------------------------------------------------
30
31#include <algorithm>
32
35
36// This field helps to use the class G4VPCManager
37//
39
40// --------------------------------------------------------------------
42{
45}
46
47// --------------------------------------------------------------------
49 : namePhysics(name)
50{
52 // pointer to the particle table
54}
55
56// --------------------------------------------------------------------
58 : namePhysics(name)
59 , typePhysics(type)
60{
62 // pointer to the particle table
64 // aParticleIterator = theParticleTable->GetIterator();
65
66 if(type < 0)
67 typePhysics = 0;
68}
69
70// --------------------------------------------------------------------
72{
73 // Master/Sequential needs to cleanup too
75}
76
77// --------------------------------------------------------------------
80{
81 return (subInstanceManager.offset[g4vpcInstanceID])._aParticleIterator;
82}
83
84// --------------------------------------------------------------------
87{
88 const auto& tls = *((subInstanceManager.offset[g4vpcInstanceID])._builders);
89 PhysicsBuilder_V copy(tls.size());
90 G4int i = 0;
91 for(const auto& el : tls)
92 {
93 copy[i++] = el;
94 }
95 return copy;
96}
97
98// --------------------------------------------------------------------
100{
101 (subInstanceManager.offset[g4vpcInstanceID])._builders->push_back(bld);
102}
103
104// --------------------------------------------------------------------
106{
107 if(subInstanceManager.offset[g4vpcInstanceID]._builders != nullptr)
108 {
109 std::for_each(subInstanceManager.offset[g4vpcInstanceID]._builders->begin(),
110 subInstanceManager.offset[g4vpcInstanceID]._builders->end(),
111 [](PhysicsBuilder_V::value_type bld) { delete bld; });
112 subInstanceManager.offset[g4vpcInstanceID]._builders->clear();
113 }
114}
int G4int
Definition: G4Types.hh:85
G4PTblDicIterator * GetIterator() const
static G4ParticleTable * GetParticleTable()
std::vector< G4PhysicsBuilderInterface * > PhysicsBuilders_V
PhysicsBuilders_V * _builders
G4ParticleTable::G4PTblDicIterator * _aParticleIterator
G4VPhysicsConstructor(const G4String &="")
void AddBuilder(G4PhysicsBuilderInterface *bld)
static G4RUN_DLL G4VPCManager subInstanceManager
G4ParticleTable::G4PTblDicIterator * GetParticleIterator() const
PhysicsBuilder_V GetBuilders() const
G4ParticleTable * theParticleTable
G4VPCData::PhysicsBuilders_V PhysicsBuilder_V
G4RUN_DLL G4ThreadLocalStatic T * offset
G4int CreateSubInstance()