Import Geant4 11.2.0 source tree
This commit is contained in:
@@ -6,6 +6,12 @@ It must **not** be used as a substitute for writing good git commit messages!
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
## 2023-10-19 Jean-Christophe David (phys-builders-V11-01-03)
|
||||
- G4HadronicBuilder: added two methods - BuildINCLXX and BuildAntiLightIonsINCLXX.
|
||||
|
||||
## 2023-07-12 Alberto Ribon (phys-builders-V11-01-02)
|
||||
- Removed the no longer used file OrderingParameterTable.
|
||||
|
||||
## 2023-03-17 Alberto Ribon (phys-builders-V11-01-01)
|
||||
- G4HadronicBuilder : fixed bug in the method BuildKaonsFTFQGSP_BERT().
|
||||
Thanks to Dmitri Konstantinov for reporting it.
|
||||
|
||||
@@ -1,65 +0,0 @@
|
||||
Transportation 1 91 -1 0 0 0
|
||||
CoupleTrans 1 92 -1 0 0 0
|
||||
CoulombScat 2 1 -1 -1 1000 0
|
||||
Ionisation 2 2 -1 2 2 0
|
||||
Brems 2 3 -1 -1 3 0
|
||||
PairProdCharged 2 4 -1 -1 4 0
|
||||
Annih 2 5 5 -1 5 0
|
||||
AnnihToMuMu 2 6 -1 -1 6 0
|
||||
AnnihToHad 2 7 -1 -1 7 0
|
||||
NuclearStopping 2 8 -1 8 -1 0
|
||||
ElectronGeneral 2 9 -1 1 1 0
|
||||
Msc 2 10 -1 1 -1 0
|
||||
Rayleigh 2 11 -1 -1 1000 0
|
||||
PhotoElectric 2 12 -1 -1 1000 0
|
||||
Compton 2 13 -1 -1 1000 0
|
||||
Conv 2 14 -1 -1 1000 0
|
||||
ConvToMuMu 2 15 -1 -1 1000 0
|
||||
GammaGeneral 2 16 -1 -1 1000 0
|
||||
PositronGeneral 2 17 1 1 1 0
|
||||
Cerenkov 2 21 -1 -1 1000 0
|
||||
Scintillation 2 22 9999 -1 9999 0
|
||||
SynchRad 2 23 -1 -1 1000 0
|
||||
TransRad 2 24 -1 -1 1000 0
|
||||
SurfaceRefl 2 25 -1 -1 1000 0
|
||||
OpAbsorp 3 31 -1 -1 1000 0
|
||||
OpBoundary 3 32 -1 -1 1000 0
|
||||
OpRayleigh 3 33 -1 -1 1000 0
|
||||
OpWLS 3 34 -1 -1 1000 0
|
||||
OpMieHG 3 35 -1 -1 1000 0
|
||||
OpWLS2 3 36 -1 -1 1000 0
|
||||
MuPairByMuon 2 49 -1 -1 10 0
|
||||
DNAElastic 2 51 -1 -1 1000 0
|
||||
DNAExcit 2 52 -1 -1 1000 0
|
||||
DNAIonisation 2 53 -1 -1 1000 0
|
||||
DNAVibExcit 2 54 -1 -1 1000 0
|
||||
DNAAttachment 2 55 -1 -1 1000 0
|
||||
DNAChargeDec 2 56 -1 -1 1000 0
|
||||
DNAChargeInc 2 57 -1 -1 1000 0
|
||||
DNAElecSolv 2 58 -1 -1 1000 0
|
||||
DNAMolecDecay 2 59 1000 -1 -1 0
|
||||
ITTransport 1 60 -1 0 0 0
|
||||
DNABrownTrans 1 61 -1 0 0 0
|
||||
DNADoubleIoni 2 62 -1 -1 1000 0
|
||||
DNADoubleCap 2 63 -1 -1 1000 0
|
||||
DNAIoniTransfer 2 64 -1 -1 1000 0
|
||||
HadElastic 4 111 -1 -1 1000 0
|
||||
NeutronGeneral 4 116 -1 -1 1000 0
|
||||
HadInelastic 4 121 -1 -1 1000 0
|
||||
HadCapture 4 131 -1 -1 1000 0
|
||||
MuAtomCapture 4 132 -1 -1 1000 0
|
||||
HadFission 4 141 -1 -1 1000 0
|
||||
HadAtRest 4 151 1000 -1 -1 0
|
||||
HadCEX 4 161 -1 -1 1000 0
|
||||
Decay 6 201 1000 -1 1000 0
|
||||
DecayWSpin 6 202 1000 -1 1000 0
|
||||
DecayPiWSpin 6 203 1000 -1 1000 0
|
||||
DecayRadio 6 210 1000 -1 1000 0
|
||||
DecayUnKnown 6 211 1000 -1 1000 0
|
||||
DecayMuAtom 6 221 1000 -1 1000 0
|
||||
DecayExt 6 231 1000 -1 1000 0
|
||||
StepLimiter 7 401 -1 -1 1000 0
|
||||
UsrSpecCuts 7 402 -1 -1 1000 0
|
||||
NeutronKiller 7 403 -1 -1 1000 0
|
||||
ParallelWorld 10 491 9900 1 9900 1
|
||||
|
||||
@@ -37,6 +37,9 @@
|
||||
#include "globals.hh"
|
||||
#include <vector>
|
||||
|
||||
#include "G4VComponentCrossSection.hh"
|
||||
#include "G4VCrossSectionDataSet.hh"
|
||||
|
||||
class G4HadronicBuilder
|
||||
{
|
||||
private:
|
||||
@@ -55,6 +58,10 @@ private:
|
||||
G4bool bert, G4bool quasiElastic,
|
||||
const G4String& xsName);
|
||||
|
||||
static void BuildINCLXX(const std::vector<G4int>& particleList,
|
||||
G4bool bert, const G4String& xsName);
|
||||
|
||||
|
||||
public:
|
||||
|
||||
// methods to build elastic and inelastic physics per particle category
|
||||
@@ -74,6 +81,8 @@ public:
|
||||
|
||||
static void BuildAntiLightIonsFTFP();
|
||||
|
||||
static void BuildAntiLightIonsINCLXX();
|
||||
|
||||
//static void BuildAntiLightIonsQGSP_FTFP(G4bool quasiElastic);
|
||||
|
||||
static void BuildBCHadronsFTFP_BERT();
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4PhysicsListHelper.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
|
||||
#include "G4HadronicParameters.hh"
|
||||
|
||||
@@ -65,6 +66,8 @@
|
||||
|
||||
#include "G4PreCompoundModel.hh"
|
||||
#include "G4INCLXXInterface.hh"
|
||||
#include "G4ComponentAntiNuclNuclearXS.hh"
|
||||
|
||||
|
||||
|
||||
void G4HadronicBuilder::BuildFTFP_BERT(const std::vector<G4int>& partList,
|
||||
@@ -193,6 +196,57 @@ void G4HadronicBuilder::BuildQGSP_FTFP_BERT(const std::vector<G4int>& partList,
|
||||
}
|
||||
}
|
||||
|
||||
void G4HadronicBuilder::BuildINCLXX(const std::vector<G4int>& partList,
|
||||
G4bool bert, const G4String& xsName) {
|
||||
|
||||
// FTF
|
||||
G4HadronicParameters* param = G4HadronicParameters::Instance();
|
||||
G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper();
|
||||
|
||||
auto theModel = new G4TheoFSGenerator("FTFP");
|
||||
auto theStringModel = new G4FTFModel();
|
||||
theStringModel->SetFragmentationModel(new G4ExcitedStringDecay());
|
||||
theModel->SetHighEnergyGenerator( theStringModel );
|
||||
theModel->SetTransport( new G4GeneratorPrecompoundInterface() );
|
||||
theModel->SetMaxEnergy( param->GetMaxEnergy() );
|
||||
|
||||
G4CascadeInterface* theCascade = nullptr;
|
||||
if(bert) {
|
||||
theCascade = new G4CascadeInterface();
|
||||
theCascade->SetMaxEnergy( param->GetMaxEnergyTransitionFTF_Cascade() );
|
||||
theModel->SetMinEnergy( param->GetMinEnergyTransitionFTF_Cascade() );
|
||||
}
|
||||
|
||||
// INCLXX
|
||||
auto theModelINCLXX = new G4INCLXXInterface();
|
||||
theModelINCLXX->SetMinEnergy( param->GetMinEnergyINCLXX_Pbar() );
|
||||
theModelINCLXX->SetMaxEnergy( param->GetMaxEnergyINCLXX_Pbar() );
|
||||
|
||||
//
|
||||
auto xsinel = G4HadProcesses::InelasticXS( xsName );
|
||||
|
||||
G4ParticleTable* table = G4ParticleTable::GetParticleTable();
|
||||
for( auto & pdg : partList ) {
|
||||
|
||||
auto part = table->FindParticle( pdg );
|
||||
if ( part == nullptr ) { continue; }
|
||||
|
||||
auto hadi = new G4HadronInelasticProcess( part->GetParticleName()+"Inelastic", part );
|
||||
if( pdg == -2212 ) { // pbar use INCLXX
|
||||
hadi->AddDataSet( xsinel );
|
||||
hadi->RegisterMe( theModelINCLXX );
|
||||
if( param->ApplyFactorXS() ) hadi->MultiplyCrossSectionBy( param->XSFactorHadronInelastic() );
|
||||
ph->RegisterProcess(hadi, part);
|
||||
} else { // other anti-X use FTF
|
||||
hadi->AddDataSet( xsinel );
|
||||
hadi->RegisterMe( theModel );
|
||||
if( theCascade != nullptr ) hadi->RegisterMe( theCascade );
|
||||
if( param->ApplyFactorXS() ) hadi->MultiplyCrossSectionBy( param->XSFactorHadronInelastic() );
|
||||
ph->RegisterProcess(hadi, part);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void G4HadronicBuilder::BuildElastic(const std::vector<G4int>& partList) {
|
||||
|
||||
G4HadronicParameters* param = G4HadronicParameters::Instance();
|
||||
@@ -260,6 +314,10 @@ void G4HadronicBuilder::BuildAntiLightIonsFTFP() {
|
||||
// BuildQGSP_FTFP_BERT(G4HadParticles::GetLightAntiIons(), false, qElastic, "AntiAGlauber");
|
||||
//}
|
||||
|
||||
void G4HadronicBuilder::BuildAntiLightIonsINCLXX() {
|
||||
BuildINCLXX(G4HadParticles::GetLightAntiIons(), false, "AntiAGlauber");
|
||||
}
|
||||
|
||||
void G4HadronicBuilder::BuildBCHadronsFTFP_BERT() {
|
||||
if( G4HadronicParameters::Instance()->EnableBCParticles() ) {
|
||||
// Bertini is not applicable for charm and bottom hadrons, therefore FTFP is used
|
||||
|
||||
Reference in New Issue
Block a user