Geant4-11
Public Member Functions | Static Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | Static Protected Attributes
G4EmStandardPhysicsWVI Class Reference

#include <G4EmStandardPhysicsWVI.hh>

Inheritance diagram for G4EmStandardPhysicsWVI:
G4VPhysicsConstructor

Public Member Functions

void ConstructParticle () override
 
void ConstructProcess () override
 
 G4EmStandardPhysicsWVI (G4int ver=1)
 
G4int GetInstanceID () const
 
const G4StringGetPhysicsName () const
 
G4int GetPhysicsType () const
 
G4int GetVerboseLevel () const
 
void SetPhysicsName (const G4String &="")
 
void SetPhysicsType (G4int)
 
void SetVerboseLevel (G4int value)
 
virtual void TerminateWorker ()
 
 ~G4EmStandardPhysicsWVI () override
 

Static Public Member Functions

static const G4VPCManagerGetSubInstanceManager ()
 

Protected Types

using PhysicsBuilder_V = G4VPCData::PhysicsBuilders_V
 

Protected Member Functions

void AddBuilder (G4PhysicsBuilderInterface *bld)
 
PhysicsBuilder_V GetBuilders () const
 
G4ParticleTable::G4PTblDicIteratorGetParticleIterator () const
 
G4bool RegisterProcess (G4VProcess *process, G4ParticleDefinition *particle)
 

Protected Attributes

G4int g4vpcInstanceID = 0
 
G4String namePhysics = ""
 
G4ParticleTabletheParticleTable = nullptr
 
G4int typePhysics = 0
 
G4int verboseLevel = 0
 

Static Protected Attributes

static G4RUN_DLL G4VPCManager subInstanceManager
 

Detailed Description

Definition at line 52 of file G4EmStandardPhysicsWVI.hh.

Member Typedef Documentation

◆ PhysicsBuilder_V

Definition at line 149 of file G4VPhysicsConstructor.hh.

Constructor & Destructor Documentation

◆ G4EmStandardPhysicsWVI()

G4EmStandardPhysicsWVI::G4EmStandardPhysicsWVI ( G4int  ver = 1)
explicit

Definition at line 95 of file G4EmStandardPhysicsWVI.cc.

96 : G4VPhysicsConstructor("G4EmStandardWVI")
97{
99 param->SetDefaults();
100 param->SetVerbose(ver);
101 param->SetMinEnergy(10*CLHEP::eV);
103 param->SetNumberOfBinsPerDecade(20);
105 param->SetStepFunction(0.2, 100*CLHEP::um);
106 param->SetStepFunctionMuHad(0.2, 50*CLHEP::um);
107 param->SetStepFunctionLightIons(0.1, 20*CLHEP::um);
108 param->SetStepFunctionIons(0.1, 1*CLHEP::um);
109 param->SetUseMottCorrection(true);
110 param->SetMuHadLateralDisplacement(true);
111 param->SetUseICRU90Data(true);
112 param->SetMscThetaLimit(0.15);
113 param->SetFluo(true);
116}
@ bElectromagnetic
void SetMinEnergy(G4double val)
void SetLowestElectronEnergy(G4double val)
void SetStepFunctionLightIons(G4double v1, G4double v2)
void SetNumberOfBinsPerDecade(G4int val)
static G4EmParameters * Instance()
void SetMscThetaLimit(G4double val)
void SetMuHadLateralDisplacement(G4bool val)
void ActivateAngularGeneratorForIonisation(G4bool val)
void SetStepFunction(G4double v1, G4double v2)
void SetFluo(G4bool val)
void SetStepFunctionMuHad(G4double v1, G4double v2)
void SetVerbose(G4int val)
void SetMaxNIELEnergy(G4double val)
void SetStepFunctionIons(G4double v1, G4double v2)
void SetUseICRU90Data(G4bool val)
void SetUseMottCorrection(G4bool val)
G4VPhysicsConstructor(const G4String &="")
static constexpr double um
Definition: SystemOfUnits.h:94
static constexpr double MeV
static constexpr double eV

