ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ProtonPhysics.cc
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file ProtonPhysics.cc
1 // $Id: $
3 // //
4 // File: ProtonPhysics.cc //
5 // Description: Proton hadronic physics constructor for EICPhysicsList //
6 // //
7 // Author: Dennis H. Wright (SLAC) //
8 // Date: 22 June 2018 //
9 // //
11 
12 
13 #include "ProtonPhysics.hh"
14 
15 #include <Geant4/G4ProcessManager.hh>
16 #include <Geant4/G4ProtonInelasticProcess.hh>
17 #include <Geant4/G4HadronElasticProcess.hh>
18 
19 #include <Geant4/G4CascadeInterface.hh>
20 #include <Geant4/G4TheoFSGenerator.hh>
21 #include <Geant4/G4FTFModel.hh>
22 #include <Geant4/G4ExcitedStringDecay.hh>
23 #include <Geant4/G4LundStringFragmentation.hh>
24 #include <Geant4/G4GeneratorPrecompoundInterface.hh>
25 #include <Geant4/G4ChipsElasticModel.hh>
26 
27 #include <Geant4/G4BGGNucleonInelasticXS.hh>
28 #include <Geant4/G4ChipsProtonElasticXS.hh>
29 
30 #include <Geant4/G4SystemOfUnits.hh>
31 
32 
34  ftfp(nullptr),
35  stringModel(nullptr),
36  stringDecay(nullptr),
37  fragModel(nullptr),
38  preCompoundModel(nullptr)
39 {}
40 
41 
43 {
44  delete stringDecay;
45  delete stringModel;
46  delete fragModel;
47  delete preCompoundModel;
48 }
49 
50 
52 {
53  // Low energy elastic model
55 
56  // Use Bertini cascade for low energies
57  G4CascadeInterface* loInelModel = new G4CascadeInterface;
58  loInelModel->SetMinEnergy(0.0);
59  loInelModel->SetMaxEnergy(12.0*GeV);
60 
61  // Use FTFP for high energies ==>> eventually replace this with new class FTFPInterface
62  ftfp = new G4TheoFSGenerator("FTFP");
63  stringModel = new G4FTFModel;
64  stringDecay =
68 
71  ftfp->SetMinEnergy(5*GeV);
72  ftfp->SetMaxEnergy(100*TeV);
73 
74  // Inelastic cross section
77 
79 
80  // Elastic process
82  pProcEl->RegisterMe(elMod);
83  pProcEl->AddDataSet(elCS);
84  procMan->AddDiscreteProcess(pProcEl);
85 
86  // Inelastic process
88  pProcInel->RegisterMe(loInelModel);
89  pProcInel->RegisterMe(ftfp);
90  pProcInel->AddDataSet(inelCS);
91  procMan->AddDiscreteProcess(pProcInel);
92 
93 }
94 
95 
97 {}
98