69 G4HadronPhysicsQGSP_FTFP_BERT::tpdata = 0;
116 , QuasiElastic(quasiElastic)
120 void G4HadronPhysicsQGSP_FTFP_BERT::CreateModels()
129 G4bool quasiElasFTF=
false;
130 G4bool quasiElasQGS=
true;
132 G4cout <<
" New QGSP_FTFP_BERT physics list, replaces LEP with FTF/P for p/n/pi (/K?)";
134 G4cout <<
" 1) between BERT and FTF/P over the interval "
135 << minFTFP/
GeV <<
" to " << maxBERT/
GeV <<
" GeV. " <<
G4endl;
136 G4cout <<
" 2) between FTF/P and QGS/P over the interval "
137 << minQGSP/
GeV <<
" to " << maxFTFP/
GeV <<
" GeV. " <<
G4endl;
138 G4cout <<
" -- quasiElastic was asked to be " << QuasiElastic << G4endl
139 <<
" Changed to " << quasiElasQGS <<
" for QGS "
140 <<
" and to " << quasiElasFTF <<
" (must be false) for FTF" <<
G4endl;
144 tpdata->theQGSPNeutron->SetMinEnergy(minQGSP);
146 tpdata->theFTFPNeutron->SetMinEnergy(minFTFP);
147 tpdata->theFTFPNeutron->SetMaxEnergy(maxFTFP);
150 tpdata->theBertiniNeutron->SetMinEnergy(0.0*
GeV);
151 tpdata->theBertiniNeutron->SetMaxEnergy(maxBERT);
155 tpdata->theQGSPPro->SetMinEnergy(minQGSP);
157 tpdata->theFTFPPro->SetMinEnergy(minFTFP);
158 tpdata->theFTFPPro->SetMaxEnergy(maxFTFP);
160 tpdata->theBertiniPro->SetMaxEnergy(maxBERT);
163 tpdata->thePiK->RegisterMe(tpdata->theQGSPPiK=
new G4QGSPPiKBuilder(quasiElasQGS));
164 tpdata->theQGSPPiK->SetMinEnergy(minQGSP);
165 tpdata->thePiK->RegisterMe(tpdata->theFTFPPiK=
new G4FTFPPiKBuilder(quasiElasFTF));
166 tpdata->theFTFPPiK->SetMaxEnergy(maxFTFP);
167 tpdata->theFTFPPiK->SetMinEnergy(minFTFP);
169 tpdata->theBertiniPiK->SetMaxEnergy(maxBERT);
182 delete tpdata->theQGSPNeutron;
183 delete tpdata->theFTFPNeutron;
184 delete tpdata->theBertiniNeutron;
185 delete tpdata->theNeutrons;
187 delete tpdata->theQGSPPro;
188 delete tpdata->theFTFPPro;
189 delete tpdata->thePro;
190 delete tpdata->theBertiniPro;
192 delete tpdata->theQGSPPiK;
193 delete tpdata->theFTFPPiK;
194 delete tpdata->theBertiniPiK;
195 delete tpdata->thePiK;
197 delete tpdata->theHyperon;
198 delete tpdata->theAntiBaryon;
199 delete tpdata->theFTFPAntiBaryon;
201 delete tpdata; tpdata = 0;
222 if ( tpdata == 0 ) tpdata =
new ThreadPrivate;
224 tpdata->theNeutrons->Build();
225 tpdata->thePro->Build();
226 tpdata->thePiK->Build();
236 tpdata->theHyperon->Build();
237 tpdata->theAntiBaryon->Build();
246 for (
size_t i=0; i < static_cast<size_t>(pv->
size()); ++i ) {
247 if (
fCapture == ((*pv)[i])->GetProcessSubType() ) {
256 capture->
AddDataSet(tpdata->xsNeutronCaptureXS);
G4VCrossSectionDataSet * GetCrossSectionDataSet(const G4String &name, G4bool warning=true)
virtual void ConstructProcess()
G4int AddDiscreteProcess(G4VProcess *aProcess, G4int ord=ordDefault)
static G4KaonZeroLong * KaonZeroLong()
static const char * Default_Name()
static void ConstructParticle()
static void ConstructParticle()
static void ConstructParticle()
static G4KaonMinus * KaonMinus()
static void ConstructParticle()
void RegisterMe(G4HadronicInteraction *a)
static G4HadronicProcess * FindInelasticProcess(const G4ParticleDefinition *)
void AddDataSet(G4VCrossSectionDataSet *aDataSet)
G4GLOB_DLL std::ostream G4cout
static G4KaonZeroShort * KaonZeroShort()
virtual void ConstructParticle()
static G4CrossSectionDataSetRegistry * Instance()
static G4Neutron * Neutron()
static const char * Default_Name()
G4ProcessManager * GetProcessManager() const
static constexpr double GeV
virtual ~G4HadronPhysicsQGSP_FTFP_BERT()
static G4KaonPlus * KaonPlus()
G4ProcessVector * GetProcessList() const
#define G4_DECLARE_PHYSCONSTR_FACTORY(physics_constructor)
G4HadronPhysicsQGSP_FTFP_BERT(G4int verbose=1)