Belle II Software  release-05-01-25
ProtonPhysics.cc
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(c) 2018 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributor: Dennis Wright (SLAC) *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 
11 #include <simulation/physicslist/ProtonPhysics.h>
12 
13 #include "G4ProcessManager.hh"
14 #include "G4ProtonInelasticProcess.hh"
15 #include "G4HadronElasticProcess.hh"
16 
17 #include "G4CascadeInterface.hh"
18 #include "G4TheoFSGenerator.hh"
19 #include "G4FTFModel.hh"
20 #include "G4ExcitedStringDecay.hh"
21 #include "G4LundStringFragmentation.hh"
22 #include "G4GeneratorPrecompoundInterface.hh"
23 #include "G4ChipsElasticModel.hh"
24 
25 #include "G4BGGNucleonInelasticXS.hh"
26 #include "G4ChipsProtonElasticXS.hh"
27 
28 #include "G4SystemOfUnits.hh"
29 
30 using namespace Belle2;
31 using namespace Simulation;
32 
33 
34 ProtonPhysics::ProtonPhysics()
35  : m_ftfp(nullptr), m_stringModel(nullptr), m_stringDecay(nullptr),
36  m_fragModel(nullptr), m_preCompoundModel(nullptr)
37 {}
38 
39 
40 ProtonPhysics::~ProtonPhysics()
41 {
42  delete m_stringDecay;
43  delete m_stringModel;
44  delete m_fragModel;
45  delete m_preCompoundModel;
46 }
47 
48 
50 {
51  // Low energy elastic model
52  G4ChipsElasticModel* elMod = new G4ChipsElasticModel();
53 
54  // Use Bertini cascade for low energies
55  G4CascadeInterface* loInelModel = new G4CascadeInterface;
56  loInelModel->SetMinEnergy(0.0);
57  loInelModel->SetMaxEnergy(12.0 * GeV);
58 
59  // Use FTFP for high energies ==>> eventually replace this with new class FTFPInterface
60  m_ftfp = new G4TheoFSGenerator("FTFP");
61  m_stringModel = new G4FTFModel;
63  new G4ExcitedStringDecay(m_fragModel = new G4LundStringFragmentation);
64  m_stringModel->SetFragmentationModel(m_stringDecay);
65  m_preCompoundModel = new G4GeneratorPrecompoundInterface();
66 
67  m_ftfp->SetHighEnergyGenerator(m_stringModel);
68  m_ftfp->SetTransport(m_preCompoundModel);
69  m_ftfp->SetMinEnergy(5 * GeV);
70  m_ftfp->SetMaxEnergy(100 * TeV);
71 
72  // Inelastic cross section
73  G4BGGNucleonInelasticXS* inelCS = new G4BGGNucleonInelasticXS(G4Proton::Proton());
74  G4ChipsProtonElasticXS* elCS = new G4ChipsProtonElasticXS;
75 
76  G4ProcessManager* procMan = G4Proton::Proton()->GetProcessManager();
77 
78  // Elastic process
79  G4HadronElasticProcess* pProcEl = new G4HadronElasticProcess;
80  pProcEl->RegisterMe(elMod);
81  pProcEl->AddDataSet(elCS);
82  procMan->AddDiscreteProcess(pProcEl);
83 
84  // Inelastic process
85  G4ProtonInelasticProcess* pProcInel = new G4ProtonInelasticProcess;
86  pProcInel->RegisterMe(loInelModel);
87  pProcInel->RegisterMe(m_ftfp);
88  pProcInel->AddDataSet(inelCS);
89  procMan->AddDiscreteProcess(pProcInel);
90 }
91 
92 
94 {}
95 
Belle2::Simulation::ProtonPhysics::m_ftfp
G4TheoFSGenerator * m_ftfp
Final state generator for QCD string models.
Definition: ProtonPhysics.h:46
Belle2::Simulation::ProtonPhysics::m_preCompoundModel
G4GeneratorPrecompoundInterface * m_preCompoundModel
Precompound model to deexcite post-collision nucleus.
Definition: ProtonPhysics.h:58
Belle2::Simulation::ProtonPhysics::m_fragModel
G4LundStringFragmentation * m_fragModel
Lund string fragmentation model.
Definition: ProtonPhysics.h:55
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::Simulation::ProtonPhysics::ConstructParticle
virtual void ConstructParticle() override
Build all particle types used in physics list (empty in this class)
Definition: ProtonPhysics.cc:93
Belle2::Simulation::ProtonPhysics::ConstructProcess
virtual void ConstructProcess() override
Build processes, models, cross sections used in physics list.
Definition: ProtonPhysics.cc:49
Belle2::Simulation::ProtonPhysics::m_stringModel
G4FTFModel * m_stringModel
Fritiof string model.
Definition: ProtonPhysics.h:49
Belle2::Simulation::ProtonPhysics::m_stringDecay
G4ExcitedStringDecay * m_stringDecay
Model to decay strings into hadrons.
Definition: ProtonPhysics.h:52