Import Geant4 11.4.0 source tree

This commit is contained in:
Gabriele Cosmo
2025-12-05 08:54:02 +01:00
parent a499fb82e9
commit b4a16de652
6484 changed files with 232674 additions and 221097 deletions
@@ -6,6 +6,16 @@ It must **not** be used as a substitute for writing good git commit messages!
-------------------------------------------------------------------------------
## 2025-08-14 Alberto Ribon (hadr-string-diff-V11-03-00)
- G4FTFModel, G4DiffractiveExcitation : introduced the classification of
quasi-elastic and diffractive interactions among the inelastic interactions
of the FTF string model.
In the G4FTFModel class, the boolean flags fIsQuasiElasticInteraction and
fIsDiffractiveInteraction - inherited from the base class
G4VHighEnergyGenerator - are used in the methods Init and ExciteParticipants.
In the class G4DiffractiveExcitation, an extra, boolean parameter is added
to the method ExciteParticipants to tag diffractive interactions.
## 2024-07-18 Alberto Ribon (hadr-string-diff-V11-02-00)
- G4FTFParameters : renamed method SetElastis as SetElastic.
This does not have any effect - the random sequence stays the same.
@@ -57,7 +57,8 @@ class G4DiffractiveExcitation {
virtual G4bool ExciteParticipants( G4VSplitableHadron* aPartner,
G4VSplitableHadron* bPartner,
G4FTFParameters* theParameters,
G4ElasticHNScattering* theElastic ) const;
G4ElasticHNScattering* theElastic,
G4bool& isDiffractive ) const;
virtual void CreateStrings( G4VSplitableHadron* aHadron,
G4bool isProjectile,
@@ -89,7 +89,8 @@ G4DiffractiveExcitation::~G4DiffractiveExcitation() {}
G4bool G4DiffractiveExcitation::ExciteParticipants( G4VSplitableHadron* projectile,
G4VSplitableHadron* target,
G4FTFParameters* theParameters,
G4ElasticHNScattering* theElastic ) const {
G4ElasticHNScattering* theElastic,
G4bool& isDiffractive ) const {
#ifdef debugFTFexcitation
G4cout << G4endl << "FTF ExciteParticipants --------------" << G4endl;
@@ -294,7 +295,9 @@ G4bool G4DiffractiveExcitation::ExciteParticipants( G4VSplitableHadron* proje
if ( G4UniformRand() < common.ProbOfDiffraction ) {
returnResult = ExciteParticipants_doDiffraction( projectile, target, theParameters, common );
if ( returnResult ) isDiffractive = true;
} else {
returnResult = ExciteParticipants_doNonDiffraction( projectile, target, theParameters, common );
@@ -290,6 +290,9 @@ void G4FTFModel::Init( const G4Nucleus& aNucleus, const G4DynamicParticle& aProj
aNucleus.GetA_asInt() < 2 ) theParameters->SetProbabilityOfElasticScatt( 0.0 );
if ( SampleBinInterval() ) theParticipants.SetBminBmax( GetBmin(), GetBmax() );
fIsQuasiElasticInteraction = false;
fIsDiffractiveInteraction = false;
}
@@ -335,8 +338,8 @@ G4ExcitedStringVector* G4FTFModel::GetStrings() {
G4cout << "FTF ExciteParticipants Success? " << Success << G4endl;
#endif
if ( Success ) {
if ( Success ) {
#ifdef debugFTFmodel
G4cout << "FTF BuildStrings ";
#endif
@@ -850,6 +853,14 @@ G4bool G4FTFModel::ExciteParticipants() {
G4cout << "G4FTFModel::ExciteParticipants() " << G4endl;
#endif
// The quasi-elastic boolean flag is set "true" below because it makese easier to
// check whether the interaction is quasi-elastic - i.e. all the hadron projectile
// interactions with the target nucleons must be of elastic type - : it would be
// enough to have one hadron projectile - target nucleon interaction of non-elastic
// type to conclude that the interaction is not quasi-elastic.
fIsQuasiElasticInteraction = true;
fIsDiffractiveInteraction = false;
G4bool Success( false );
G4int MaxNumOfInelCollisions = G4int( theParameters->GetMaxNumberOfCollisions() );
if ( MaxNumOfInelCollisions > 0 ) { // Plab > Pbound, normal application of FTF is possible
@@ -923,7 +934,7 @@ G4bool G4FTFModel::ExciteParticipants() {
// TargetNucleon, Annihilation );
// if ( ! Result ) continue;
//}
if ( theExcitation->ExciteParticipants( projectile, target, theParameters, theElastic ) ) {
if ( theExcitation->ExciteParticipants( projectile, target, theParameters, theElastic, fIsDiffractiveInteraction ) ) {
InnerSuccess = true;
NumberOfNNcollisions++;
#ifdef debugBuildString
@@ -933,6 +944,7 @@ G4bool G4FTFModel::ExciteParticipants() {
// << "After tar " << target->Get4Momentum() << " "
// << target->Get4Momentum().mag() << G4endl;
#endif
fIsQuasiElasticInteraction = false;
} else {
InnerSuccess = theElastic->ElasticScattering( projectile, target, theParameters );
#ifdef debugBuildString
@@ -969,6 +981,7 @@ G4bool G4FTFModel::ExciteParticipants() {
G4VSplitableHadron* AdditionalString = 0;
if ( theAnnihilation->Annihilate( projectile, target, AdditionalString, theParameters ) ) {
InnerSuccess = true;
fIsQuasiElasticInteraction = false;
#ifdef debugBuildString
G4cout << "Annihilation successfull. " << "*AdditionalString "
<< AdditionalString << G4endl;
@@ -993,7 +1006,7 @@ G4bool G4FTFModel::ExciteParticipants() {
// Continue the interactions
theParticipants.StartLoop();
for ( G4int i = 0; i < CurrentInteraction; ++i ) theParticipants.Next();
/*
if ( target->GetStatus() == 4 ) {
// Skipping possible interactions of the annihilated nucleons