References G4EmParameters::ActivateAngularGeneratorForIonisation(), bElectromagnetic, CLHEP::eV, G4EmParameters::Instance(), CLHEP::MeV, G4EmParameters::SetDefaults(), G4EmParameters::SetFluo(), G4EmParameters::SetLowestElectronEnergy(), G4EmParameters::SetMaxNIELEnergy(), G4EmParameters::SetMinEnergy(), G4EmParameters::SetMscThetaLimit(), G4EmParameters::SetMuHadLateralDisplacement(), G4EmParameters::SetNumberOfBinsPerDecade(), G4VPhysicsConstructor::SetPhysicsType(), G4EmParameters::SetStepFunction(), G4EmParameters::SetStepFunctionIons(), G4EmParameters::SetStepFunctionLightIons(), G4EmParameters::SetStepFunctionMuHad(), G4EmParameters::SetUseICRU90Data(), G4EmParameters::SetUseMottCorrection(), G4EmParameters::SetVerbose(), and CLHEP::um.

◆ ~G4EmStandardPhysicsWVI()

G4EmStandardPhysicsWVI::~G4EmStandardPhysicsWVI ( )
override

Definition at line 120 of file G4EmStandardPhysicsWVI.cc.

121{}

Member Function Documentation

◆ AddBuilder()

void G4VPhysicsConstructor::AddBuilder ( G4PhysicsBuilderInterface bld)
protectedinherited

Definition at line 99 of file G4VPhysicsConstructor.cc.

100{
101 (subInstanceManager.offset[g4vpcInstanceID])._builders->push_back(bld);
102}
static G4RUN_DLL G4VPCManager subInstanceManager
G4RUN_DLL G4ThreadLocalStatic T * offset

References G4VPhysicsConstructor::g4vpcInstanceID, G4VUPLSplitter< T >::offset, and G4VPhysicsConstructor::subInstanceManager.

Referenced by G4HadronPhysicsFTFP_BERT::Kaon(), G4HadronPhysicsFTF_BIC::Kaon(), G4HadronPhysicsINCLXX::Kaon(), G4HadronPhysicsFTFP_BERT::Neutron(), G4HadronPhysicsQGSP_BERT::Neutron(), G4HadronPhysicsQGSP_BIC::Neutron(), G4HadronPhysicsFTF_BIC::Neutron(), G4HadronPhysicsFTFP_BERT_HP::Neutron(), G4HadronPhysicsINCLXX::Neutron(), G4HadronPhysicsQGS_BIC::Neutron(), G4HadronPhysicsQGSP_BERT_HP::Neutron(), G4HadronPhysicsQGSP_BIC_HP::Neutron(), G4HadronPhysicsShielding::Neutron(), G4HadronPhysicsFTFP_BERT::Pion(), G4HadronPhysicsQGSP_BERT::Pion(), G4HadronPhysicsQGSP_BIC::Pion(), G4HadronPhysicsFTF_BIC::Pion(), G4HadronPhysicsINCLXX::Pion(), G4HadronPhysicsQGS_BIC::Pion(), G4HadronPhysicsFTFP_BERT::Proton(), G4HadronPhysicsQGSP_BERT::Proton(), G4HadronPhysicsQGSP_BIC::Proton(), G4HadronPhysicsFTF_BIC::Proton(), G4HadronPhysicsINCLXX::Proton(), G4HadronPhysicsNuBeam::Proton(), G4HadronPhysicsQGS_BIC::Proton(), and G4HadronPhysicsQGSP_BIC_AllHP::Proton().

◆ ConstructParticle()

void G4EmStandardPhysicsWVI::ConstructParticle ( )
overridevirtual

Implements G4VPhysicsConstructor.

Definition at line 125 of file G4EmStandardPhysicsWVI.cc.

