Geant4 9.6.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 ()
 
virtual void ConstructParticle ()
 
virtual void ConstructProcess ()
 
- 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
 

Additional Inherited Members

- Protected Member Functions inherited from G4VPhysicsConstructor
G4bool RegisterProcess (G4VProcess *process, G4ParticleDefinition *particle)
 
- Protected Attributes inherited from G4VPhysicsConstructor
G4int verboseLevel
 
G4String namePhysics
 
G4int typePhysics
 
G4ParticleTabletheParticleTable
 
G4ParticleTable::G4PTblDicIteratortheParticleIterator
 
G4PhysicsListHelperthePLHelper
 

Detailed Description

Definition at line 45 of file G4HadronDElasticPhysics.hh.

Constructor & Destructor Documentation

◆ G4HadronDElasticPhysics()

G4HadronDElasticPhysics::G4HadronDElasticPhysics ( G4int  ver = 1)

Definition at line 89 of file G4HadronDElasticPhysics.cc.

90 : G4VPhysicsConstructor("hElasticDIFFUSE"), verbose(ver),
91 wasActivated(false)
92{
93 if(verbose > 1) {
94 G4cout << "### G4HadronDElasticPhysics: " << GetPhysicsName()
95 << G4endl;
96 }
97}
#define G4endl
Definition: G4ios.hh:52
G4DLLIMPORT std::ostream G4cout
const G4String & GetPhysicsName() const

◆ ~G4HadronDElasticPhysics()

G4HadronDElasticPhysics::~G4HadronDElasticPhysics ( )
virtual

Definition at line 99 of file G4HadronDElasticPhysics.cc.

100{}

Member Function Documentation

◆ ConstructParticle()

void G4HadronDElasticPhysics::ConstructParticle ( )
virtual

Implements G4VPhysicsConstructor.

Definition at line 102 of file G4HadronDElasticPhysics.cc.

103{
104 // G4cout << "G4HadronDElasticPhysics::ConstructParticle" << G4endl;
105 G4MesonConstructor pMesonConstructor;
106 pMesonConstructor.ConstructParticle();
107
108 G4BaryonConstructor pBaryonConstructor;
109 pBaryonConstructor.ConstructParticle();
110
111 // Construct light ions
112 G4IonConstructor pConstructor;
113 pConstructor.ConstructParticle();
114}
static void ConstructParticle()
static void ConstructParticle()
static void ConstructParticle()

◆ ConstructProcess()

void G4HadronDElasticPhysics::ConstructProcess ( )
virtual

Implements G4VPhysicsConstructor.

Definition at line 116 of file G4HadronDElasticPhysics.cc.

117{
118 if(wasActivated) return;
119 wasActivated = true;
120
121 G4double elimitAntiNuc = 100*MeV;
122 if(verbose > 1) {
123 G4cout << "### HadronDElasticPhysics Construct Processes "
124 << " for anti-neuclei "
125 << elimitAntiNuc/GeV << " GeV" << G4endl;
126 }
127
129 anuc->SetMinEnergy(elimitAntiNuc);
130 G4CrossSectionElastic* anucxs =
132
133 G4HadronElastic* lhep0 = new G4HadronElastic();
134 G4HadronElastic* lhep2 = new G4HadronElastic();
135 lhep2->SetMaxEnergy(elimitAntiNuc);
136
137 G4DiffuseElastic* model = 0;
138
140 while( (*theParticleIterator)() )
141 {
143 G4ProcessManager* pmanager = particle->GetProcessManager();
144 G4String pname = particle->GetParticleName();
145 if(pname == "anti_lambda" ||
146 pname == "anti_neutron" ||
147 pname == "anti_omega-" ||
148 pname == "anti_sigma-" ||
149 pname == "anti_sigma+" ||
150 pname == "anti_xi-" ||
151 pname == "anti_xi0" ||
152 pname == "lambda" ||
153 pname == "omega-" ||
154 pname == "sigma-" ||
155 pname == "sigma+" ||
156 pname == "xi-" ||
157 pname == "alpha" ||
158 pname == "deuteron" ||
159 pname == "triton"
160 ) {
161
163 hel->RegisterMe(lhep0);
164 pmanager->AddDiscreteProcess(hel);
165 if(verbose > 1) {
166 G4cout << "### HadronDElasticPhysics: " << hel->GetProcessName()
167 << " added for " << particle->GetParticleName() << G4endl;
168 }
169
170 } else if(pname == "proton") {
171
173 hel->AddDataSet(new G4BGGNucleonElasticXS(particle));
174 //hel->AddDataSet(new G4CHIPSElasticXS());
175 model = new G4DiffuseElastic();
176 hel->RegisterMe(model);
177 pmanager->AddDiscreteProcess(hel);
178 if(verbose > 1) {
179 G4cout << "### HadronDElasticPhysics: " << hel->GetProcessName()
180 << " added for " << particle->GetParticleName() << G4endl;
181 }
182
183 } else if(pname == "neutron") {
184
186 hel->AddDataSet(new G4NeutronElasticXS());
187 model = new G4DiffuseElastic();
188 hel->RegisterMe(model);
189 pmanager->AddDiscreteProcess(hel);
190 if(verbose > 1) {
191 G4cout << "### HadronDElasticPhysics: "
192 << hel->GetProcessName()
193 << " added for " << particle->GetParticleName() << G4endl;
194 }
195
196 } else if (pname == "pi+" || pname == "pi-") {
197
199 hel->AddDataSet(new G4BGGPionElasticXS(particle));
200 model = new G4DiffuseElastic();
201 hel->RegisterMe(model);
202 pmanager->AddDiscreteProcess(hel);
203 if(verbose > 1) {
204 G4cout << "### HadronDElasticPhysics: " << hel->GetProcessName()
205 << " added for " << particle->GetParticleName() << G4endl;
206 }
207
208 } else if(pname == "kaon-") {
209
212 model = new G4DiffuseElastic();
213 hel->RegisterMe(model);
214 pmanager->AddDiscreteProcess(hel);
215 if(verbose > 1) {
216 G4cout << "### HadronElasticPhysics: " << hel->GetProcessName()
217 << " added for " << particle->GetParticleName() << G4endl;
218 }
219 } else if(pname == "kaon+") {
220
223 model = new G4DiffuseElastic();
224 hel->RegisterMe(model);
225 pmanager->AddDiscreteProcess(hel);
226 if(verbose > 1) {
227 G4cout << "### HadronElasticPhysics: " << hel->GetProcessName()
228 << " added for " << particle->GetParticleName() << G4endl;
229 }
230 } else if(pname == "kaon0S" ||
231 pname == "kaon0L"
232 ) {
233
236 model = new G4DiffuseElastic();
237 hel->RegisterMe(model);
238 pmanager->AddDiscreteProcess(hel);
239 if(verbose > 1) {
240 G4cout << "### HadronElasticPhysics: " << hel->GetProcessName()
241 << " added for " << particle->GetParticleName() << G4endl;
242 }
243 } else if(
244 pname == "anti_proton" ||
245 pname == "anti_alpha" ||
246 pname == "anti_deuteron" ||
247 pname == "anti_triton" ||
248 pname == "anti_He3" ) {
249
251 hel->AddDataSet(anucxs);
252 hel->RegisterMe(lhep2);
253 hel->RegisterMe(anuc);
254 pmanager->AddDiscreteProcess(hel);
255 }
256 }
257
258 //G4double elimit = 1.0*GeV;
259
260 if(verbose > 1) {
261 G4cout << "### HadronDElasticPhysics Construct Processes " << G4endl;
262 }
263}
double G4double
Definition: G4Types.hh:64
G4ComponentAntiNuclNuclearXS * GetComponentCrossSection()
static const char * Default_Name()
static const char * Default_Name()
static G4CrossSectionDataSetRegistry * Instance()
void SetMinEnergy(G4double anEnergy)
void SetMaxEnergy(const G4double anEnergy)
void AddDataSet(G4VCrossSectionDataSet *aDataSet)
void RegisterMe(G4HadronicInteraction *a)
G4ProcessManager * GetProcessManager() const
const G4String & GetParticleName() const
G4int AddDiscreteProcess(G4VProcess *aProcess, G4int ord=ordDefault)
G4ParticleTable::G4PTblDicIterator * theParticleIterator
const G4String & GetProcessName() const
Definition: G4VProcess.hh:379

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