Import Geant4 10.7.0.beta source tree

This commit is contained in:
Gabriele Cosmo
2020-06-26 10:23:25 +02:00
parent c02c370437
commit 67ba86d073
1871 changed files with 174422 additions and 131884 deletions
+13 -6
View File
@@ -6,12 +6,19 @@
Hadronic physics-list/constructors/ions History
-----------------------------------------------
This file should be used to briefly summarize all major modifications
This file should be used to briefly summarize all major modifications
introduced in the code and keeptrack of all tags.
----------------------------------------------------------
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
30-April-2020, Ben Morgan (phys-ctor-ions-V10-06-01)
- Remove obsolete GRANULAR_DEPENDENCIES entries
21-February-2020, Vladimir Ivanchenko (phys-ctor-ions-V10-06-00)
- cleanup of all constructors: fixed names; make all constructor
signatures universal, removed thread local members, added c++11
keywords
16-August-2019, Vladimir Ivanchenko (phys-ctor-ions-V10-05-01)
- G4IonQMDPhysics : replacing explicit values for the QMD model
@@ -31,8 +38,8 @@ introduced in the code and keeptrack of all tags.
G4IonBinaryCascadePhysics is now identical to G4IonPhysics
06-August-2018, Alberto Ribon (phys-ctor-ions-V10-04-02)
- G4IonPhysics, G4IonBinaryCascadePhysics, G4IonPhysicsPHP : replaced the
explicit high-energy limit of hadronic physics with the one from
- G4IonPhysics, G4IonBinaryCascadePhysics, G4IonPhysicsPHP : replaced the
explicit high-energy limit of hadronic physics with the one from
G4HadronicParameters .
29-July-2018, Vladimir Ivanchenko (phys-ctor-ions-V10-04-01)
@@ -61,7 +68,7 @@ introduced in the code and keeptrack of all tags.
06-May-2014, Vladimir Ivanchenko (phys-ctor-ions-V10-00-02)
- Reuse G4PreCompoundModel and not create a new local in all
ion physics classes, should reduce memory and memory churn
ion physics classes, should reduce memory and memory churn
29-Jan-2014, Gunter Folger (phys-ctor-ions-V10-00-01)
- Removed from photolepton_hadron/muon_nuclear from sources.cmake
@@ -74,7 +81,7 @@ introduced in the code and keeptrack of all tags.
- Removed low_energy and high_energy from sources.cmake and GNUmakefile.
09-Jun-2013, Andrea Dotti (phys-ctor-ions-V09-06-04)
- MT fixes: make private data members TLS since constructors is
- MT fixes: make private data members TLS since constructors is
shared instance, but processes not
19-Apr-2013, Alberto Ribon (phys-ctor-ions-V09-06-03)
@@ -91,5 +98,5 @@ introduced in the code and keeptrack of all tags.
- Fixed warning messages in G4IonQMDPhysics.
10-Jan-2013, Gunter Folger (phys-ctor-ions-V09-06-00)
- new directory structure introduced.
- new directory structure introduced.
constructors/ions classes
@@ -41,22 +41,13 @@
#include "globals.hh"
#include "G4IonPhysics.hh"
class G4HadronInelasticProcess;
class G4HadronicInteraction;
class G4VCrossSectionDataSet;
class G4VComponentCrossSection;
class G4FTFBuilder;
class G4BinaryLightIonReaction;
class G4IonBinaryCascadePhysics : public G4IonPhysics
{
public:
G4IonBinaryCascadePhysics(G4int ver = 0);
G4IonBinaryCascadePhysics(const G4String& name, G4int ver = 0);
virtual ~G4IonBinaryCascadePhysics();
~G4IonBinaryCascadePhysics() override;
};
#endif
@@ -54,16 +54,16 @@ class G4IonINCLXXPhysics : public G4VPhysicsConstructor
public:
G4IonINCLXXPhysics(G4int ver = 0);
G4IonINCLXXPhysics(const G4String& name, G4int ver = 0);
virtual ~G4IonINCLXXPhysics();
~G4IonINCLXXPhysics() override;
// This method will be invoked in the Construct() method.
// each particle type will be instantiated
virtual void ConstructParticle();
void ConstructParticle() override;
// This method will be invoked in the Construct() method.
// each physics process will be instantiated and
// registered to the process manager of each particle type
virtual void ConstructProcess();
void ConstructProcess() override;
private:
@@ -73,13 +73,6 @@ private:
G4HadronicInteraction*,
G4VCrossSectionDataSet*);
static G4ThreadLocal G4INCLXXInterface* theINCLXXDeuteron;
static G4ThreadLocal G4INCLXXInterface* theINCLXXTriton;
static G4ThreadLocal G4INCLXXInterface* theINCLXXHe3;
static G4ThreadLocal G4INCLXXInterface* theINCLXXAlpha;
static G4ThreadLocal G4INCLXXInterface* theINCLXXIons;
static G4ThreadLocal G4FTFBuilder* theFTFPBuilder;
G4double emaxINCLXX;
G4double deltaE;
@@ -50,8 +50,8 @@ class G4IonPhysics : public G4VPhysicsConstructor
public:
G4IonPhysics(G4int ver = 0);
G4IonPhysics(const G4String& nname);
virtual ~G4IonPhysics();
G4IonPhysics(const G4String& nname, G4int ver = 0);
~G4IonPhysics() override;
// This method will be invoked in the Construct() method.
// each physics process will be instantiated and
@@ -65,14 +65,11 @@ private:
G4HadronicInteraction*, G4HadronicInteraction*,
G4VCrossSectionDataSet*);
static G4ThreadLocal G4FTFBuilder* theBuilder;
protected:
G4int verbose;
};
#endif
@@ -54,14 +54,14 @@ class G4IonPhysicsPHP : public G4VPhysicsConstructor {
public:
G4IonPhysicsPHP( G4int ver = 0 );
G4IonPhysicsPHP( const G4String& nname );
virtual ~G4IonPhysicsPHP();
G4IonPhysicsPHP( const G4String& nname, G4int ver = 0 );
~G4IonPhysicsPHP() override;
// This method will be invoked in the Construct() method.
// each physics process will be instantiated and
// registered to the process manager of each particle type
void ConstructParticle();
void ConstructProcess();
void ConstructParticle() override;
void ConstructProcess() override;
private:
@@ -70,8 +70,6 @@ class G4IonPhysicsPHP : public G4VPhysicsConstructor {
G4HadronicInteraction*, G4HadronicInteraction*,
G4VCrossSectionDataSet*);
static G4ThreadLocal G4FTFBuilder* theBuilder;
G4int verbose;
};
@@ -50,8 +50,8 @@ class G4IonPhysicsXS : public G4IonPhysics
public:
G4IonPhysicsXS(G4int ver = 0);
G4IonPhysicsXS(const G4String& nname);
virtual ~G4IonPhysicsXS();
G4IonPhysicsXS(const G4String& nname, G4int ver = 0);
~G4IonPhysicsXS() override;
private:
@@ -44,11 +44,9 @@
#include <vector>
class G4HadronInelasticProcess;
class G4HadronicInteraction;
class G4BinaryLightIonReaction;
class G4QMDReaction;
class G4FTFBuilder;
class G4VCrossSectionDataSet;
class G4IonQMDPhysics : public G4VPhysicsConstructor
@@ -56,16 +54,16 @@ class G4IonQMDPhysics : public G4VPhysicsConstructor
public:
G4IonQMDPhysics(G4int verb = 0);
G4IonQMDPhysics(const G4String& name, G4int ver = 0);
virtual ~G4IonQMDPhysics();
~G4IonQMDPhysics() override;
// This method will be invoked in the Construct() method.
// each particle type will be instantiated
virtual void ConstructParticle();
void ConstructParticle() override;
// This method will be invoked in the Construct() method.
// each physics process will be instantiated and
// registered to the process manager of each particle type
virtual void ConstructProcess();
void ConstructProcess() override;
private:
@@ -76,8 +74,6 @@ private:
G4HadronicInteraction*,
G4VCrossSectionDataSet*);
static G4ThreadLocal G4FTFBuilder* theFTFPBuilder;
G4double eminQMD;
G4double emaxQMD;
G4double overlap;
@@ -114,14 +114,11 @@ GEANT4_DEFINE_MODULE(NAME G4phys_ctor_ions
G4had_mod_man
G4had_mod_util
G4had_lept_nuclear
G4had_neu_hp
G4had_preequ_exciton
G4had_string_diff
G4had_string_frag
G4had_string_man
G4had_theo_max
G4hadronic_HE
G4hadronic_LE
G4hadronic_bert_cascade
G4hadronic_binary
G4hadronic_coherent_elastic
@@ -46,8 +46,8 @@ G4IonBinaryCascadePhysics::G4IonBinaryCascadePhysics(G4int ver)
: G4IonPhysics(ver)
{}
G4IonBinaryCascadePhysics::G4IonBinaryCascadePhysics(const G4String& name, G4int)
: G4IonPhysics(name)
G4IonBinaryCascadePhysics::G4IonBinaryCascadePhysics(const G4String&, G4int ver)
: G4IonPhysics(ver)
{}
G4IonBinaryCascadePhysics::~G4IonBinaryCascadePhysics()
@@ -68,13 +68,6 @@
//
G4_DECLARE_PHYSCONSTR_FACTORY(G4IonINCLXXPhysics);
G4ThreadLocal G4INCLXXInterface* G4IonINCLXXPhysics::theINCLXXDeuteron = nullptr;
G4ThreadLocal G4INCLXXInterface* G4IonINCLXXPhysics::theINCLXXTriton = nullptr;
G4ThreadLocal G4INCLXXInterface* G4IonINCLXXPhysics::theINCLXXHe3 = nullptr;
G4ThreadLocal G4INCLXXInterface* G4IonINCLXXPhysics::theINCLXXAlpha = nullptr;
G4ThreadLocal G4INCLXXInterface* G4IonINCLXXPhysics::theINCLXXIons = nullptr;
G4ThreadLocal G4FTFBuilder* G4IonINCLXXPhysics::theFTFPBuilder = nullptr;
G4IonINCLXXPhysics::G4IonINCLXXPhysics(G4int ver) :
G4IonINCLXXPhysics("IonINCLXX", ver)
{}
@@ -92,25 +85,15 @@ G4IonINCLXXPhysics::G4IonINCLXXPhysics(const G4String& nname, G4int ver)
}
G4IonINCLXXPhysics::~G4IonINCLXXPhysics()
{
//For MT need to explicitly set back pointers to zero:
//variables are static and if new threads are created we can have problems
//since variable is still pointing old value
delete theFTFPBuilder; theFTFPBuilder=nullptr;
delete theINCLXXDeuteron; theINCLXXDeuteron = nullptr;
delete theINCLXXTriton; theINCLXXTriton=nullptr;
delete theINCLXXHe3; theINCLXXHe3=nullptr;
delete theINCLXXAlpha; theINCLXXAlpha=nullptr;
delete theINCLXXIons; theINCLXXIons=nullptr;
}
{}
void G4IonINCLXXPhysics::ConstructProcess()
{
theINCLXXDeuteron= new G4INCLXXInterface();
theINCLXXTriton= new G4INCLXXInterface();
theINCLXXHe3= new G4INCLXXInterface();
theINCLXXAlpha= new G4INCLXXInterface();
theINCLXXIons= new G4INCLXXInterface();
G4INCLXXInterface* theINCLXXDeuteron= new G4INCLXXInterface();
G4INCLXXInterface* theINCLXXTriton= new G4INCLXXInterface();
G4INCLXXInterface* theINCLXXHe3= new G4INCLXXInterface();
G4INCLXXInterface* theINCLXXAlpha= new G4INCLXXInterface();
G4INCLXXInterface* theINCLXXIons= new G4INCLXXInterface();
G4HadronicInteraction* p =
G4HadronicInteractionRegistry::Instance()->FindModel("PRECO");
@@ -123,8 +106,8 @@ void G4IonINCLXXPhysics::ConstructProcess()
G4double emax = G4HadronicParameters::Instance()->GetMaxEnergy();
G4HadronicInteraction* theFTFP = nullptr;
if(emax > emaxINCLXX) {
theFTFPBuilder = new G4FTFBuilder("FTFP",thePreCompound);
theFTFP = theFTFPBuilder->GetModel();
G4FTFBuilder theFTFPBuilder("FTFP",thePreCompound);
theFTFP = theFTFPBuilder.GetModel();
theFTFP->SetMinEnergy(emaxINCLXX - deltaE);
theFTFP->SetMaxEnergy(emax);
}
@@ -67,20 +67,16 @@ using namespace std;
//
G4_DECLARE_PHYSCONSTR_FACTORY(G4IonPhysics);
G4ThreadLocal G4FTFBuilder* G4IonPhysics::theBuilder=nullptr;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4IonPhysics::G4IonPhysics(G4int ver)
: G4IonPhysics("ionInelasticFTFP_BIC")
{
verbose = ver;
}
: G4IonPhysics("ionInelasticFTFP_BIC", ver)
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4IonPhysics::G4IonPhysics(const G4String& nname)
: G4VPhysicsConstructor(nname),verbose(1)
G4IonPhysics::G4IonPhysics(const G4String& nname, G4int ver)
: G4VPhysicsConstructor(nname),verbose(ver)
{
SetPhysicsType(bIons);
if(verbose > 1) { G4cout << "### IonPhysics: " << nname << G4endl; }
@@ -89,13 +85,7 @@ G4IonPhysics::G4IonPhysics(const G4String& nname)
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4IonPhysics::~G4IonPhysics()
{
// Explictly setting pointers to zero is actually needed.
// These are static variables, in case we restart threads
// we need to re-create objects
delete theBuilder;
theBuilder = nullptr;
}
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -126,8 +116,8 @@ void G4IonPhysics::ConstructProcess()
// FTFP
G4HadronicInteraction* theFTFP = nullptr;
if(emax > theIonBC->GetMaxEnergy()) {
theBuilder = new G4FTFBuilder("FTFP",thePreCompound);
theFTFP = theBuilder->GetModel();
G4FTFBuilder theBuilder("FTFP",thePreCompound);
theFTFP = theBuilder.GetModel();
theFTFP->SetMinEnergy( G4HadronicParameters::Instance()->GetMinEnergyTransitionFTF_Cascade() );
theFTFP->SetMaxEnergy( emax );
}
@@ -72,16 +72,12 @@ using namespace std;
G4_DECLARE_PHYSCONSTR_FACTORY( G4IonPhysicsPHP );
G4ThreadLocal G4FTFBuilder* G4IonPhysicsPHP::theBuilder = nullptr;
G4IonPhysicsPHP::G4IonPhysicsPHP( G4int ver )
: G4IonPhysicsPHP( "ionInelasticFTFP_BIC_PHP" )
{
verbose = ver;
}
: G4IonPhysicsPHP( "ionInelasticFTFP_BIC_PHP", ver)
{}
G4IonPhysicsPHP::G4IonPhysicsPHP( const G4String& nname )
: G4VPhysicsConstructor( nname ), verbose( 1 )
G4IonPhysicsPHP::G4IonPhysicsPHP( const G4String& nname, G4int ver )
: G4VPhysicsConstructor( nname ), verbose( ver )
{
SetPhysicsType( bIons );
G4DeexPrecoParameters* param = G4NuclearLevelData::GetInstance()->GetParameters();
@@ -89,21 +85,15 @@ G4IonPhysicsPHP::G4IonPhysicsPHP( const G4String& nname )
if ( verbose > 1 ) G4cout << "### G4IonPhysics: " << nname << G4endl;
}
G4IonPhysicsPHP::~G4IonPhysicsPHP() {
//Explictly setting pointers to zero is actually needed.
//These are static variables, in case we restart threads we need to re-create objects
delete theBuilder; theBuilder = nullptr;
}
void G4IonPhysicsPHP::ConstructParticle() {
// Construct ions
G4IonConstructor pConstructor;
pConstructor.ConstructParticle();
}
void G4IonPhysicsPHP::ConstructProcess() {
const G4double maxPHP = 200.0*MeV;
@@ -129,8 +119,8 @@ void G4IonPhysicsPHP::ConstructProcess() {
// FTFP
G4HadronicInteraction* theFTFP = nullptr;
if(maxFTF > maxBIC) {
theBuilder = new G4FTFBuilder( "FTFP", thePreCompound );
theFTFP = theBuilder->GetModel();
G4FTFBuilder theBuilder( "FTFP", thePreCompound );
theFTFP = theBuilder.GetModel();
theFTFP->SetMinEnergy( minFTF );
theFTFP->SetMaxEnergy( maxFTF );
}
@@ -192,7 +182,6 @@ void G4IonPhysicsPHP::ConstructProcess() {
if ( verbose > 1 ) G4cout << "G4IonPhysicsPHP::ConstructProcess done! " << G4endl;
}
void G4IonPhysicsPHP::AddProcess( const G4String& name, G4ParticleDefinition* part,
G4ParticleHPInelasticData* xsecPHP, G4HadronicInteraction* aPHP,
G4HadronicInteraction* aBIC,
@@ -58,20 +58,14 @@ G4_DECLARE_PHYSCONSTR_FACTORY(G4IonPhysicsXS);
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4IonPhysicsXS::G4IonPhysicsXS(G4int ver)
: G4IonPhysicsXS("ionPhysicsXS")
{
verbose = ver;
}
: G4IonPhysicsXS("ionPhysicsXS", ver)
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4IonPhysicsXS::G4IonPhysicsXS(const G4String& nname)
: G4IonPhysics(nname)
{
G4DeexPrecoParameters* param = G4NuclearLevelData::GetInstance()->GetParameters();
param->SetDeexChannelsType(fCombined);
if(verbose > 1) { G4cout << "### IonPhysics: " << nname << G4endl; }
}
G4IonPhysicsXS::G4IonPhysicsXS(const G4String& nname, G4int ver)
: G4IonPhysics(nname, ver)
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -79,8 +79,6 @@
//
G4_DECLARE_PHYSCONSTR_FACTORY(G4IonQMDPhysics);
G4ThreadLocal G4FTFBuilder* G4IonQMDPhysics::theFTFPBuilder = nullptr;
G4IonQMDPhysics::G4IonQMDPhysics(G4int ver)
: G4IonQMDPhysics("IonQMD", ver)
{}
@@ -98,9 +96,7 @@ G4IonQMDPhysics::G4IonQMDPhysics(const G4String& nname, G4int ver)
}
G4IonQMDPhysics::~G4IonQMDPhysics()
{
delete theFTFPBuilder; theFTFPBuilder = nullptr;
}
{}
void G4IonQMDPhysics::ConstructProcess()
{
@@ -116,8 +112,8 @@ void G4IonQMDPhysics::ConstructProcess()
emaxQMD = G4HadronicParameters::Instance()->GetMaxEnergyTransitionFTF_Cascade();
G4HadronicInteraction* theFTFP = nullptr;
if(emax > emaxQMD) {
theFTFPBuilder = new G4FTFBuilder("FTFP",thePreCompound);
theFTFP = theFTFPBuilder->GetModel();
G4FTFBuilder theFTFPBuilder("FTFP",thePreCompound);
theFTFP = theFTFPBuilder.GetModel();
theFTFP->SetMinEnergy(emaxQMD - overlap);
theFTFP->SetMaxEnergy(emax);
}