126{
127 // minimal set of particles for EM physics
129}
static void ConstructMinimalEmSet()
Definition: G4EmBuilder.cc:347

References G4EmBuilder::ConstructMinimalEmSet().

◆ ConstructProcess()

void G4EmStandardPhysicsWVI::ConstructProcess ( )
overridevirtual

Implements G4VPhysicsConstructor.

Definition at line 133 of file G4EmStandardPhysicsWVI.cc.

134{
135 if(verboseLevel > 1) {
136 G4cout << "### " << GetPhysicsName() << " Construct Processes " << G4endl;
137 }
141
142 // common processes
143 G4hMultipleScattering* hmsc = new G4hMultipleScattering("ionmsc");
144
145 // nuclear stopping is enabled if th eenergy limit above zero
146 G4double nielEnergyLimit = param->MaxNIELEnergy();
147 G4NuclearStopping* pnuc = nullptr;
148 if(nielEnergyLimit > 0.0) {
149 pnuc = new G4NuclearStopping();
150 pnuc->SetMaxKinEnergy(nielEnergyLimit);
151 }
152
153 // high energy limit for e+- scattering models
154 G4double highEnergyLimit = 1*CLHEP::MeV;
155
156 // Add gamma EM processes
158
161
164
166 if(param->EnablePolarisation()) {
168 }
169
170 ph->RegisterProcess(pee, particle);
171 ph->RegisterProcess(cs, particle);
172 ph->RegisterProcess(gc, particle);
173 ph->RegisterProcess(new G4RayleighScattering(), particle);
174
175 // e-
176 particle = G4Electron::Electron();
177
179 G4UrbanMscModel* msc1 = new G4UrbanMscModel();
181 msc1->SetHighEnergyLimit(highEnergyLimit);
182 msc2->SetLowEnergyLimit(highEnergyLimit);
183 msc->SetEmModel(msc1);
184 msc->SetEmModel(msc2);
185
188 ss->SetEmModel(ssm);
189 ss->SetMinKinEnergy(highEnergyLimit);
190 ssm->SetLowEnergyLimit(highEnergyLimit);
191 ssm->SetActivationLowEnergyLimit(highEnergyLimit);
192
193 ph->RegisterProcess(msc, particle);
194 ph->RegisterProcess(new G4eIonisation(), particle);
195 ph->RegisterProcess(new G4eBremsstrahlung(), particle);
196 ph->RegisterProcess(ss, particle);
197
198 // e+
199 particle = G4Positron::Positron();
200
201 msc = new G4eMultipleScattering;
202 msc1 = new G4UrbanMscModel();
203 msc2 = new G4WentzelVIModel();
204 msc1->SetHighEnergyLimit(highEnergyLimit);
205 msc2->SetLowEnergyLimit(highEnergyLimit);
206 msc->SetEmModel(msc1);
207 msc->SetEmModel(msc2);
208
209 ssm = new G4eCoulombScatteringModel();
210 ss = new G4CoulombScattering();
211 ss->SetEmModel(ssm);
212 ss->SetMinKinEnergy(highEnergyLimit);
213 ssm->SetLowEnergyLimit(highEnergyLimit);
214 ssm->SetActivationLowEnergyLimit(highEnergyLimit);
215
218
219 ph->RegisterProcess(msc, particle);
220 ph->RegisterProcess(new G4eIonisation(), particle);
221 ph->RegisterProcess(new G4eBremsstrahlung(), particle);
222 ph->RegisterProcess(ann, particle);
223 ph->RegisterProcess(ss, particle);
224
225 // generic ion
226 particle = G4GenericIon::GenericIon();
227 G4ionIonisation* ionIoni = new G4ionIonisation();
229 ph->RegisterProcess(hmsc, particle);
230 ph->RegisterProcess(ionIoni, particle);
231 if(nullptr != pnuc) { ph->RegisterProcess(pnuc, particle); }
232
233 // muons, hadrons, ions
235
236 // extra configuration
238}
double G4double
Definition: G4Types.hh:83
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout
static G4Electron * Electron()
Definition: G4Electron.cc:93
static void ConstructCharged(G4hMultipleScattering *hmsc, G4NuclearStopping *nucStopping, G4bool isWVI=true)
Definition: G4EmBuilder.cc:219
static void PrepareEMPhysics()
Definition: G4EmBuilder.cc:375
G4bool EnablePolarisation() const
G4double MaxNIELEnergy() const
static G4Gamma * Gamma()
Definition: G4Gamma.cc:85
static G4GenericIon * GenericIon()
Definition: G4GenericIon.cc:92
G4bool RegisterProcess(G4VProcess *process, G4ParticleDefinition *particle)
static G4PhysicsListHelper * GetPhysicsListHelper()
static G4Positron * Positron()
Definition: G4Positron.cc:93
void SetHighEnergyLimit(G4double)
Definition: G4VEmModel.hh:767
void SetActivationLowEnergyLimit(G4double)
Definition: G4VEmModel.hh:788
void SetLowEnergyLimit(G4double)
Definition: G4VEmModel.hh:774
void SetMinKinEnergy(G4double e)
void SetEmModel(G4VEmModel *, G4int index=0)
void SetMaxKinEnergy(G4double e)
void SetEmModel(G4VEmModel *, G4int index=0)
void SetEmModel(G4VMscModel *, G4int idx=0)
const G4String & GetPhysicsName() const

