Geant4 11.4.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4HadronDElasticPhysics Class Reference

#include <G4HadronDElasticPhysics.hh>

Inheritance diagram for G4HadronDElasticPhysics:

Public Member Functions

 G4HadronDElasticPhysics (G4int ver=1)
virtual ~G4HadronDElasticPhysics ()
void ConstructProcess () override
 G4HadronDElasticPhysics (G4HadronDElasticPhysics &)=delete
G4HadronDElasticPhysicsoperator= (const G4HadronDElasticPhysics &right)=delete
Public Member Functions inherited from G4HadronElasticPhysics
 G4HadronElasticPhysics (G4int ver=1, const G4String &nam="hElasticWEL_CHIPS_XS")
 ~G4HadronElasticPhysics () override=default
void ConstructParticle () override
void ConstructProcess () override
G4HadronicProcessGetElasticProcess (const G4ParticleDefinition *part) const
G4HadronElasticGetElasticModel (const G4ParticleDefinition *part) const
G4HadronicProcessGetNeutronProcess () const
G4HadronElasticGetNeutronModel () const
void AddXSection (const G4ParticleDefinition *, G4VCrossSectionDataSet *) const
 G4HadronElasticPhysics (G4HadronElasticPhysics &)=delete
G4HadronElasticPhysicsoperator= (const G4HadronElasticPhysics &right)=delete
Public Member Functions inherited from G4VPhysicsConstructor
 G4VPhysicsConstructor (const G4String &="")
 G4VPhysicsConstructor (const G4String &name, G4int physics_type)
virtual ~G4VPhysicsConstructor ()
void SetPhysicsName (const G4String &="")
const G4StringGetPhysicsName () const
void SetPhysicsType (G4int)
G4int GetPhysicsType () const
G4int GetInstanceID () const
virtual void TerminateWorker ()
void SetVerboseLevel (G4int value)
G4int GetVerboseLevel () const

Additional Inherited Members

Static Public Member Functions inherited from G4VPhysicsConstructor
static const G4VPCManagerGetSubInstanceManager ()
Protected Types inherited from G4VPhysicsConstructor
using PhysicsBuilder_V = G4VPCData::PhysicsBuilders_V
Protected Member Functions inherited from G4VPhysicsConstructor
G4bool RegisterProcess (G4VProcess *process, G4ParticleDefinition *particle)
G4ParticleTable::G4PTblDicIteratorGetParticleIterator () const
PhysicsBuilder_V GetBuilders () const
void AddBuilder (G4PhysicsBuilderInterface *bld)
Protected Attributes inherited from G4VPhysicsConstructor
G4int verboseLevel = 0
G4String namePhysics = ""
G4int typePhysics = 0
G4ParticleTabletheParticleTable = nullptr
G4int g4vpcInstanceID = 0
Static Protected Attributes inherited from G4VPhysicsConstructor
static G4RUN_DLL G4VPCManager subInstanceManager

Detailed Description

Definition at line 43 of file G4HadronDElasticPhysics.hh.

Constructor & Destructor Documentation

◆ G4HadronDElasticPhysics() [1/2]

G4HadronDElasticPhysics::G4HadronDElasticPhysics ( G4int ver = 1)
explicit

Definition at line 91 of file G4HadronDElasticPhysics.cc.

92 : G4HadronElasticPhysics(ver, "hElasticDIFFUSE")
93{
94 if(ver > 1) {
95 G4cout << "### G4HadronDElasticPhysics: " << GetPhysicsName()
96 << G4endl;
97 }
98}
#define G4endl
Definition G4ios.hh:67
G4GLOB_DLL std::ostream G4cout
G4HadronElasticPhysics(G4int ver=1, const G4String &nam="hElasticWEL_CHIPS_XS")
const G4String & GetPhysicsName() const

Referenced by G4HadronDElasticPhysics(), and operator=().

◆ ~G4HadronDElasticPhysics()

G4HadronDElasticPhysics::~G4HadronDElasticPhysics ( )
virtual

Definition at line 100 of file G4HadronDElasticPhysics.cc.

101{}

◆ G4HadronDElasticPhysics() [2/2]

G4HadronDElasticPhysics::G4HadronDElasticPhysics ( G4HadronDElasticPhysics & )
delete

Member Function Documentation

◆ ConstructProcess()

void G4HadronDElasticPhysics::ConstructProcess ( )
overridevirtual

Implements G4VPhysicsConstructor.

Definition at line 103 of file G4HadronDElasticPhysics.cc.

