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

#include <G4HadronElasticPhysics.hh>

+ Inheritance diagram for G4HadronElasticPhysics:

Public Member Functions

 G4HadronElasticPhysics (G4int ver=0, const G4String &nam="hElasticWEL_CHIPS_XS")
 
virtual ~G4HadronElasticPhysics ()
 
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
 
- Public Member Functions inherited from G4VPhysicsConstructor
 G4VPhysicsConstructor (const G4String &="")
 
 G4VPhysicsConstructor (const G4String &name, G4int physics_type)
 
virtual ~G4VPhysicsConstructor ()
 
virtual void ConstructParticle ()=0
 
virtual void ConstructProcess ()=0
 
void SetPhysicsName (const G4String &="")
 
const G4StringGetPhysicsName () const
 
void SetPhysicsType (G4int)
 
G4int GetPhysicsType () const
 
void SetVerboseLevel (G4int value)
 
G4int GetVerboseLevel () const
 
G4int GetInstanceID () const
 
virtual void TerminateWorker ()
 

Protected Attributes

G4int verbose
 
- Protected Attributes inherited from G4VPhysicsConstructor
G4int verboseLevel
 
G4String namePhysics
 
G4int typePhysics
 
G4ParticleTabletheParticleTable
 
G4int g4vpcInstanceID
 

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)
 
- Static Protected Attributes inherited from G4VPhysicsConstructor
static G4RUN_DLL G4VPCManager subInstanceManager
 

Detailed Description

Definition at line 54 of file G4HadronElasticPhysics.hh.

Constructor & Destructor Documentation

◆ G4HadronElasticPhysics()

G4HadronElasticPhysics::G4HadronElasticPhysics ( G4int  ver = 0,
const G4String nam = "hElasticWEL_CHIPS_XS" 
)
explicit

Definition at line 78 of file G4HadronElasticPhysics.cc.

80{
81 if(verbose > 1) {
82 G4cout << "### G4HadronElasticPhysics: " << GetPhysicsName()
83 << G4endl;
84 }
85}
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout
const G4String & GetPhysicsName() const

◆ ~G4HadronElasticPhysics()

G4HadronElasticPhysics::~G4HadronElasticPhysics ( )
virtual

Definition at line 87 of file G4HadronElasticPhysics.cc.

88{}

Member Function Documentation

◆ AddXSection()

void G4HadronElasticPhysics::AddXSection ( const G4ParticleDefinition part,
G4VCrossSectionDataSet cross 
) const

Definition at line 237 of file G4HadronElasticPhysics.cc.

239{
241 if(hel) { hel->AddDataSet(cross); }
242}
G4HadronicProcess * GetElasticProcess(const G4ParticleDefinition *part) const
void AddDataSet(G4VCrossSectionDataSet *aDataSet)

◆ ConstructParticle()

void G4HadronElasticPhysics::ConstructParticle ( )
overridevirtual

Implements G4VPhysicsConstructor.

Definition at line 90 of file G4HadronElasticPhysics.cc.

91{
92 // G4cout << "G4HadronElasticPhysics::ConstructParticle" << G4endl;
93 G4MesonConstructor pMesonConstructor;
94 pMesonConstructor.ConstructParticle();
95
96 G4BaryonConstructor pBaryonConstructor;
97 pBaryonConstructor.ConstructParticle();
98
99 G4IonConstructor pConstructor;
100 pConstructor.ConstructParticle();
101}
static void ConstructParticle()
static void ConstructParticle()
static void ConstructParticle()

◆ ConstructProcess()

void G4HadronElasticPhysics::ConstructProcess ( )
overridevirtual

Implements G4VPhysicsConstructor.

Reimplemented in G4HadronElasticPhysicsHP, G4HadronElasticPhysicsLEND, G4HadronElasticPhysicsPHP, and G4HadronElasticPhysicsXS.

Definition at line 103 of file G4HadronElasticPhysics.cc.

