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
G4EmExtraParameters.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// -------------------------------------------------------------------
27//
28// GEANT4 Class header file
29//
30// File name: G4EmExtraParameters
31//
32// Author: Vladimir Ivanchenko
33//
34// Creation date: 06.05.2019
35//
36// Class Description:
37//
38// An internal utility class, responsable for keeping parameters
39// for EM processes and models.
40//
41// It is initialized by the master thread but can be updated
42// at any moment via G4EmParameters interface. It is not assumed
43// to be used for a direct initialisation
44//
45// -------------------------------------------------------------------
46//
47
48#ifndef G4EmExtraParameters_h
49#define G4EmExtraParameters_h 1
50
51#include "globals.hh"
52#include "G4ios.hh"
53#include "G4ThreeVector.hh"
54#include <vector>
55
58class G4VEmProcess;
61
63{
64public:
65
66 explicit G4EmExtraParameters();
67
69
70 void Initialise();
71
74
77
80
83
87
91
95
99
101
102 // parameters per region or per process
103 void AddPAIModel(const G4String& particle,
104 const G4String& region,
105 const G4String& type);
106 const std::vector<G4String>& ParticlesPAI() const;
107 const std::vector<G4String>& RegionsPAI() const;
108 const std::vector<G4String>& TypesPAI() const;
109
110 void AddPhysics(const G4String& region, const G4String& type);
111 const std::vector<G4String>& RegionsPhysics() const;
112 const std::vector<G4String>& TypesPhysics() const;
113
114 void SetSubCutRegion(const G4String& region);
115
116 void SetProcessBiasingFactor(const G4String& procname,
117 G4double val, G4bool wflag);
118
119 void ActivateForcedInteraction(const G4String& procname,
120 const G4String& region,
121 G4double length,
122 G4bool wflag);
123
124 void ActivateSecondaryBiasing(const G4String& name,
125 const G4String& region,
126 G4double factor,
127 G4double energyLimit);
128
129 // initialisation methods
132
135 (const G4EmExtraParameters &right) = delete;
136
137private:
138
139 G4String CheckRegion(const G4String&) const;
140
141 void PrintWarning(G4ExceptionDescription& ed) const;
142
143 G4EmExtraParametersMessenger* theMessenger;
144
145 G4bool directionalSplitting;
146 G4bool quantumEntanglement;
147
148 G4double dRoverRange;
149 G4double finalRange;
150 G4double dRoverRangeMuHad;
151 G4double finalRangeMuHad;
152 G4double dRoverRangeLIons;
153 G4double finalRangeLIons;
154 G4double dRoverRangeIons;
155 G4double finalRangeIons;
156
157 G4double directionalSplittingRadius;
158 G4ThreeVector directionalSplittingTarget;
159
160 std::vector<G4String> m_particlesPAI;
161 std::vector<G4String> m_regnamesPAI;
162 std::vector<G4String> m_typesPAI;
163
164 std::vector<G4String> m_regnamesPhys;
165 std::vector<G4String> m_typesPhys;
166
167 std::vector<G4String> m_regnamesSubCut;
168
169 std::vector<G4String> m_procBiasedXS;
170 std::vector<G4double> m_factBiasedXS;
171 std::vector<G4bool> m_weightBiasedXS;
172
173 std::vector<G4String> m_procForced;
174 std::vector<G4String> m_regnamesForced;
175 std::vector<G4double> m_lengthForced;
176 std::vector<G4bool> m_weightForced;
177
178 std::vector<G4String> m_procBiasedSec;
179 std::vector<G4String> m_regnamesBiasedSec;
180 std::vector<G4double> m_factBiasedSec;
181 std::vector<G4double> m_elimBiasedSec;
182};
183
184//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
185
186#endif
std::ostringstream G4ExceptionDescription
Definition: G4Exception.hh:40
double G4double
Definition: G4Types.hh:83
bool G4bool
Definition: G4Types.hh:86
G4double GetStepFunctionP1() const
G4double GetStepFunctionP2() const
void SetQuantumEntanglement(G4bool v)
void SetStepFunctionMuHad(G4double v1, G4double v2)
void SetDirectionalSplittingRadius(G4double r)
G4double GetStepFunctionIonsP2() const
G4EmExtraParameters(G4EmExtraParameters &)=delete
void SetStepFunctionIons(G4double v1, G4double v2)
const std::vector< G4String > & ParticlesPAI() const
G4double GetStepFunctionMuHadP1() const
void ActivateForcedInteraction(const G4String &procname, const G4String &region, G4double length, G4bool wflag)
void ActivateSecondaryBiasing(const G4String &name, const G4String &region, G4double factor, G4double energyLimit)
void SetDirectionalSplitting(G4bool v)
const std::vector< G4String > & TypesPhysics() const
const std::vector< G4String > & TypesPAI() const
void DefineRegParamForEM(G4VEmProcess *) const
void SetDirectionalSplittingTarget(const G4ThreeVector &v)
const std::vector< G4String > & RegionsPAI() const
void SetSubCutRegion(const G4String &region)
G4double GetStepFunctionLightIonsP1() const
void FillStepFunction(const G4ParticleDefinition *, G4VEnergyLossProcess *) const
void SetProcessBiasingFactor(const G4String &procname, G4double val, G4bool wflag)
G4ThreeVector GetDirectionalSplittingTarget() const
void DefineRegParamForLoss(G4VEnergyLossProcess *) const
const std::vector< G4String > & RegionsPhysics() const
G4double GetStepFunctionIonsP1() const
void SetStepFunction(G4double v1, G4double v2)
G4double GetStepFunctionLightIonsP2() const
G4double GetStepFunctionMuHadP2() const
G4double GetDirectionalSplittingRadius()
void SetStepFunctionLightIons(G4double v1, G4double v2)
void AddPAIModel(const G4String &particle, const G4String &region, const G4String &type)
void AddPhysics(const G4String &region, const G4String &type)