104{
105 G4HadronicParameters* param = G4HadronicParameters::Instance();
106 G4bool useFactorXS = param->ApplyFactorXS();
107 G4ParticleTable* table = G4ParticleTable::GetParticleTable();
108 G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper();
109
110 const G4double eminDElastic = 10.*MeV;
111 const G4double elimitAntiNuc = 100.*MeV;
112 const G4double delta = 0.1*MeV;
113 G4double emax = std::max(param->GetMaxEnergy(), elimitAntiNuc+delta);
114 if(param->GetVerboseLevel() > 1) {
115 G4cout << "### HadronDElasticPhysics Construct Processes "
116 << " for anti-neuclei "
117 << elimitAntiNuc/GeV << " GeV" << G4endl;
118 }
119
120 G4AntiNuclElastic* anuc = new G4AntiNuclElastic();
121 anuc->SetMinEnergy(elimitAntiNuc);
122 anuc->SetMaxEnergy(emax);
123
124 auto anucxs = G4HadProcesses::ElasticXS("AntiAGlauber");
125 auto xsNN = G4HadProcesses::ElasticXS("Glauber-Gribov Nucl-nucl");
126
127 G4HadronElastic* lhep0 = new G4HadronElastic();
128 G4HadronElastic* lhep1 = new G4HadronElastic();
129 lhep1->SetMaxEnergy(eminDElastic + delta);
130 G4HadronElastic* lhep2 = new G4HadronElastic();
131 lhep2->SetMaxEnergy(elimitAntiNuc);
132
133 G4DiffuseElastic* model = nullptr;
134
135 // p
136 G4ParticleDefinition* particle = G4Proton::Proton();
137 G4HadronElasticProcess* hel = new G4HadronElasticProcess();
138 hel->AddDataSet(new G4BGGNucleonElasticXS(particle));
139 model = new G4DiffuseElastic();
140 model->SetMinEnergy(eminDElastic);
141 hel->RegisterMe(lhep1);
142 hel->RegisterMe(model);
143 if( useFactorXS ) hel->MultiplyCrossSectionBy( param->XSFactorNucleonElastic() );
144 ph->RegisterProcess(hel, particle);
145
146 // n
147 particle = G4Neutron::Neutron();
148 hel = new G4HadronElasticProcess();
149 hel->AddDataSet(new G4NeutronElasticXS());
150 model = new G4DiffuseElastic();
151 model->SetMinEnergy(eminDElastic);
152 hel->RegisterMe(lhep1);
153 hel->RegisterMe(model);
154 if( useFactorXS ) hel->MultiplyCrossSectionBy( param->XSFactorNucleonElastic() );
155 ph->RegisterProcess(hel, particle);
156
157 // pi+
158 particle = G4PionPlus::PionPlus();
159 hel = new G4HadronElasticProcess();
160 hel->AddDataSet(new G4BGGPionElasticXS(particle));
161 model = new G4DiffuseElastic();
162 model->SetMinEnergy(eminDElastic);
163 hel->RegisterMe(lhep1);
164 hel->RegisterMe(model);
165 if( useFactorXS ) hel->MultiplyCrossSectionBy( param->XSFactorPionElastic() );
166 ph->RegisterProcess(hel, particle);
167
168 // pi-
169 particle = G4PionMinus::PionMinus();
170 hel = new G4HadronElasticProcess();
171 hel->AddDataSet(new G4BGGPionElasticXS(particle));
172 model = new G4DiffuseElastic();
173 model->SetMinEnergy(eminDElastic);
174 hel->RegisterMe(lhep1);
175 hel->RegisterMe(model);
176 if( useFactorXS ) hel->MultiplyCrossSectionBy( param->XSFactorPionElastic() );
177 ph->RegisterProcess(hel, particle);
178
179 // kaons
181
182 // d, t, He3, alpha
183 for( auto & pdg : G4HadParticles::GetLightIons() ) {
184 particle = table->FindParticle( pdg );
185 if ( particle == nullptr ) { continue; }
186
187 hel = new G4HadronElasticProcess();
188 hel->AddDataSet(xsNN);
189 hel->RegisterMe(lhep0);
190 if( useFactorXS ) hel->MultiplyCrossSectionBy( param->XSFactorHadronElastic() );
191 ph->RegisterProcess(hel, particle);
192 }
193
194 // high energy particles
195 if( emax > param->EnergyThresholdForHeavyHadrons() ) {
196
197 // pbar, nbar, anti light ions
198 for( auto & pdg : G4HadParticles::GetLightAntiIons() ) {
199 particle = table->FindParticle( pdg );
200 if ( particle == nullptr ) { continue; }
201
202 hel = new G4HadronElasticProcess();
203 hel->RegisterMe(lhep2);
204 hel->RegisterMe(anuc);
205 hel->AddDataSet(anucxs);
206 if( useFactorXS ) hel->MultiplyCrossSectionBy( param->XSFactorHadronElastic() );
207 ph->RegisterProcess(hel, particle);
208 }
209
210 // hyperons
213
214 // b-, c- baryons and mesons
215 if( G4HadronicParameters::Instance()->EnableBCParticles() ) {
217 }
218 }
219}
double G4double
Definition G4Types.hh:83
bool G4bool
Definition G4Types.hh:86
static const std::vector< G4int > & GetBCHadrons()
static const std::vector< G4int > & GetAntiHyperons()
static const std::vector< G4int > & GetLightAntiIons()
static const std::vector< G4int > & GetLightIons()
static const std::vector< G4int > & GetKaons()
static const std::vector< G4int > & GetHyperons()
static G4CrossSectionElastic * ElasticXS(const G4String &componentName)
static void BuildElastic(const std::vector< G4int > &particleList)
void SetMinEnergy(G4double anEnergy)
void SetMaxEnergy(const G4double anEnergy)
G4double XSFactorPionElastic() const
static G4HadronicParameters * Instance()
G4double XSFactorNucleonElastic() const
G4double EnergyThresholdForHeavyHadrons() const
G4double XSFactorHadronElastic() const
void AddDataSet(G4VCrossSectionDataSet *aDataSet)
void MultiplyCrossSectionBy(G4double factor)
void RegisterMe(G4HadronicInteraction *a)
static G4Neutron * Neutron()
Definition G4Neutron.cc:101
static G4ParticleTable * GetParticleTable()
G4bool RegisterProcess(G4VProcess *process, G4ParticleDefinition *particle)
static G4PhysicsListHelper * GetPhysicsListHelper()
static G4PionMinus * PionMinus()
static G4PionPlus * PionPlus()
Definition G4PionPlus.cc:93
static G4Proton * Proton()
Definition G4Proton.cc:90

◆ operator=()

G4HadronDElasticPhysics & G4HadronDElasticPhysics::operator= ( const G4HadronDElasticPhysics & right)
delete

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