Belle II Software  release-05-01-25
GammaLeptoNuclearPhysics.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/GammaLeptoNuclearPhysics.h>
12 
13 #include "G4ProcessManager.hh"
14 #include "G4PhotoNuclearProcess.hh"
15 #include "G4ElectronNuclearProcess.hh"
16 #include "G4PositronNuclearProcess.hh"
17 #include "G4MuonNuclearProcess.hh"
18 
19 #include "G4CascadeInterface.hh"
20 #include "G4ElectroVDNuclearModel.hh"
21 #include "G4MuonVDNuclearModel.hh"
22 
23 #include "G4TheoFSGenerator.hh"
24 #include "G4ExcitedStringDecay.hh"
25 #include "G4QGSMFragmentation.hh"
26 #include "G4GeneratorPrecompoundInterface.hh"
27 
28 #include "G4SystemOfUnits.hh"
29 
30 using namespace Belle2;
31 using namespace Simulation;
32 
33 
34 GammaLeptoNuclearPhysics::GammaLeptoNuclearPhysics()
35  : m_qgsp(nullptr), m_stringModel(nullptr), m_stringDecay(nullptr),
36  m_fragModel(nullptr), m_preCompoundModel(nullptr)
37 {}
38 
39 
40 GammaLeptoNuclearPhysics::~GammaLeptoNuclearPhysics()
41 {
42  delete m_stringDecay;
43  delete m_stringModel;
44  delete m_fragModel;
45  delete m_preCompoundModel;
46 }
47 
48 
50 {
51  // Use Bertini cascade for low energies
52  G4CascadeInterface* theGammaReaction = new G4CascadeInterface;
53  theGammaReaction->SetMinEnergy(0.0);
54  theGammaReaction->SetMaxEnergy(3.5 * GeV);
55 
56  // Use QGSP for high energies
57  m_qgsp = new G4TheoFSGenerator("QGSP");
58  m_stringModel = new G4QGSModel<G4GammaParticipants>;
60  new G4ExcitedStringDecay(m_fragModel = new G4QGSMFragmentation);
61  m_stringModel->SetFragmentationModel(m_stringDecay);
62  m_preCompoundModel = new G4GeneratorPrecompoundInterface();
63 
64  m_qgsp->SetHighEnergyGenerator(m_stringModel);
65  m_qgsp->SetTransport(m_preCompoundModel);
66  m_qgsp->SetMinEnergy(3 * GeV);
67  m_qgsp->SetMaxEnergy(100 * TeV);
68 
69  // Lepto-nuclear models
70  G4ElectroVDNuclearModel* evdn = new G4ElectroVDNuclearModel;
71  G4MuonVDNuclearModel* mvdn = new G4MuonVDNuclearModel;
72 
73 
74  G4ProcessManager* procMan = 0;
75 
76  // Gamma
77  procMan = G4Gamma::Gamma()->GetProcessManager();
78  G4PhotoNuclearProcess* pnProc = new G4PhotoNuclearProcess;
79  pnProc->RegisterMe(theGammaReaction);
80  pnProc->RegisterMe(m_qgsp);
81  procMan->AddDiscreteProcess(pnProc);
82 
83  // Electron
84  procMan = G4Electron::Electron()->GetProcessManager();
85  G4ElectronNuclearProcess* emn = new G4ElectronNuclearProcess;
86  emn->RegisterMe(evdn);
87  procMan->AddDiscreteProcess(emn);
88 
89  // Positron
90  procMan = G4Positron::Positron()->GetProcessManager();
91  G4PositronNuclearProcess* epn = new G4PositronNuclearProcess;
92  epn->RegisterMe(evdn);
93  procMan->AddDiscreteProcess(epn);
94 
95  // Muon-
96  procMan = G4MuonMinus::MuonMinus()->GetProcessManager();
97  G4MuonNuclearProcess* mun = new G4MuonNuclearProcess;
98  mun->RegisterMe(mvdn);
99  procMan->AddDiscreteProcess(mun);
100 
101  // Muon+
102  procMan = G4MuonPlus::MuonPlus()->GetProcessManager();
103  procMan->AddDiscreteProcess(mun);
104 
105 }
106 
107 
109 {}
110 
Belle2::Simulation::GammaLeptoNuclearPhysics::m_qgsp
G4TheoFSGenerator * m_qgsp
Final state generator for QCD string models.
Definition: GammaLeptoNuclearPhysics.h:48
Belle2::Simulation::GammaLeptoNuclearPhysics::m_stringDecay
G4ExcitedStringDecay * m_stringDecay
Model to decay strings into hadrons.
Definition: GammaLeptoNuclearPhysics.h:54
Belle2::Simulation::GammaLeptoNuclearPhysics::m_preCompoundModel
G4GeneratorPrecompoundInterface * m_preCompoundModel
Precompound model to deexcite post-collision nucleus.
Definition: GammaLeptoNuclearPhysics.h:60
Belle2::Simulation::GammaLeptoNuclearPhysics::m_stringModel
G4QGSModel< G4GammaParticipants > * m_stringModel
Quark Gluon String model.
Definition: GammaLeptoNuclearPhysics.h:51
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::Simulation::GammaLeptoNuclearPhysics::m_fragModel
G4QGSMFragmentation * m_fragModel
Quark Gluon String fragmentation model.
Definition: GammaLeptoNuclearPhysics.h:57
Belle2::Simulation::GammaLeptoNuclearPhysics::ConstructParticle
virtual void ConstructParticle() override
Build all particle types used in physics list (empty in this class)
Definition: GammaLeptoNuclearPhysics.cc:108
Belle2::Simulation::GammaLeptoNuclearPhysics::ConstructProcess
virtual void ConstructProcess() override
Build processes, models, cross sections used in physics list.
Definition: GammaLeptoNuclearPhysics.cc:49