References G4EmBuilder::ConstructCharged(), G4Electron::Electron(), G4EmParameters::EnablePolarisation(), G4cout, G4endl, G4Gamma::Gamma(), G4GenericIon::GenericIon(), G4PhysicsListHelper::GetPhysicsListHelper(), G4VPhysicsConstructor::GetPhysicsName(), G4EmParameters::Instance(), G4EmParameters::MaxNIELEnergy(), CLHEP::MeV, G4Positron::Positron(), G4EmBuilder::PrepareEMPhysics(), G4PhysicsListHelper::RegisterProcess(), G4VEmModel::SetActivationLowEnergyLimit(), G4VEmProcess::SetEmModel(), G4VEnergyLossProcess::SetEmModel(), G4VMultipleScattering::SetEmModel(), G4VEmModel::SetHighEnergyLimit(), G4VEmModel::SetLowEnergyLimit(), G4VEmProcess::SetMaxKinEnergy(), G4VEmProcess::SetMinKinEnergy(), and G4VPhysicsConstructor::verboseLevel.

◆ GetBuilders()

G4VPhysicsConstructor::PhysicsBuilder_V G4VPhysicsConstructor::GetBuilders ( ) const
protectedinherited

Definition at line 86 of file G4VPhysicsConstructor.cc.

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}
int G4int
Definition: G4Types.hh:85
G4VPCData::PhysicsBuilders_V PhysicsBuilder_V
void copy(G4double dst[], const G4double src[], size_t size=G4FieldTrack::ncompSVEC)
Definition: G4FieldUtils.cc:98

References field_utils::copy(), G4VPhysicsConstructor::g4vpcInstanceID, G4VUPLSplitter< T >::offset, and G4VPhysicsConstructor::subInstanceManager.

◆ GetInstanceID()

G4int G4VPhysicsConstructor::GetInstanceID ( ) const
inlineinherited

◆ GetParticleIterator()

G4ParticleTable::G4PTblDicIterator * G4VPhysicsConstructor::GetParticleIterator ( ) const
protectedinherited

◆ GetPhysicsName()

const G4String & G4VPhysicsConstructor::GetPhysicsName ( ) const
inlineinherited

Definition at line 191 of file G4VPhysicsConstructor.hh.

192{
193 return namePhysics;
194}

References G4VPhysicsConstructor::namePhysics.

