ECCE @ EIC Software
Reference for
ECCE @ EIC
simulation and reconstruction software on GitHub
Home page
Related Pages
Modules
Namespaces
Classes
Files
External Links
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
PionPhysics.cc
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file PionPhysics.cc
1
// $Id: $
3
// //
4
// File: PionPhysics.cc //
5
// Description: Pion hadronic physics constructor for EICPhysicsList //
6
// //
7
// Author: Dennis H. Wright (SLAC) //
8
// Date: 21 June 2018 //
9
// //
11
12
13
#include "
PionPhysics.hh
"
14
15
#include <Geant4/G4MesonConstructor.hh>
16
17
#include <Geant4/G4ProcessManager.hh>
18
#include <Geant4/G4PionPlusInelasticProcess.hh>
19
#include <Geant4/G4PionMinusInelasticProcess.hh>
20
#include <Geant4/G4HadronElasticProcess.hh>
21
#include <Geant4/G4HadronicAbsorptionBertini.hh>
22
23
#include <Geant4/G4CascadeInterface.hh>
24
#include <Geant4/G4TheoFSGenerator.hh>
25
#include <Geant4/G4FTFModel.hh>
26
#include <Geant4/G4ExcitedStringDecay.hh>
27
#include <Geant4/G4LundStringFragmentation.hh>
28
#include <Geant4/G4GeneratorPrecompoundInterface.hh>
29
#include <Geant4/G4HadronElastic.hh>
30
#include <Geant4/G4ElasticHadrNucleusHE.hh>
31
32
#include <Geant4/G4PiNuclearCrossSection.hh>
33
#include <Geant4/G4CrossSectionPairGG.hh>
34
#include <Geant4/G4BGGPionElasticXS.hh>
35
36
#include <Geant4/G4SystemOfUnits.hh>
37
38
39
PionPhysics::PionPhysics
():
40
ftfp(nullptr),
41
stringModel(nullptr),
42
stringDecay(nullptr),
43
fragModel(nullptr),
44
preCompoundModel(nullptr)
45
46
{}
47
48
49
PionPhysics::~PionPhysics
()
50
{
51
delete
stringDecay
;
52
delete
stringModel
;
53
delete
fragModel
;
54
delete
preCompoundModel
;
55
}
56
57
58
void
PionPhysics::ConstructParticle
()
59
{}
60
61
62
void
PionPhysics::ConstructProcess
()
63
{
64
G4ProcessManager
* procMan;
65
66
// Low energy elastic model
67
G4HadronElastic
* loElModel =
new
G4HadronElastic
();
68
loElModel->
SetMaxEnergy
(1.0001*
GeV
);
69
70
// High energy elastic model
71
G4ElasticHadrNucleusHE
* hiElModel =
new
G4ElasticHadrNucleusHE
();
72
hiElModel->
SetMinEnergy
(1.0*
GeV
);
73
74
// Use Bertini cascade for low energies
75
G4CascadeInterface
* loInelModel =
new
G4CascadeInterface
;
76
loInelModel->
SetMinEnergy
(0.0);
77
loInelModel->
SetMaxEnergy
(12.0*
GeV
);
78
79
// Use FTFP for high energies ==>> eventually replace this with new class FTFPInterface
80
ftfp
=
new
G4TheoFSGenerator
(
"FTFP"
);
81
stringModel
=
new
G4FTFModel
;
82
stringDecay
=
83
new
G4ExcitedStringDecay
(
fragModel
=
new
G4LundStringFragmentation
);
84
stringModel
->
SetFragmentationModel
(
stringDecay
);
85
preCompoundModel
=
new
G4GeneratorPrecompoundInterface
();
86
87
ftfp
->
SetHighEnergyGenerator
(
stringModel
);
88
ftfp
->
SetTransport
(
preCompoundModel
);
89
ftfp
->
SetMinEnergy
(10*
GeV
);
90
ftfp
->
SetMaxEnergy
(100*
TeV
);
91
92
// Inelastic cross section
93
G4VCrossSectionDataSet
* piCS =
new
G4CrossSectionPairGG
(
new
G4PiNuclearCrossSection
, 91*
GeV
);
94
96
// pi+ //
98
99
procMan =
G4PionPlus::PionPlus
()->
GetProcessManager
();
100
101
// elastic
102
G4HadronElasticProcess
* pipProcEl =
new
G4HadronElasticProcess
;
103
pipProcEl->
RegisterMe
(loElModel);
104
pipProcEl->
RegisterMe
(hiElModel);
105
pipProcEl->
AddDataSet
(
new
G4BGGPionElasticXS
(
G4PionPlus::PionPlus
() ) );
106
procMan->
AddDiscreteProcess
(pipProcEl);
107
108
// inelastic
109
G4PionPlusInelasticProcess
* pipProcInel =
new
G4PionPlusInelasticProcess
;
110
pipProcInel->
RegisterMe
(loInelModel);
111
pipProcInel->
RegisterMe
(
ftfp
);
112
pipProcInel->
AddDataSet
(piCS);
113
procMan->
AddDiscreteProcess
(pipProcInel);
114
116
// pi- //
118
119
procMan =
G4PionMinus::PionMinus
()->
GetProcessManager
();
120
121
// elastic
122
G4HadronElasticProcess
* pimProcEl =
new
G4HadronElasticProcess
;
123
pimProcEl->
RegisterMe
(loElModel);
124
pimProcEl->
RegisterMe
(hiElModel);
125
pimProcEl->
AddDataSet
(
new
G4BGGPionElasticXS
(
G4PionMinus::PionMinus
() ) );
126
procMan->
AddDiscreteProcess
(pimProcEl);
127
128
// inelastic
129
G4PionMinusInelasticProcess
* pimProcInel =
new
G4PionMinusInelasticProcess
;
130
pimProcInel->
RegisterMe
(loInelModel);
131
pimProcInel->
RegisterMe
(
ftfp
);
132
pimProcInel->
AddDataSet
(piCS);
133
procMan->
AddDiscreteProcess
(pimProcInel);
134
135
// stopping
136
G4HadronicAbsorptionBertini
* bertAbsorb =
new
G4HadronicAbsorptionBertini
;
137
procMan->
AddRestProcess
(bertAbsorb);
138
139
}
140
coresoftware
blob
master
simulation
g4simulation
EICPhysicsList
PionPhysics.cc
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:24:40
using
1.8.2 with
ECCE GitHub integration