Geant4
10.03.p01
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Pages
G4HadronElasticPhysicsXS.cc
Go to the documentation of this file.
1
//
2
// ********************************************************************
3
// * License and Disclaimer *
4
// * *
5
// * The Geant4 software is copyright of the Copyright Holders of *
6
// * the Geant4 Collaboration. It is provided under the terms and *
7
// * conditions of the Geant4 Software License, included in the file *
8
// * LICENSE and available at http://cern.ch/geant4/license . These *
9
// * include a list of copyright holders. *
10
// * *
11
// * Neither the authors of this software system, nor their employing *
12
// * institutes,nor the agencies providing financial support for this *
13
// * work make any representation or warranty, express or implied, *
14
// * regarding this software system or assume any liability for its *
15
// * use. Please see the license in the file LICENSE and URL above *
16
// * for the full disclaimer and the limitation of liability. *
17
// * *
18
// * This code implementation is the result of the scientific and *
19
// * technical work of the GEANT4 collaboration. *
20
// * By using, copying, modifying or distributing the software (or *
21
// * any work based on the software) you agree to acknowledge its *
22
// * use in resulting scientific publications, and indicate your *
23
// * acceptance of all terms of the Geant4 Software license. *
24
// ********************************************************************
25
//
26
// $Id: G4HadronElasticPhysicsXS.cc 83699 2014-09-10 07:18:25Z gcosmo $
27
//
28
//---------------------------------------------------------------------------
29
//
30
// ClassName: G4HadronElasticPhysicsXS
31
//
32
// Author: 3 June 2010 V. Ivanchenko
33
//
34
// Modified:
35
// 03.06.2011 V.Ivanchenko change design - now first default constructor
36
// is called, XS cross section is added on top
37
//
38
//----------------------------------------------------------------------------
39
//
40
// XS cross sections for neutrons
41
42
#include "
G4HadronElasticPhysicsXS.hh
"
43
#include "
G4HadronElasticPhysics.hh
"
44
#include "
G4HadronicProcessType.hh
"
45
#include "
G4HadronicProcess.hh
"
46
#include "
G4ProcessManager.hh
"
47
#include "
G4VCrossSectionDataSet.hh
"
48
#include "
G4Neutron.hh
"
49
#include "
G4Proton.hh
"
50
#include "
G4PionPlus.hh
"
51
#include "
G4PionMinus.hh
"
52
#include "
G4BGGNucleonElasticXS.hh
"
53
#include "
G4BGGPionElasticXS.hh
"
54
#include "
G4NeutronElasticXS.hh
"
55
56
#include "
G4CrossSectionDataSetRegistry.hh
"
57
// factory
58
#include "
G4PhysicsConstructorFactory.hh
"
59
//
60
G4_DECLARE_PHYSCONSTR_FACTORY
(
G4HadronElasticPhysicsXS
);
61
62
G4ThreadLocal
G4bool
G4HadronElasticPhysicsXS::wasActivated =
false
;
63
G4ThreadLocal
G4HadronElasticPhysics
* G4HadronElasticPhysicsXS::mainElasticBuilder = 0;
64
65
G4HadronElasticPhysicsXS::G4HadronElasticPhysicsXS
(
G4int
ver)
66
:
G4VPhysicsConstructor
(
"hElasticWEL_CHIPS_XS"
), verbose(ver)
67
{
68
if
(verbose > 1) {
69
G4cout
<<
"### G4HadronElasticPhysicsHP: "
<<
GetPhysicsName
()
70
<<
G4endl
;
71
}
72
mainElasticBuilder =
new
G4HadronElasticPhysics
(verbose);
73
}
74
75
G4HadronElasticPhysicsXS::~G4HadronElasticPhysicsXS
()
76
{
77
delete
mainElasticBuilder;
78
}
79
80
void
G4HadronElasticPhysicsXS::ConstructParticle
()
81
{
82
// G4cout << "G4HadronElasticPhysics::ConstructParticle" << G4endl;
83
mainElasticBuilder->
ConstructParticle
();
84
}
85
86
void
G4HadronElasticPhysicsXS::ConstructProcess
()
87
{
88
if
(wasActivated) {
return
; }
89
wasActivated =
true
;
90
91
//Needed because this is a TLS object and this method is called by all threads
92
if
( ! mainElasticBuilder ) mainElasticBuilder =
new
G4HadronElasticPhysics
(verbose);
93
mainElasticBuilder->
ConstructProcess
();
94
95
mainElasticBuilder->
GetNeutronProcess
()->
96
AddDataSet(
G4CrossSectionDataSetRegistry::Instance
()->GetCrossSectionDataSet(
G4NeutronElasticXS::Default_Name
()));
97
98
const
G4ParticleDefinition
* part =
G4Proton::Proton
();
99
AddXSection
(part,
new
G4BGGNucleonElasticXS
(part));
100
/*
101
part = G4PionPlus::PionPlus();
102
AddXSection(part, new G4BGGPionElasticXS(part));
103
104
part = G4PionMinus::PionMinus();
105
AddXSection(part, new G4BGGPionElasticXS(part));
106
*/
107
108
if
(verbose > 1) {
109
G4cout
<<
"### G4HadronElasticPhysicsXS is constructed "
110
<<
G4endl
;
111
}
112
}
113
114
void
115
G4HadronElasticPhysicsXS::AddXSection
(
const
G4ParticleDefinition
* part,
116
G4VCrossSectionDataSet
* cross)
117
{
118
G4ProcessVector
* pv = part->
GetProcessManager
()->
GetPostStepProcessVector
();
119
size_t
n
= pv->
size
();
120
if
(0 < n) {
121
for
(
size_t
i=0; i<
n
; ++i) {
122
if
((*pv)[i]->GetProcessSubType() ==
fHadronElastic
) {
123
G4HadronicProcess
* hp =
static_cast<
G4HadronicProcess
*
>
((*pv)[i]);
124
hp->
AddDataSet
(cross);
125
return
;
126
}
127
}
128
}
129
}
130
G4BGGNucleonElasticXS.hh
G4PionPlus.hh
G4HadronElasticPhysics::ConstructProcess
virtual void ConstructProcess()
Definition:
G4HadronElasticPhysics.cc:113
G4HadronElasticPhysics::GetNeutronProcess
G4HadronicProcess * GetNeutronProcess()
Definition:
G4HadronElasticPhysics.cc:264
fHadronElastic
Definition:
G4HadronicProcessType.hh:44
G4HadronElasticPhysics.hh
G4HadronElasticPhysics::ConstructParticle
virtual void ConstructParticle()
Definition:
G4HadronElasticPhysics.cc:100
G4CrossSectionDataSetRegistry.hh
G4HadronElasticPhysics
Definition:
G4HadronElasticPhysics.hh:52
G4ParticleDefinition
Definition:
G4ParticleDefinition.hh:72
G4ThreadLocal
#define G4ThreadLocal
Definition:
tls.hh:89
G4VCrossSectionDataSet
Definition:
G4VCrossSectionDataSet.hh:71
G4HadronElasticPhysicsXS.hh
G4int
int G4int
Definition:
G4Types.hh:78
G4HadronElasticPhysicsXS
Definition:
G4HadronElasticPhysicsXS.hh:49
G4VCrossSectionDataSet.hh
G4HadronicProcess::AddDataSet
void AddDataSet(G4VCrossSectionDataSet *aDataSet)
Definition:
G4HadronicProcess.hh:111
G4cout
G4GLOB_DLL std::ostream G4cout
G4HadronElasticPhysicsXS::AddXSection
void AddXSection(const G4ParticleDefinition *, G4VCrossSectionDataSet *)
Definition:
G4HadronElasticPhysicsXS.cc:115
G4HadronicProcess
Definition:
G4HadronicProcess.hh:69
G4BGGPionElasticXS.hh
G4Neutron.hh
G4bool
bool G4bool
Definition:
G4Types.hh:79
G4Proton.hh
G4CrossSectionDataSetRegistry::Instance
static G4CrossSectionDataSetRegistry * Instance()
Definition:
G4CrossSectionDataSetRegistry.cc:79
G4Proton::Proton
static G4Proton * Proton()
Definition:
G4Proton.cc:93
G4ProcessManager.hh
G4VPhysicsConstructor::GetPhysicsName
const G4String & GetPhysicsName() const
Definition:
G4VPhysicsConstructor.hh:195
G4HadronElasticPhysicsXS::~G4HadronElasticPhysicsXS
virtual ~G4HadronElasticPhysicsXS()
Definition:
G4HadronElasticPhysicsXS.cc:75
G4ProcessVector::size
G4int size() const
G4NeutronElasticXS.hh
G4PionMinus.hh
G4HadronElasticPhysicsXS::ConstructProcess
virtual void ConstructProcess()
Definition:
G4HadronElasticPhysicsXS.cc:86
G4ParticleDefinition::GetProcessManager
G4ProcessManager * GetProcessManager() const
Definition:
G4ParticleDefinition.cc:247
G4PhysicsConstructorFactory.hh
G4HadronElasticPhysicsXS::ConstructParticle
virtual void ConstructParticle()
Definition:
G4HadronElasticPhysicsXS.cc:80
G4ProcessVector
Definition:
G4ProcessVector.hh:46
G4HadronicProcessType.hh
G4NeutronElasticXS::Default_Name
static const char * Default_Name()
Definition:
G4NeutronElasticXS.hh:69
G4endl
#define G4endl
Definition:
G4ios.hh:61
G4BGGNucleonElasticXS
Definition:
G4BGGNucleonElasticXS.hh:65
G4HadronicProcess.hh
CLHEP::detail::n
n
Definition:
Ranlux64Engine.cc:88
G4HadronElasticPhysicsXS::G4HadronElasticPhysicsXS
G4HadronElasticPhysicsXS(G4int ver=1)
Definition:
G4HadronElasticPhysicsXS.cc:65
G4VPhysicsConstructor
Definition:
G4VPhysicsConstructor.hh:121
G4_DECLARE_PHYSCONSTR_FACTORY
#define G4_DECLARE_PHYSCONSTR_FACTORY(physics_constructor)
Definition:
G4PhysicsConstructorFactory.hh:60
G4ProcessManager::GetPostStepProcessVector
G4ProcessVector * GetPostStepProcessVector(G4ProcessVectorTypeIndex typ=typeGPIL) const
geant4.10.03.p01
source
physics_lists
constructors
hadron_elastic
src
G4HadronElasticPhysicsXS.cc
Generated on Thu Mar 16 2017 22:37:59 for Geant4 by
1.8.5