ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4HadronPhysicsQGSP_BIC_AllHP.cc
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4HadronPhysicsQGSP_BIC_AllHP.cc
1 //
2 // ********************************************************************
3 // * License and Disclaimer *
4 // * *
5 // * The Geant4 software is copyright of the Copyright Holders of *
6 // * the Geant4 Collaboration. It is provided under the terms and *
7 // * conditions of the Geant4 Software License, included in the file *
8 // * LICENSE and available at http://cern.ch/geant4/license . These *
9 // * include a list of copyright holders. *
10 // * *
11 // * Neither the authors of this software system, nor their employing *
12 // * institutes,nor the agencies providing financial support for this *
13 // * work make any representation or warranty, express or implied, *
14 // * regarding this software system or assume any liability for its *
15 // * use. Please see the license in the file LICENSE and URL above *
16 // * for the full disclaimer and the limitation of liability. *
17 // * *
18 // * This code implementation is the result of the scientific and *
19 // * technical work of the GEANT4 collaboration. *
20 // * By using, copying, modifying or distributing the software (or *
21 // * any work based on the software) you agree to acknowledge its *
22 // * use in resulting scientific publications, and indicate your *
23 // * acceptance of all terms of the Geant4 Software license. *
24 // ********************************************************************
25 //
26 //
27 //---------------------------------------------------------------------------
28 //
29 #include <iomanip>
30 
32 
33 #include "globals.hh"
34 #include "G4ios.hh"
35 #include "G4SystemOfUnits.hh"
36 #include "G4ParticleDefinition.hh"
37 #include "G4ParticleTable.hh"
38 
39 #include "G4MesonConstructor.hh"
40 #include "G4BaryonConstructor.hh"
42 #include "G4IonConstructor.hh"
43 
45 #include "G4NeutronRadCapture.hh"
46 #include "G4NeutronCaptureXS.hh"
48 #include "G4LFission.hh"
49 
50 #include "G4PhysListUtil.hh"
51 
52 #include "G4HadronicParameters.hh"
53 
54 // factory
56 //
58 
61 
63  : G4VPhysicsConstructor("hInelastic QGSP_BIC_AllHP")
64 {}
65 
67  : G4VPhysicsConstructor(name)
68 {}
69 
71 {
72  G4bool quasiElasticFTF= false; // Use built-in quasi-elastic (not add-on)
73  G4bool quasiElasticQGS= true; // For QGS, it must use it.
74 
75  tpdata->theNeutrons=new G4NeutronBuilder( true ); // Fission on
85 
96 
98  tpdata->thePiK->RegisterMe(tpdata->theQGSPPiK=new G4QGSPPiKBuilder(quasiElasticQGS));
99  tpdata->thePiK->RegisterMe(tpdata->theFTFPPiK=new G4FTFPPiKBuilder(quasiElasticFTF));
103 
105 
108 }
109 
111 {
112  if (!tpdata) return;
113 
114  delete tpdata->thePHPNeutron;
115  delete tpdata->theBinaryNeutron;
116  delete tpdata->theQGSPNeutron;
117  delete tpdata->theFTFPNeutron;
118  delete tpdata->theBertiniPiK;
119  delete tpdata->theQGSPPiK;
120  delete tpdata->theFTFPPiK;
121  delete tpdata->thePiK;
122  delete tpdata->thePHPProton;
123  delete tpdata->theBinaryPro;
124  delete tpdata->theQGSPPro;
125  delete tpdata->theFTFPPro;
126  delete tpdata->thePro;
127  delete tpdata->theFTFPAntiBaryon;
128  delete tpdata->theAntiBaryon;
129  delete tpdata->theHyperon;
130 
131  delete tpdata; tpdata = nullptr;
132 }
133 
135 {
136  G4MesonConstructor pMesonConstructor;
137  pMesonConstructor.ConstructParticle();
138 
139  G4BaryonConstructor pBaryonConstructor;
140  pBaryonConstructor.ConstructParticle();
141 
142  G4ShortLivedConstructor pShortLivedConstructor;
143  pShortLivedConstructor.ConstructParticle();
144 
145  G4IonConstructor pIonConstructor;
146  pIonConstructor.ConstructParticle();
147 }
148 
149 #include "G4ProcessManager.hh"
151 {
152  if ( tpdata == 0 ) tpdata = new ThreadPrivate;
153  CreateModels();
155  tpdata->thePro->Build();
156  tpdata->thePiK->Build();
157 
158  tpdata->theHyperon->Build();
160 
161  // --- Neutrons ---
164  if (capture) {
165  G4NeutronRadCapture* theNeutronRadCapture = new G4NeutronRadCapture();
166  theNeutronRadCapture->SetMinEnergy( minBIC_neutron );
167  capture->RegisterMe( theNeutronRadCapture );
168  }
170  if (fission) {
171  G4LFission* theNeutronLEPFission = new G4LFission();
172  theNeutronLEPFission->SetMinEnergy( minBIC_neutron );
173  theNeutronLEPFission->SetMaxEnergy( G4HadronicParameters::Instance()->GetMaxEnergy() );
174  fission->RegisterMe( theNeutronLEPFission );
175  }
176 }