104{
106 G4bool useFactorXS = param->ApplyFactorXS();
109
110 const G4double elimitAntiNuc = 100.*MeV;
111 const G4double delta = 0.1*MeV;
112 G4double emax = std::max(param->GetMaxEnergy(), elimitAntiNuc+delta);
113 if(verbose > 1) {
114 G4cout << "### HadronElasticPhysics::ConstructProcess: "
115 << "Elimit for for anti-neuclei " << elimitAntiNuc/CLHEP::GeV << " GeV"
116 << " for all hadrons Emax(GeV)= " << emax/CLHEP::GeV
117 << G4endl;
118 }
119
120 G4HadronElastic* lhep0 = new G4HadronElastic();
121 G4HadronElastic* lhep2 = new G4HadronElastic();
122 lhep0->SetMaxEnergy(emax);
123 lhep2->SetMaxEnergy(elimitAntiNuc+delta);
124
126 he->SetMaxEnergy(emax);
127
129 anuc->SetMinEnergy(elimitAntiNuc);
130 anuc->SetMaxEnergy(emax);
131
132 auto anucxs = G4HadProcesses::ElasticXS("AntiAGlauber");
133 auto xsNN = G4HadProcesses::ElasticXS("Glauber-Gribov Nucl-nucl");
134
135 // p
138 hel->AddDataSet(new G4BGGNucleonElasticXS(particle));
140 if( useFactorXS ) hel->MultiplyCrossSectionBy( param->XSFactorNucleonElastic() );
141 ph->RegisterProcess(hel, particle);
142
143 // n
144 particle = G4Neutron::Neutron();
145 hel = new G4HadronElasticProcess();
146 hel->AddDataSet(new G4NeutronElasticXS());
148 if( useFactorXS ) hel->MultiplyCrossSectionBy( param->XSFactorNucleonElastic() );
149 ph->RegisterProcess(hel, particle);
150
151 // pi+
152 particle = G4PionPlus::PionPlus();
153 hel = new G4HadronElasticProcess();
154 hel->AddDataSet(new G4BGGPionElasticXS(particle));
155 hel->RegisterMe(he);
156 if( useFactorXS ) hel->MultiplyCrossSectionBy( param->XSFactorPionElastic() );
157 ph->RegisterProcess(hel, particle);
158
159 // pi-
160 particle = G4PionMinus::PionMinus();
161 hel = new G4HadronElasticProcess();
162 hel->AddDataSet(new G4BGGPionElasticXS(particle));
163 hel->RegisterMe(he);
164 if( useFactorXS ) hel->MultiplyCrossSectionBy( param->XSFactorPionElastic() );
165 ph->RegisterProcess(hel, particle);
166
167 // kaons
169
170 // d, t, He3, alpha
171 for( auto & pdg : G4HadParticles::GetLightIons() ) {
172 particle = table->FindParticle( pdg );
173 if ( particle == nullptr ) { continue; }
174
175 hel = new G4HadronElasticProcess();
176 hel->AddDataSet(xsNN);
177 hel->RegisterMe(lhep0);
178 if( useFactorXS ) hel->MultiplyCrossSectionBy( param->XSFactorHadronElastic() );
179 ph->RegisterProcess(hel, particle);
180 }
181
182 // high energy particles
183 if( emax > param->EnergyThresholdForHeavyHadrons() ) {
184
185 // pbar, nbar, anti light ions
186 for( auto & pdg : G4HadParticles::GetLightAntiIons() ) {
187 particle = table->FindParticle( pdg );
188 if ( particle == nullptr ) { continue; }
189
190 hel = new G4HadronElasticProcess();
191 hel->RegisterMe(lhep2);
192 hel->RegisterMe(anuc);
193 hel->AddDataSet(anucxs);
194 if( useFactorXS ) hel->MultiplyCrossSectionBy( param->XSFactorHadronElastic() );
195 ph->RegisterProcess(hel, particle);
196 }
197
198 // hyperons
201
202 // b-, c- baryons and mesons
203 if( G4HadronicParameters::Instance()->EnableBCParticles() ) {
205 }
206 }
207}
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
G4double GetMaxEnergy() const
void MultiplyCrossSectionBy(G4double factor)
void RegisterMe(G4HadronicInteraction *a)
static G4Neutron * Neutron()
Definition: G4Neutron.cc:103
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
static G4ParticleTable * GetParticleTable()
G4bool RegisterProcess(G4VProcess *process, G4ParticleDefinition *particle)
static G4PhysicsListHelper * GetPhysicsListHelper()
static G4PionMinus * PionMinus()
Definition: G4PionMinus.cc:97
static G4PionPlus * PionPlus()
Definition: G4PionPlus.cc:97
static G4Proton * Proton()
Definition: G4Proton.cc:92

Referenced by G4HadronElasticPhysicsHP::ConstructProcess(), G4HadronElasticPhysicsLEND::ConstructProcess(), G4HadronElasticPhysicsPHP::ConstructProcess(), and G4HadronElasticPhysicsXS::ConstructProcess().

◆ GetElasticModel()

G4HadronElastic * G4HadronElasticPhysics::GetElasticModel ( const G4ParticleDefinition part) const

Definition at line 216 of file G4HadronElasticPhysics.cc.

217{
218 G4HadronElastic* mod = nullptr;
220 if(hel) {
221 std::vector<G4HadronicInteraction*>& hi = hel->GetHadronicInteractionList();
222 if( !hi.empty() ) { mod = static_cast<G4HadronElastic*>(hi[0]); }
223 }
224 return mod;
225}
std::vector< G4HadronicInteraction * > & GetHadronicInteractionList()

Referenced by G4HadronElasticPhysicsHP::ConstructProcess(), G4HadronElasticPhysicsLEND::ConstructProcess(), G4HadronElasticPhysicsPHP::ConstructProcess(), and GetNeutronModel().

◆ GetElasticProcess()

G4HadronicProcess * G4HadronElasticPhysics::GetElasticProcess ( const G4ParticleDefinition part) const

◆ GetNeutronModel()

G4HadronElastic * G4HadronElasticPhysics::GetNeutronModel ( ) const

Definition at line 232 of file G4HadronElasticPhysics.cc.

233{
235}
G4HadronElastic * GetElasticModel(const G4ParticleDefinition *part) const

◆ GetNeutronProcess()

G4HadronicProcess * G4HadronElasticPhysics::GetNeutronProcess ( ) const

Definition at line 227 of file G4HadronElasticPhysics.cc.

228{
230}

Member Data Documentation

◆ verbose


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