#include <HadronPhysicsFTFP_BERT_TRV.hh>
Inheritance diagram for HadronPhysicsFTFP_BERT_TRV:
Public Member Functions | |
HadronPhysicsFTFP_BERT_TRV (G4int verbose=1) | |
HadronPhysicsFTFP_BERT_TRV (const G4String &name, G4bool quasiElastic=false) | |
virtual | ~HadronPhysicsFTFP_BERT_TRV () |
virtual void | ConstructParticle () |
virtual void | ConstructProcess () |
Definition at line 67 of file HadronPhysicsFTFP_BERT_TRV.hh.
HadronPhysicsFTFP_BERT_TRV::HadronPhysicsFTFP_BERT_TRV | ( | G4int | verbose = 1 |
) |
Definition at line 70 of file HadronPhysicsFTFP_BERT_TRV.cc.
00071 : G4VPhysicsConstructor("hInelastic FTFP_BERT_TRV") 00072 , theNeutrons(0) 00073 , theBertiniNeutron(0) 00074 , theFTFPNeutron(0) 00075 , thePiK(0) 00076 , theBertiniPiK(0) 00077 , theFTFPPiK(0) 00078 , thePro(0) 00079 , theBertiniPro(0) 00080 , theFTFPPro(0) 00081 , theHyperon(0) 00082 , theAntiBaryon(0) 00083 , theFTFPAntiBaryon(0) 00084 , QuasiElastic(false) 00085 , ChipsKaonMinus(0) 00086 , ChipsKaonPlus(0) 00087 , ChipsKaonZero(0) 00088 , xsNeutronInelasticXS(0) 00089 , xsNeutronCaptureXS(0) 00090 {}
HadronPhysicsFTFP_BERT_TRV::HadronPhysicsFTFP_BERT_TRV | ( | const G4String & | name, | |
G4bool | quasiElastic = false | |||
) |
Definition at line 92 of file HadronPhysicsFTFP_BERT_TRV.cc.
00093 : G4VPhysicsConstructor(name) 00094 , theNeutrons(0) 00095 , theBertiniNeutron(0) 00096 , theFTFPNeutron(0) 00097 , thePiK(0) 00098 , theBertiniPiK(0) 00099 , theFTFPPiK(0) 00100 , thePro(0) 00101 , theBertiniPro(0) 00102 , theFTFPPro(0) 00103 , theHyperon(0) 00104 , theAntiBaryon(0) 00105 , theFTFPAntiBaryon(0) 00106 , QuasiElastic(quasiElastic) 00107 , ChipsKaonMinus(0) 00108 , ChipsKaonPlus(0) 00109 , ChipsKaonZero(0) 00110 , xsNeutronInelasticXS(0) 00111 , xsNeutronCaptureXS(0) 00112 {}
HadronPhysicsFTFP_BERT_TRV::~HadronPhysicsFTFP_BERT_TRV | ( | ) | [virtual] |
Definition at line 155 of file HadronPhysicsFTFP_BERT_TRV.cc.
00156 { 00157 delete theNeutrons; 00158 delete theBertiniNeutron; 00159 delete theFTFPNeutron; 00160 00161 delete thePiK; 00162 delete theBertiniPiK; 00163 delete theFTFPPiK; 00164 00165 delete thePro; 00166 delete theBertiniPro; 00167 delete theFTFPPro; 00168 00169 delete theHyperon; 00170 delete theAntiBaryon; 00171 delete theFTFPAntiBaryon; 00172 00173 delete xsNeutronInelasticXS; 00174 delete xsNeutronCaptureXS; 00175 }
void HadronPhysicsFTFP_BERT_TRV::ConstructParticle | ( | ) | [virtual] |
Implements G4VPhysicsConstructor.
Definition at line 177 of file HadronPhysicsFTFP_BERT_TRV.cc.
References G4ShortLivedConstructor::ConstructParticle(), G4BaryonConstructor::ConstructParticle(), and G4MesonConstructor::ConstructParticle().
00178 { 00179 G4MesonConstructor pMesonConstructor; 00180 pMesonConstructor.ConstructParticle(); 00181 00182 G4BaryonConstructor pBaryonConstructor; 00183 pBaryonConstructor.ConstructParticle(); 00184 00185 G4ShortLivedConstructor pShortLivedConstructor; 00186 pShortLivedConstructor.ConstructParticle(); 00187 }
void HadronPhysicsFTFP_BERT_TRV::ConstructProcess | ( | ) | [virtual] |
Implements G4VPhysicsConstructor.
Definition at line 190 of file HadronPhysicsFTFP_BERT_TRV.cc.
References G4HadronicProcess::AddDataSet(), G4ProcessManager::AddDiscreteProcess(), G4AntiBarionBuilder::Build(), G4HyperonFTFPBuilder::Build(), G4PiKBuilder::Build(), G4ProtonBuilder::Build(), G4NeutronBuilder::Build(), G4ChipsKaonZeroInelasticXS::Default_Name(), G4ChipsKaonPlusInelasticXS::Default_Name(), G4ChipsKaonMinusInelasticXS::Default_Name(), fCapture, fFission, G4PhysListUtil::FindInelasticProcess(), G4CrossSectionDataSetRegistry::GetCrossSectionDataSet(), G4ProcessManager::GetProcessList(), G4ParticleDefinition::GetProcessManager(), G4CrossSectionDataSetRegistry::Instance(), G4KaonMinus::KaonMinus(), G4KaonPlus::KaonPlus(), G4KaonZeroLong::KaonZeroLong(), G4KaonZeroShort::KaonZeroShort(), G4Neutron::Neutron(), G4HadronicProcess::RegisterMe(), and G4ProcessVector::size().
00191 { 00192 CreateModels(); 00193 theNeutrons->Build(); 00194 thePro->Build(); 00195 thePiK->Build(); 00196 00197 theHyperon->Build(); 00198 theAntiBaryon->Build(); 00199 00200 // --- Kaons --- 00201 // Use Chips cross sections 00202 ChipsKaonMinus = G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4ChipsKaonMinusInelasticXS::Default_Name()); 00203 ChipsKaonPlus = G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4ChipsKaonPlusInelasticXS::Default_Name()); 00204 ChipsKaonZero = G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4ChipsKaonZeroInelasticXS::Default_Name()); 00205 00206 G4PhysListUtil::FindInelasticProcess(G4KaonMinus::KaonMinus())->AddDataSet(ChipsKaonMinus); 00207 G4PhysListUtil::FindInelasticProcess(G4KaonPlus::KaonPlus())->AddDataSet(ChipsKaonPlus); 00208 G4PhysListUtil::FindInelasticProcess(G4KaonZeroShort::KaonZeroShort())->AddDataSet(ChipsKaonZero); 00209 G4PhysListUtil::FindInelasticProcess(G4KaonZeroLong::KaonZeroLong())->AddDataSet(ChipsKaonZero); 00210 00211 // --- Neutrons --- 00212 // Use the same cross sections and neutron capture as in QBBC. 00213 // Need also to assigned a model (Gheisha) to fission. 00214 xsNeutronInelasticXS = new G4NeutronInelasticXS(); 00215 G4PhysListUtil::FindInelasticProcess(G4Neutron::Neutron())->AddDataSet(xsNeutronInelasticXS); 00216 00217 G4HadronicProcess* capture = 0; 00218 G4HadronicProcess* fission = 0; 00219 G4ProcessManager* pmanager = G4Neutron::Neutron()->GetProcessManager(); 00220 G4ProcessVector* pv = pmanager->GetProcessList(); 00221 for ( size_t i=0; i < static_cast<size_t>(pv->size()); ++i ) { 00222 if ( fCapture == ((*pv)[i])->GetProcessSubType() ) { 00223 capture = static_cast<G4HadronicProcess*>((*pv)[i]); 00224 } else if ( fFission == ((*pv)[i])->GetProcessSubType() ) { 00225 fission = static_cast<G4HadronicProcess*>((*pv)[i]); 00226 } 00227 } 00228 if ( ! capture ) { 00229 capture = new G4HadronCaptureProcess("nCapture"); 00230 pmanager->AddDiscreteProcess(capture); 00231 } 00232 xsNeutronCaptureXS = new G4NeutronCaptureXS(); 00233 capture->AddDataSet(xsNeutronCaptureXS); 00234 capture->RegisterMe(new G4NeutronRadCapture()); 00235 if ( ! fission ) { 00236 fission = new G4HadronFissionProcess("nFission"); 00237 pmanager->AddDiscreteProcess(fission); 00238 } 00239 fission->RegisterMe(new G4LFission()); 00240 00241 }