Referenced by G4EmDNAPhysics_option1::ConstructProcess(), G4EmDNAPhysics_option2::ConstructProcess(), G4EmDNAPhysics_option3::ConstructProcess(), G4EmDNAPhysics_option4::ConstructProcess(), G4EmDNAPhysics_option5::ConstructProcess(), G4EmDNAPhysics_option6::ConstructProcess(), G4EmDNAPhysics_option7::ConstructProcess(), G4EmDNAPhysics_option8::ConstructProcess(), G4EmDNAPhysics_stationary_option2::ConstructProcess(), G4EmDNAPhysics_stationary_option4::ConstructProcess(), G4EmDNAPhysics_stationary_option6::ConstructProcess(), G4EmDNAPhysics::ConstructProcess(), G4EmDNAPhysics_stationary::ConstructProcess(), G4EmLivermorePhysics::ConstructProcess(), G4EmLowEPPhysics::ConstructProcess(), G4EmPenelopePhysics::ConstructProcess(), G4EmStandardPhysics::ConstructProcess(), G4EmStandardPhysics_option1::ConstructProcess(), G4EmStandardPhysics_option2::ConstructProcess(), G4EmStandardPhysics_option3::ConstructProcess(), G4EmStandardPhysics_option4::ConstructProcess(), G4EmStandardPhysicsGS::ConstructProcess(), G4EmStandardPhysicsSS::ConstructProcess(), ConstructProcess(), G4ThermalNeutrons::ConstructProcess(), G4HadronPhysicsFTFP_BERT::DumpBanner(), G4HadronPhysicsQGSP_BERT::DumpBanner(), export_G4VPhysicsConstructor(), G4HadronDElasticPhysics::G4HadronDElasticPhysics(), G4HadronElasticPhysics::G4HadronElasticPhysics(), G4HadronElasticPhysicsHP::G4HadronElasticPhysicsHP(), G4HadronElasticPhysicsLEND::G4HadronElasticPhysicsLEND(), G4HadronElasticPhysicsPHP::G4HadronElasticPhysicsPHP(), G4HadronElasticPhysicsXS::G4HadronElasticPhysicsXS(), G4HadronHElasticPhysics::G4HadronHElasticPhysics(), G4IonElasticPhysics::G4IonElasticPhysics(), G4VModularPhysicsList::RegisterPhysics(), and G4VModularPhysicsList::ReplacePhysics().

◆ GetPhysicsType()

G4int G4VPhysicsConstructor::GetPhysicsType ( ) const
inlineinherited

◆ GetSubInstanceManager()

const G4VPCManager & G4VPhysicsConstructor::GetSubInstanceManager ( )
inlinestaticinherited

◆ GetVerboseLevel()

G4int G4VPhysicsConstructor::GetVerboseLevel ( ) const
inlineinherited

◆ RegisterProcess()

G4bool G4VPhysicsConstructor::RegisterProcess ( G4VProcess process,
G4ParticleDefinition particle 
)
inlineprotectedinherited

◆ SetPhysicsName()

void G4VPhysicsConstructor::SetPhysicsName ( const G4String name = "")
inlineinherited

Definition at line 186 of file G4VPhysicsConstructor.hh.

187{
189}
const char * name(G4int ptype)

References G4InuclParticleNames::name(), and G4VPhysicsConstructor::namePhysics.

Referenced by export_G4VPhysicsConstructor().

◆ SetPhysicsType()

void G4VPhysicsConstructor::SetPhysicsType ( G4int  val)
inlineinherited

Definition at line 196 of file G4VPhysicsConstructor.hh.

197{
198 if(val > 0) { typePhysics = val; }
199}

References G4VPhysicsConstructor::typePhysics.

