ECCE @ EIC Software
 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 
40  ftfp(nullptr),
41  stringModel(nullptr),
42  stringDecay(nullptr),
43  fragModel(nullptr),
44  preCompoundModel(nullptr)
45 
46 {}
47 
48 
50 {
51  delete stringDecay;
52  delete stringModel;
53  delete fragModel;
54  delete preCompoundModel;
55 }
56 
57 
59 {}
60 
61 
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
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 =
86 
89  ftfp->SetMinEnergy(10*GeV);
90  ftfp->SetMaxEnergy(100*TeV);
91 
92  // Inelastic cross section
94 
96  // pi+ //
98 
100 
101  // elastic
103  pipProcEl->RegisterMe(loElModel);
104  pipProcEl->RegisterMe(hiElModel);
106  procMan->AddDiscreteProcess(pipProcEl);
107 
108  // inelastic
110  pipProcInel->RegisterMe(loInelModel);
111  pipProcInel->RegisterMe(ftfp);
112  pipProcInel->AddDataSet(piCS);
113  procMan->AddDiscreteProcess(pipProcInel);
114 
116  // pi- //
118 
120 
121  // elastic
123  pimProcEl->RegisterMe(loElModel);
124  pimProcEl->RegisterMe(hiElModel);
126  procMan->AddDiscreteProcess(pimProcEl);
127 
128  // inelastic
130  pimProcInel->RegisterMe(loInelModel);
131  pimProcInel->RegisterMe(ftfp);
132  pimProcInel->AddDataSet(piCS);
133  procMan->AddDiscreteProcess(pimProcInel);
134 
135  // stopping
137  procMan->AddRestProcess(bertAbsorb);
138 
139 }
140