ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
GammaLeptoNuclearPhysics.cc
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file GammaLeptoNuclearPhysics.cc
1 // $Id: $
3 // //
4 // File: GammaLeptoNuclearPhysics.cc //
5 // Description: Gamma-nuclear, electro-nuclear and muon-nuclear physics //
6 // constructor for EICPhysicsList //
7 // //
8 // Author: Dennis H. Wright (SLAC) //
9 // Date: 20 July 2018 //
10 // //
12 
13 
15 
16 #include <Geant4/G4ProcessManager.hh>
17 #include <Geant4/G4PhotoNuclearProcess.hh>
18 #include <Geant4/G4ElectronNuclearProcess.hh>
19 #include <Geant4/G4PositronNuclearProcess.hh>
20 #include <Geant4/G4MuonNuclearProcess.hh>
21 
22 #include <Geant4/G4CascadeInterface.hh>
23 #include <Geant4/G4ElectroVDNuclearModel.hh>
24 #include <Geant4/G4MuonVDNuclearModel.hh>
25 
26 #include <Geant4/G4TheoFSGenerator.hh>
27 #include <Geant4/G4ExcitedStringDecay.hh>
28 #include <Geant4/G4QGSMFragmentation.hh>
29 #include <Geant4/G4GeneratorPrecompoundInterface.hh>
30 
31 #include <Geant4/G4SystemOfUnits.hh>
32 
33 
35  qgsp(nullptr),
36  stringModel(nullptr),
37  stringDecay(nullptr),
38  fragModel(nullptr),
39  preCompoundModel(nullptr)
40 {}
41 
42 
44 {
45  delete stringDecay;
46  delete stringModel;
47  delete fragModel;
48  delete preCompoundModel;
49 }
50 
51 
53 {
54  // Use Bertini cascade for low energies
55  G4CascadeInterface* theGammaReaction = new G4CascadeInterface;
56  theGammaReaction->SetMinEnergy(0.0);
57  theGammaReaction->SetMaxEnergy(3.5*GeV);
58 
59  // Use QGSP for high energies
60  qgsp = new G4TheoFSGenerator("QGSP");
62  stringDecay =
66 
69  qgsp->SetMinEnergy(3*GeV);
70  qgsp->SetMaxEnergy(100*TeV);
71 
72  // Lepto-nuclear models
75 
76 
77  G4ProcessManager* procMan = 0;
78 
79  // Gamma
80  procMan = G4Gamma::Gamma()->GetProcessManager();
82  pnProc->RegisterMe(theGammaReaction);
83  pnProc->RegisterMe(qgsp);
84  procMan->AddDiscreteProcess(pnProc);
85 
86  // Electron
89  emn->RegisterMe(evdn);
90  procMan->AddDiscreteProcess(emn);
91 
92  // Positron
95  epn->RegisterMe(evdn);
96  procMan->AddDiscreteProcess(epn);
97 
98  // Muon-
101  mun->RegisterMe(mvdn);
102  procMan->AddDiscreteProcess(mun);
103 
104  // Muon+
106  procMan->AddDiscreteProcess(mun);
107 
108 }
109 
110 
112 {}
113