Geant4 11.2.2
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

◆ ~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{
106 G4bool useFactorXS = param->ApplyFactorXS();
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
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
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
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
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: