Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Protected Member Functions
G4VHadronPhysics Class Reference

#include <G4VHadronPhysics.hh>

Inheritance diagram for G4VHadronPhysics:
G4VPhysicsConstructor G4HadronInelasticQBBC IonDPMJETPhysics IonHIJINGPhysics IonUrQMDPhysics

Public Member Functions

 G4VHadronPhysics (const G4String &name="hInelastic", G4int verbose=0)
 
virtual ~G4VHadronPhysics ()
 
virtual void ConstructParticle ()
 
G4HadronicInteractionBuildModel (G4VHadronModelBuilder *, G4double emin, G4double emax)
 
G4HadronicInteractionNewModel (G4HadronicInteraction *, G4double emin, G4double emax)
 
void AddInelasticCrossSection (const G4String &, G4VCrossSectionDataSet *)
 
void AddInelasticCrossSection (const G4ParticleDefinition *, G4VCrossSectionDataSet *)
 
void AddElasticCrossSection (const G4String &, G4VCrossSectionDataSet *)
 
void AddElasticCrossSection (const G4ParticleDefinition *, G4VCrossSectionDataSet *)
 
void AddCaptureCrossSection (G4VCrossSectionDataSet *)
 
void AddFissionCrossSection (G4VCrossSectionDataSet *)
 
- Public Member Functions inherited from G4VPhysicsConstructor
 G4VPhysicsConstructor (const G4String &="")
 
 G4VPhysicsConstructor (const G4String &name, G4int physics_type)
 
virtual ~G4VPhysicsConstructor ()
 
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
 

Protected Member Functions

G4HadronicProcessFindInelasticProcess (const G4String &)
 
G4HadronicProcessFindInelasticProcess (const G4ParticleDefinition *)
 
G4HadronicProcessFindElasticProcess (const G4String &)
 
G4HadronicProcessFindElasticProcess (const G4ParticleDefinition *)
 
G4HadronicProcessFindCaptureProcess ()
 
G4HadronicProcessFindFissionProcess ()
 
- Protected Member Functions inherited from G4VPhysicsConstructor
G4bool RegisterProcess (G4VProcess *process, G4ParticleDefinition *particle)
 

Additional Inherited Members

- Static Public Member Functions inherited from G4VPhysicsConstructor
static const G4VPCManagerGetSubInstanceManager ()
 
- Protected Attributes inherited from G4VPhysicsConstructor
G4int verboseLevel
 
G4String namePhysics
 
G4int typePhysics
 
G4ParticleTabletheParticleTable
 
G4int g4vpcInstanceID
 
- Static Protected Attributes inherited from G4VPhysicsConstructor
static G4RUN_DLL G4VPCManager subInstanceManager
 

Detailed Description

Definition at line 51 of file G4VHadronPhysics.hh.

Constructor & Destructor Documentation

G4VHadronPhysics::G4VHadronPhysics ( const G4String name = "hInelastic",
G4int  verbose = 0 
)

Definition at line 59 of file G4VHadronPhysics.cc.

References G4cout, G4endl, G4VPhysicsConstructor::SetVerboseLevel(), and G4VPhysicsConstructor::verboseLevel.

60  : G4VPhysicsConstructor(aName)
61 {
62  SetVerboseLevel(verb);
63  if (verboseLevel>1) {
64  G4cout << "### G4VHadronPhysics: <" << aName << "> is created "
65  << G4endl;
66  }
67 }
G4GLOB_DLL std::ostream G4cout
void SetVerboseLevel(G4int value)
G4VPhysicsConstructor(const G4String &="")
#define G4endl
Definition: G4ios.hh:61
G4VHadronPhysics::~G4VHadronPhysics ( )
virtual

Definition at line 69 of file G4VHadronPhysics.cc.

References n.

70 {
71  G4int n = builders->size();
72  if(n > 0) {
73  for(G4int i=0; i<n; i++) {delete (*builders)[i];}
74  }
75  delete builders;
76 }
int G4int
Definition: G4Types.hh:78
const G4int n

Member Function Documentation

void G4VHadronPhysics::AddCaptureCrossSection ( G4VCrossSectionDataSet xsec)

Definition at line 189 of file G4VHadronPhysics.cc.

References G4HadronicProcess::AddDataSet(), FindCaptureProcess(), G4cout, G4endl, and G4VPhysicsConstructor::verboseLevel.

190 {
192  if(!had) return;
193  had->AddDataSet(xsec);
194  if (verboseLevel>1) {
195  G4cout << "### G4VHadronPhysics: the capture cross section "
196  << " is added for neutron"
197  << G4endl;
198  }
199 }
G4HadronicProcess * FindCaptureProcess()
void AddDataSet(G4VCrossSectionDataSet *aDataSet)
G4GLOB_DLL std::ostream G4cout
#define G4endl
Definition: G4ios.hh:61
void G4VHadronPhysics::AddElasticCrossSection ( const G4String pname,
G4VCrossSectionDataSet xsec 
)

Definition at line 160 of file G4VHadronPhysics.cc.

References G4ParticleTable::FindParticle(), G4cout, G4endl, and G4ParticleTable::GetParticleTable().

162 {
163  const G4ParticleDefinition* p =
165  if(!p) {
166  G4cout << "### G4VHadronPhysics WARNING: fails to find particle "
167  << pname << G4endl;
168  } else {
169  AddElasticCrossSection(p, xsec);
170  }
171 }
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
const char * p
Definition: xmltok.h:285
G4GLOB_DLL std::ostream G4cout
void AddElasticCrossSection(const G4String &, G4VCrossSectionDataSet *)
static G4ParticleTable * GetParticleTable()
#define G4endl
Definition: G4ios.hh:61
void G4VHadronPhysics::AddElasticCrossSection ( const G4ParticleDefinition p,
G4VCrossSectionDataSet xsec 
)

Definition at line 174 of file G4VHadronPhysics.cc.

References G4HadronicProcess::AddDataSet(), FindElasticProcess(), G4cout, G4endl, G4ParticleDefinition::GetParticleName(), and G4VPhysicsConstructor::verboseLevel.

176 {
177  if(!p) return;
179  if(!had) return;
180  had->AddDataSet(xsec);
181  if (verboseLevel>1) {
182  G4cout << "### G4VHadronPhysics: the inelastic cross section "
183  << " is added for " << p->GetParticleName()
184  << G4endl;
185  }
186 }
const G4String & GetParticleName() const
void AddDataSet(G4VCrossSectionDataSet *aDataSet)
G4GLOB_DLL std::ostream G4cout
#define G4endl
Definition: G4ios.hh:61
G4HadronicProcess * FindElasticProcess(const G4String &)
void G4VHadronPhysics::AddFissionCrossSection ( G4VCrossSectionDataSet xsec)

Definition at line 202 of file G4VHadronPhysics.cc.

References G4HadronicProcess::AddDataSet(), FindFissionProcess(), G4cout, G4endl, and G4VPhysicsConstructor::verboseLevel.

203 {
205  if(!had) return;
206  had->AddDataSet(xsec);
207  if (verboseLevel>1) {
208  G4cout << "### G4VHadronPhysics: the fission cross section "
209  << " is added for neutron"
210  << G4endl;
211  }
212 }
G4HadronicProcess * FindFissionProcess()
void AddDataSet(G4VCrossSectionDataSet *aDataSet)
G4GLOB_DLL std::ostream G4cout
#define G4endl
Definition: G4ios.hh:61
void G4VHadronPhysics::AddInelasticCrossSection ( const G4String pname,
G4VCrossSectionDataSet xsec 
)

Definition at line 131 of file G4VHadronPhysics.cc.

References G4ParticleTable::FindParticle(), G4cout, G4endl, and G4ParticleTable::GetParticleTable().

133 {
134  const G4ParticleDefinition* p =
136  if(!p) {
137  G4cout << "### G4VHadronPhysics WARNING: fails to find particle "
138  << pname << G4endl;
139  } else {
140  AddInelasticCrossSection(p, xsec);
141  }
142 }
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
const char * p
Definition: xmltok.h:285
G4GLOB_DLL std::ostream G4cout
void AddInelasticCrossSection(const G4String &, G4VCrossSectionDataSet *)
static G4ParticleTable * GetParticleTable()
#define G4endl
Definition: G4ios.hh:61
void G4VHadronPhysics::AddInelasticCrossSection ( const G4ParticleDefinition p,
G4VCrossSectionDataSet xsec 
)

Definition at line 145 of file G4VHadronPhysics.cc.

References G4HadronicProcess::AddDataSet(), FindInelasticProcess(), G4cout, G4endl, G4ParticleDefinition::GetParticleName(), and G4VPhysicsConstructor::verboseLevel.

147 {
148  if(!p) return;
150  if(!had) return;
151  had->AddDataSet(xsec);
152  if (verboseLevel>1) {
153  G4cout << "### G4VHadronPhysics: the inelastic cross section "
154  << " is added for " << p->GetParticleName()
155  << G4endl;
156  }
157 }
const G4String & GetParticleName() const
void AddDataSet(G4VCrossSectionDataSet *aDataSet)
G4GLOB_DLL std::ostream G4cout
G4HadronicProcess * FindInelasticProcess(const G4String &)
#define G4endl
Definition: G4ios.hh:61
G4HadronicInteraction * G4VHadronPhysics::BuildModel ( G4VHadronModelBuilder mBuilder,
G4double  emin,
G4double  emax 
)

Definition at line 94 of file G4VHadronPhysics.cc.

References G4cout, G4endl, G4VHadronModelBuilder::GetModel(), G4HadronicInteraction::GetModelName(), python.hepunit::GeV, G4HadronicInteraction::SetMaxEnergy(), G4HadronicInteraction::SetMinEnergy(), and G4VPhysicsConstructor::verboseLevel.

Referenced by G4HadronInelasticQBBC::ConstructProcess().

97 {
98  if ( builders == 0 ) builders = new std::vector<G4VHadronModelBuilder*>;
99  builders->push_back(mBuilder);
100  G4HadronicInteraction* model = mBuilder->GetModel();
101  model->SetMinEnergy(emin);
102  model->SetMaxEnergy(emax);
103  if (verboseLevel>1) {
104  G4cout << "### G4VHadronPhysics <"
105  << model->GetModelName() << " Emin(GeV)= "
106  << emin/GeV << " Emax(GeV)= " << emax/GeV
107  << G4endl;
108  }
109 
110  return model;
111 }
const G4String & GetModelName() const
G4HadronicInteraction * GetModel()
void SetMinEnergy(G4double anEnergy)
G4GLOB_DLL std::ostream G4cout
const XML_Char XML_Content * model
void SetMaxEnergy(const G4double anEnergy)
#define G4endl
Definition: G4ios.hh:61
void G4VHadronPhysics::ConstructParticle ( void  )
virtual

Implements G4VPhysicsConstructor.

Definition at line 78 of file G4VHadronPhysics.cc.

References G4MesonConstructor::ConstructParticle(), G4BaryonConstructor::ConstructParticle(), G4IonConstructor::ConstructParticle(), and G4ShortLivedConstructor::ConstructParticle().

79 {
80  G4MesonConstructor pMesonConstructor;
81  pMesonConstructor.ConstructParticle();
82 
83  G4BaryonConstructor pBaryonConstructor;
84  pBaryonConstructor.ConstructParticle();
85 
86  G4IonConstructor pIonConstructor;
87  pIonConstructor.ConstructParticle();
88 
89  G4ShortLivedConstructor pShortLivedConstructor;
90  pShortLivedConstructor.ConstructParticle();
91 }
static void ConstructParticle()
static void ConstructParticle()
static void ConstructParticle()
G4HadronicProcess * G4VHadronPhysics::FindCaptureProcess ( )
protected

Definition at line 285 of file G4VHadronPhysics.cc.

References G4ProcessManager::AddDiscreteProcess(), fCapture, G4ProcessManager::GetProcessList(), G4ParticleDefinition::GetProcessManager(), n, G4Neutron::Neutron(), and G4ProcessVector::size().

Referenced by AddCaptureCrossSection(), and G4HadronInelasticQBBC::ConstructProcess().

286 {
287  G4HadronicProcess* had = 0;
288  G4ProcessManager* pmanager =
290  G4ProcessVector* pv = pmanager->GetProcessList();
291  size_t n = pv->size();
292  if(0 < n) {
293  for(size_t i=0; i<n; ++i) {
294  if(fCapture == ((*pv)[i])->GetProcessSubType()) {
295  had = static_cast<G4HadronicProcess*>((*pv)[i]);
296  return had;
297  }
298  }
299  }
300  had = new G4HadronCaptureProcess("nCapture");
301  pmanager->AddDiscreteProcess(had);
302  return had;
303 }
G4int AddDiscreteProcess(G4VProcess *aProcess, G4int ord=ordDefault)
G4ProcessManager * GetProcessManager() const
static G4Neutron * Neutron()
Definition: G4Neutron.cc:104
const G4int n
G4int size() const
G4ProcessVector * GetProcessList() const
G4HadronicProcess * G4VHadronPhysics::FindElasticProcess ( const G4String pname)
protected

Definition at line 251 of file G4VHadronPhysics.cc.

References G4ParticleTable::FindParticle(), G4cout, G4endl, and G4ParticleTable::GetParticleTable().

Referenced by AddElasticCrossSection().

252 {
253  G4HadronicProcess* had = 0;
254  const G4ParticleDefinition* p =
256  if(!p) {
257  G4cout << "### G4VHadronPhysics WARNING: fails to find particle "
258  << pname << G4endl;
259  return had;
260  }
261  return FindElasticProcess(p);
262 }
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
const char * p
Definition: xmltok.h:285
G4GLOB_DLL std::ostream G4cout
static G4ParticleTable * GetParticleTable()
#define G4endl
Definition: G4ios.hh:61
G4HadronicProcess * FindElasticProcess(const G4String &)
G4HadronicProcess * G4VHadronPhysics::FindElasticProcess ( const G4ParticleDefinition p)
protected

Definition at line 265 of file G4VHadronPhysics.cc.

References G4ProcessManager::AddDiscreteProcess(), fHadronElastic, G4ProcessManager::GetProcessList(), G4ParticleDefinition::GetProcessManager(), n, and G4ProcessVector::size().

266 {
267  G4HadronicProcess* had = 0;
268  if(!p) return had;
269  G4ProcessManager* pmanager = p->GetProcessManager();
270  G4ProcessVector* pv = pmanager->GetProcessList();
271  size_t n = pv->size();
272  if(0 < n) {
273  for(size_t i=0; i<n; ++i) {
274  if(fHadronElastic == ((*pv)[i])->GetProcessSubType()) {
275  had = static_cast<G4HadronicProcess*>((*pv)[i]);
276  return had;
277  }
278  }
279  }
280  had = new G4HadronElasticProcess("hElastic");
281  pmanager->AddDiscreteProcess(had);
282  return had;
283 }
G4int AddDiscreteProcess(G4VProcess *aProcess, G4int ord=ordDefault)
G4ProcessManager * GetProcessManager() const
const G4int n
G4int size() const
G4ProcessVector * GetProcessList() const
G4HadronicProcess * G4VHadronPhysics::FindFissionProcess ( )
protected

Definition at line 305 of file G4VHadronPhysics.cc.

References G4ProcessManager::AddDiscreteProcess(), fFission, G4ProcessManager::GetProcessList(), G4ParticleDefinition::GetProcessManager(), n, G4Neutron::Neutron(), and G4ProcessVector::size().

Referenced by AddFissionCrossSection().

306 {
307  G4HadronicProcess* had = 0;
308  G4ProcessManager* pmanager =
310  G4ProcessVector* pv = pmanager->GetProcessList();
311  size_t n = pv->size();
312  if(0 < n) {
313  for(size_t i=0; i<n; ++i) {
314  if(fFission == ((*pv)[i])->GetProcessSubType()) {
315  had = static_cast<G4HadronicProcess*>((*pv)[i]);
316  return had;
317  }
318  }
319  }
320  had = new G4HadronFissionProcess("nFission");
321  pmanager->AddDiscreteProcess(had);
322  return had;
323 }
G4int AddDiscreteProcess(G4VProcess *aProcess, G4int ord=ordDefault)
G4ProcessManager * GetProcessManager() const
static G4Neutron * Neutron()
Definition: G4Neutron.cc:104
const G4int n
G4int size() const
G4ProcessVector * GetProcessList() const
G4HadronicProcess * G4VHadronPhysics::FindInelasticProcess ( const G4String pname)
protected

Definition at line 215 of file G4VHadronPhysics.cc.

References G4ParticleTable::FindParticle(), G4cout, G4endl, and G4ParticleTable::GetParticleTable().

Referenced by AddInelasticCrossSection(), and G4HadronInelasticQBBC::ConstructProcess().

216 {
217  G4HadronicProcess* had = 0;
218  const G4ParticleDefinition* p =
220  if(!p) {
221  G4cout << "### G4VHadronPhysics WARNING: fails to find particle "
222  << pname << G4endl;
223  return had;
224  }
225  return FindInelasticProcess(p);
226 }
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
const char * p
Definition: xmltok.h:285
G4GLOB_DLL std::ostream G4cout
G4HadronicProcess * FindInelasticProcess(const G4String &)
static G4ParticleTable * GetParticleTable()
#define G4endl
Definition: G4ios.hh:61
G4HadronicProcess * G4VHadronPhysics::FindInelasticProcess ( const G4ParticleDefinition p)
protected

Definition at line 229 of file G4VHadronPhysics.cc.

References G4ProcessManager::AddDiscreteProcess(), fHadronInelastic, G4ParticleDefinition::GetParticleName(), G4ProcessManager::GetProcessList(), G4ParticleDefinition::GetProcessManager(), n, and G4ProcessVector::size().

230 {
231  G4HadronicProcess* had = 0;
232  if(!p) return had;
233  G4ProcessManager* pmanager = p->GetProcessManager();
234  G4ProcessVector* pv = pmanager->GetProcessList();
235  size_t n = pv->size();
236  if(0 < n) {
237  for(size_t i=0; i<n; ++i) {
238  if(fHadronInelastic == ((*pv)[i])->GetProcessSubType()) {
239  had = static_cast<G4HadronicProcess*>((*pv)[i]);
240  return had;
241  }
242  }
243  }
244  G4ParticleDefinition* part = const_cast<G4ParticleDefinition*>(p);
245  had = new G4HadronInelasticProcess(part->GetParticleName()+"Inelastic",part);
246  pmanager->AddDiscreteProcess(had);
247  return had;
248 }
const char * p
Definition: xmltok.h:285
G4int AddDiscreteProcess(G4VProcess *aProcess, G4int ord=ordDefault)
G4ProcessManager * GetProcessManager() const
const G4String & GetParticleName() const
const G4int n
G4int size() const
G4ProcessVector * GetProcessList() const
G4HadronicInteraction * G4VHadronPhysics::NewModel ( G4HadronicInteraction model,
G4double  emin,
G4double  emax 
)

Definition at line 114 of file G4VHadronPhysics.cc.

References G4cout, G4endl, G4HadronicInteraction::GetModelName(), python.hepunit::GeV, G4HadronicInteraction::SetMaxEnergy(), G4HadronicInteraction::SetMinEnergy(), and G4VPhysicsConstructor::verboseLevel.

Referenced by G4HadronInelasticQBBC::ConstructProcess().

117 {
118  if(!model) return model;
119  model->SetMinEnergy(emin);
120  model->SetMaxEnergy(emax);
121  if (verboseLevel>1) {
122  G4cout << "### G4VHadronPhysics <"
123  << model->GetModelName() << " Emin(GeV)= "
124  << emin/GeV << " Emax(GeV)= " << emax/GeV
125  << G4endl;
126  }
127  return model;
128 }
const G4String & GetModelName() const
void SetMinEnergy(G4double anEnergy)
G4GLOB_DLL std::ostream G4cout
const XML_Char XML_Content * model
void SetMaxEnergy(const G4double anEnergy)
#define G4endl
Definition: G4ios.hh:61

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