Referenced by G4DecayPhysics::G4DecayPhysics(), G4EmDNAPhysics::G4EmDNAPhysics(), G4EmDNAPhysics_option1::G4EmDNAPhysics_option1(), G4EmDNAPhysics_option2::G4EmDNAPhysics_option2(), G4EmDNAPhysics_option3::G4EmDNAPhysics_option3(), G4EmDNAPhysics_option4::G4EmDNAPhysics_option4(), G4EmDNAPhysics_option5::G4EmDNAPhysics_option5(), G4EmDNAPhysics_option6::G4EmDNAPhysics_option6(), G4EmDNAPhysics_option7::G4EmDNAPhysics_option7(), G4EmDNAPhysics_option8::G4EmDNAPhysics_option8(), G4EmDNAPhysics_stationary_option2::G4EmDNAPhysics_stationary_option2(), G4EmDNAPhysics_stationary_option4::G4EmDNAPhysics_stationary_option4(), G4EmDNAPhysics_stationary_option6::G4EmDNAPhysics_stationary_option6(), G4EmExtraPhysics::G4EmExtraPhysics(), G4EmLivermorePhysics::G4EmLivermorePhysics(), G4EmLowEPPhysics::G4EmLowEPPhysics(), G4EmPenelopePhysics::G4EmPenelopePhysics(), G4EmStandardPhysics::G4EmStandardPhysics(), G4EmStandardPhysics_option1::G4EmStandardPhysics_option1(), G4EmStandardPhysics_option2::G4EmStandardPhysics_option2(), G4EmStandardPhysics_option3::G4EmStandardPhysics_option3(), G4EmStandardPhysics_option4::G4EmStandardPhysics_option4(), G4EmStandardPhysicsGS::G4EmStandardPhysicsGS(), G4EmStandardPhysicsSS::G4EmStandardPhysicsSS(), G4EmStandardPhysicsWVI(), G4HadronElasticPhysics::G4HadronElasticPhysics(), G4HadronInelasticQBBC::G4HadronInelasticQBBC(), G4HadronPhysicsFTFP_BERT::G4HadronPhysicsFTFP_BERT(), G4HadronPhysicsQGSP_BERT::G4HadronPhysicsQGSP_BERT(), G4HadronPhysicsQGSP_BIC::G4HadronPhysicsQGSP_BIC(), G4IonINCLXXPhysics::G4IonINCLXXPhysics(), G4IonPhysics::G4IonPhysics(), G4IonPhysicsPHP::G4IonPhysicsPHP(), G4IonQMDPhysics::G4IonQMDPhysics(), G4NeutronTrackingCut::G4NeutronTrackingCut(), G4StepLimiterPhysics::G4StepLimiterPhysics(), G4StoppingPhysics::G4StoppingPhysics(), and G4StoppingPhysicsFritiofWithBinaryCascade::G4StoppingPhysicsFritiofWithBinaryCascade().

◆ SetVerboseLevel()

void G4VPhysicsConstructor::SetVerboseLevel ( G4int  value)
inlineinherited

◆ TerminateWorker()

void G4VPhysicsConstructor::TerminateWorker ( )
virtualinherited

Definition at line 105 of file G4VPhysicsConstructor.cc.

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}

References G4VPhysicsConstructor::g4vpcInstanceID, G4VUPLSplitter< T >::offset, and G4VPhysicsConstructor::subInstanceManager.

Referenced by G4VPhysicsConstructor::~G4VPhysicsConstructor().

Field Documentation

◆ g4vpcInstanceID

G4int G4VPhysicsConstructor::g4vpcInstanceID = 0
protectedinherited

◆ namePhysics

G4String G4VPhysicsConstructor::namePhysics = ""
protectedinherited

◆ subInstanceManager

G4VPCManager G4VPhysicsConstructor::subInstanceManager
staticprotectedinherited

◆ theParticleTable

G4ParticleTable* G4VPhysicsConstructor::theParticleTable = nullptr
protectedinherited

◆ typePhysics

G4int G4VPhysicsConstructor::typePhysics = 0
protectedinherited

◆ verboseLevel

G4int G4VPhysicsConstructor::verboseLevel = 0
protectedinherited

The documentation for this class was generated from the following files: