70 G4ThreadLocal G4HadronPhysicsFTFP_BERT::ThreadPrivate* G4HadronPhysicsFTFP_BERT::tpdata=0;
112 , QuasiElastic(quasiElastic)
118 void G4HadronPhysicsFTFP_BERT::CreateModels()
131 <<
" FTFP_BERT : new threshold between BERT and FTFP is over the interval " <<
G4endl
132 <<
" for pions : " << minFTFP_pion/
GeV <<
" to " << maxBERT_pion/
GeV <<
" GeV" <<
G4endl
133 <<
" for kaons : " << minFTFP_kaon/
GeV <<
" to " << maxBERT_kaon/
GeV <<
" GeV" <<
G4endl
134 <<
" for proton : " << minFTFP_proton/
GeV <<
" to " << maxBERT_proton/
GeV <<
" GeV" <<
G4endl
135 <<
" for neutron : " << minFTFP_neutron/
GeV <<
" to " << maxBERT_neutron/
GeV <<
" GeV" <<
G4endl
141 tpdata->theNeutrons->RegisterMe(tpdata->theFTFPNeutron);
142 tpdata->theFTFPNeutron->SetMinEnergy(minFTFP_neutron);
144 tpdata->theBertiniNeutron->SetMinEnergy(0.0*
GeV);
145 tpdata->theBertiniNeutron->SetMaxEnergy(maxBERT_neutron);
149 tpdata->thePro->RegisterMe(tpdata->theFTFPPro);
150 tpdata->theFTFPPro->SetMinEnergy(minFTFP_proton);
152 tpdata->theBertiniPro->SetMaxEnergy(maxBERT_proton);
156 tpdata->thePion->RegisterMe(tpdata->theFTFPPion);
157 tpdata->theFTFPPion->SetMinEnergy(minFTFP_pion);
159 tpdata->theBertiniPion->SetMaxEnergy(maxBERT_pion);
163 tpdata->theKaon->RegisterMe(tpdata->theFTFPKaon);
164 tpdata->theFTFPKaon->SetMinEnergy(minFTFP_kaon);
166 tpdata->theBertiniKaon->SetMaxEnergy(maxBERT_kaon);
178 delete tpdata->theNeutrons;
179 delete tpdata->theBertiniNeutron;
180 delete tpdata->theFTFPNeutron;
182 delete tpdata->thePion;
183 delete tpdata->theBertiniPion;
184 delete tpdata->theFTFPPion;
186 delete tpdata->theKaon;
187 delete tpdata->theBertiniKaon;
188 delete tpdata->theFTFPKaon;
190 delete tpdata->thePro;
191 delete tpdata->theBertiniPro;
192 delete tpdata->theFTFPPro;
194 delete tpdata->theHyperon;
195 delete tpdata->theAntiBaryon;
196 delete tpdata->theFTFPAntiBaryon;
201 delete tpdata; tpdata = 0;
219 if ( tpdata == 0 ) tpdata =
new ThreadPrivate;
221 tpdata->theNeutrons->Build();
222 tpdata->thePro->Build();
223 tpdata->thePion->Build();
224 tpdata->theKaon->Build();
234 tpdata->theHyperon->Build();
235 tpdata->theAntiBaryon->Build();
244 for (
size_t i=0; i < static_cast<size_t>(pv->
size()); ++i ) {
245 if (
fCapture == ((*pv)[i])->GetProcessSubType() ) {
254 capture->
AddDataSet(tpdata->xsNeutronCaptureXS);
G4VCrossSectionDataSet * GetCrossSectionDataSet(const G4String &name, G4bool warning=true)
virtual void ConstructProcess()
virtual void ConstructParticle()
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()
void RegisterMe(G4HadronicInteraction *a)
static G4HadronicProcess * FindInelasticProcess(const G4ParticleDefinition *)
void AddDataSet(G4VCrossSectionDataSet *aDataSet)
G4GLOB_DLL std::ostream G4cout
static G4KaonZeroShort * KaonZeroShort()
static G4CrossSectionDataSetRegistry * Instance()
static G4Neutron * Neutron()
static const char * Default_Name()
G4ProcessManager * GetProcessManager() const
static constexpr double GeV
static G4KaonPlus * KaonPlus()
virtual ~G4HadronPhysicsFTFP_BERT()
G4ProcessVector * GetProcessList() const
#define G4_DECLARE_PHYSCONSTR_FACTORY(physics_constructor)
G4HadronPhysicsFTFP_BERT(G4int verbose=1)