Belle II Software development
GammaLeptoNuclearPhysics Class Reference

Gamma-nuclear, electro-nuclear and muon-nuclear physics constructor for Belle II physics list. More...

#include <GammaLeptoNuclearPhysics.h>

Inheritance diagram for GammaLeptoNuclearPhysics:

Public Member Functions

 GammaLeptoNuclearPhysics (const G4int verbosityLevel=0)
 Constructor.
 
 ~GammaLeptoNuclearPhysics ()
 Destructor.
 
virtual void ConstructProcess () override
 Build processes, models, cross sections used in physics list.
 
virtual void ConstructParticle () override
 Build all particle types used in physics list (empty in this class)
 

Private Attributes

G4TheoFSGenerator * m_qgsp
 Final state generator for QCD string models.
 
G4QGSModel< G4GammaParticipants > * m_stringModel
 Quark Gluon String model.
 
G4ExcitedStringDecay * m_stringDecay
 Model to decay strings into hadrons.
 
G4QGSMFragmentation * m_fragModel
 Quark Gluon String fragmentation model.
 
G4GeneratorPrecompoundInterface * m_preCompoundModel
 Precompound model to deexcite post-collision nucleus.
 
G4bool m_useGammaNuclearXS
 Switch between GammaNuclearXS and PhotoNuclearXS.
 

Detailed Description

Gamma-nuclear, electro-nuclear and muon-nuclear physics constructor for Belle II physics list.

Definition at line 32 of file GammaLeptoNuclearPhysics.h.

Constructor & Destructor Documentation

◆ GammaLeptoNuclearPhysics()

GammaLeptoNuclearPhysics ( const G4int verbosityLevel = 0)

Constructor.

Definition at line 41 of file GammaLeptoNuclearPhysics.cc.

42 : m_qgsp(nullptr), m_stringModel(nullptr), m_stringDecay(nullptr),
43 m_fragModel(nullptr), m_preCompoundModel(nullptr), m_useGammaNuclearXS(false)
44{
45 G4HadronicParameters::Instance()->SetVerboseLevel(verbosityLevel);
46}

◆ ~GammaLeptoNuclearPhysics()

Destructor.

Definition at line 49 of file GammaLeptoNuclearPhysics.cc.

50{
51 delete m_stringDecay;
52 delete m_stringModel;
53 delete m_fragModel;
54 delete m_preCompoundModel;
55}

Member Function Documentation

◆ ConstructParticle()

void ConstructParticle ( )
overridevirtual

Build all particle types used in physics list (empty in this class)

Definition at line 127 of file GammaLeptoNuclearPhysics.cc.

128{}

◆ ConstructProcess()

void ConstructProcess ( )
overridevirtual

Build processes, models, cross sections used in physics list.

Definition at line 58 of file GammaLeptoNuclearPhysics.cc.

59{
60 // Use Bertini cascade for low energies
61 G4CascadeInterface* theGammaReaction = new G4CascadeInterface;
62 theGammaReaction->SetMinEnergy(0.0);
63 theGammaReaction->SetMaxEnergy(3.5 * GeV);
64
65 // Use QGSP for high energies
66 m_qgsp = new G4TheoFSGenerator("QGSP");
67 m_stringModel = new G4QGSModel<G4GammaParticipants>;
68 m_stringDecay =
69 new G4ExcitedStringDecay(m_fragModel = new G4QGSMFragmentation);
70 m_stringModel->SetFragmentationModel(m_stringDecay);
71 m_preCompoundModel = new G4GeneratorPrecompoundInterface();
72
73 m_qgsp->SetHighEnergyGenerator(m_stringModel);
74 m_qgsp->SetTransport(m_preCompoundModel);
75 m_qgsp->SetMinEnergy(3 * GeV);
76 m_qgsp->SetMaxEnergy(100 * TeV);
77
78 // Lepto-nuclear models
79 G4ElectroVDNuclearModel* evdn = new G4ElectroVDNuclearModel;
80 G4MuonVDNuclearModel* mvdn = new G4MuonVDNuclearModel;
81
82
83 G4ProcessManager* procMan = 0;
84
85 // Gamma
86 procMan = G4Gamma::Gamma()->GetProcessManager();
87 G4HadronInelasticProcess* pnProc = new G4HadronInelasticProcess("photonNuclear", G4Gamma::Definition());
88 auto xsreg = G4CrossSectionDataSetRegistry::Instance();
89 G4VCrossSectionDataSet* xs = nullptr;
90 if (m_useGammaNuclearXS) {
91 xs = xsreg->GetCrossSectionDataSet("GammaNuclearXS");
92 if (nullptr == xs) xs = new G4GammaNuclearXS();
93 } else {
94 xs = xsreg->GetCrossSectionDataSet("PhotoNuclearXS");
95 if (nullptr == xs) xs = new G4PhotoNuclearCrossSection();
96 }
97 pnProc->AddDataSet(xs);
98 pnProc->RegisterMe(theGammaReaction);
99 pnProc->RegisterMe(m_qgsp);
100 procMan->AddDiscreteProcess(pnProc);
101
102 // Electron
103 procMan = G4Electron::Electron()->GetProcessManager();
104 G4ElectronNuclearProcess* emn = new G4ElectronNuclearProcess;
105 emn->RegisterMe(evdn);
106 procMan->AddDiscreteProcess(emn);
107
108 // Positron
109 procMan = G4Positron::Positron()->GetProcessManager();
110 G4PositronNuclearProcess* epn = new G4PositronNuclearProcess;
111 epn->RegisterMe(evdn);
112 procMan->AddDiscreteProcess(epn);
113
114 // Muon-
115 procMan = G4MuonMinus::MuonMinus()->GetProcessManager();
116 G4MuonNuclearProcess* mun = new G4MuonNuclearProcess;
117 mun->RegisterMe(mvdn);
118 procMan->AddDiscreteProcess(mun);
119
120 // Muon+
121 procMan = G4MuonPlus::MuonPlus()->GetProcessManager();
122 procMan->AddDiscreteProcess(mun);
123
124}

Member Data Documentation

◆ m_fragModel

G4QGSMFragmentation* m_fragModel
private

Quark Gluon String fragmentation model.

Definition at line 56 of file GammaLeptoNuclearPhysics.h.

◆ m_preCompoundModel

G4GeneratorPrecompoundInterface* m_preCompoundModel
private

Precompound model to deexcite post-collision nucleus.

Definition at line 59 of file GammaLeptoNuclearPhysics.h.

◆ m_qgsp

G4TheoFSGenerator* m_qgsp
private

Final state generator for QCD string models.

Definition at line 47 of file GammaLeptoNuclearPhysics.h.

◆ m_stringDecay

G4ExcitedStringDecay* m_stringDecay
private

Model to decay strings into hadrons.

Definition at line 53 of file GammaLeptoNuclearPhysics.h.

◆ m_stringModel

G4QGSModel<G4GammaParticipants>* m_stringModel
private

Quark Gluon String model.

Definition at line 50 of file GammaLeptoNuclearPhysics.h.

◆ m_useGammaNuclearXS

G4bool m_useGammaNuclearXS
private

Switch between GammaNuclearXS and PhotoNuclearXS.

Definition at line 62 of file GammaLeptoNuclearPhysics.h.


The documentation for this class was generated from the following files: