Geant4 11.0 Release Notes
December 10th, 2021 |
The code and binary libraries for the supported systems are available through our Source Code Web page.
We are grateful for the efforts of Geant4 users who have provided detailed feedback or comprehensive reports of issues. We thank in particular those who have contributed corrections, improvements or developments included in this release.
Please refer to the Geant4 User Documentation for further information about using Geant4.
General
Geometry, Fields and Transportation
Electromagnetic and optical physics
Hadronic physics configuration
Visualization and Modeling
Data Sets
// G4String x('a'); G4String x(1, 'a');
// char x = aG4String(42); char x = aG4String[42]; // G4String s = aG4String(3,14); G4String s = aG4String.substr(3, 14);
// auto i = aG4String.index("arg"); auto i = aG4String.find("arg");
// bool c = aG4String.isNull(); bool c = aG4String.empty();
// auto f = aG4String.first('x'); auto f = aG4String.find('x'); // auto l = aG4String.last('y'); auto l = aG4String.rfind('y');
// aG4String.prepend("foo"); aG4String.insert(0, "foo");
// G4int i = aG4String.compareTo(anotherString); G4int i = aG4String.compare(...); // replacement: std::string::compare // G4int i = aG4String.compareTo(anotherString, G4String::ignoreCase); G4int i = G4StrUtil::icompare(aG4String, anotherString); // aG4String.readLine(anIStream); std::getline(anIStream, aG4String); // aG4String.remove(42); aG4String.erase(42); // interface as std::string::erase // aG4String.contains("char or string"); G4StrUtil::contains(aG4String, "char or string"); // interface as C++23 std::string::contains //G4String c = aG4String.strip(...); G4String c = G4StrUtil::rstrip_copy(aG4String); // see also G4StrUtil::{rstrip,lstrip,lstrip_copy,strip,strip_copy} // aG4String.toLower(); G4StrUtil::to_lower(aG4String); // see also G4StrUtil::to_lower_copy // aG4String.toUpper(); G4StrUtil::to_upper(aG4String); // see also G4StrUtil::to_upper_copy
G4HadronInelasticProcess* xxxInelasticProcess = new G4HadronInelasticProcess( "xxxInelastic", G4Xxx::Definition() );where xxx can be either:
"PionPlus", "PionMinus", "KaonPlus", "KaonMinus", "KaonZeroS", "KaonZeroL", "Proton", "AntiProton", "Neutron", "AntiNeutron", "Deuteron", "Triton", "Alpha"for example:
G4KaonZeroLInelasticProcess* theInelasticProcess = new G4KaonZeroLInelasticProcess( "inelastic" );has been replaced by:
G4HadronInelasticProcess* theInelasticProcess = new G4HadronInelasticProcess( "inelastic", G4KaonZeroLong::Definition() );
G4HadronInelasticProcess* photonNuclear = new G4HadronInelasticProcess( "photonNuclear", G4Gamma::Definition() );
photonNuclear->AddDataSet( new G4PhotoNuclearCrossSection ); G4HadronicProcess* photonCapture = new G4HadronicProcess( "photonNuclear", fCapture ); G4HadronicProcess* photonFission = new G4HadronicProcess( "photonFission", fFission );
G4VCrossSectionDataSet* protonInelasticXS = new G4BGGNucleonInelasticXS( G4Proton::Definition() ); G4VCrossSectionDataSet* neutronInelasticXS = new G4NeutronInelasticXS; // a valid alternative could be: // G4VCrossSectionDataSet* neutronInelasticXS = new G4BGGNucleonInelasticXS( G4Neutron::Definition() ); G4VCrossSectionDataSet* pionPlusInelasticXS = new G4BGGPionInelasticXS( G4PionPlus::Definition() ); G4VCrossSectionDataSet* pionMinusInelasticXS = new G4BGGPionInelasticXS( G4PionMinus::Definition() ); // For kaons, hyperons and anti-hyperons G4VCrossSectionDataSet* ggHadInelasticXS = new G4CrossSectionInelastic( new G4ComponentGGHadronNucleusXsc ); // For deuteron, triton, He3, alpha and generic ions G4VCrossSectionDataSet* ionInelasticXS = new G4CrossSectionInelastic( new G4ComponentGGNuclNuclXsc ); // For anti_proton, anti_neutron, anti_deuteron, anti_triton, anti_He3 and anti_alpha G4VCrossSectionDataSet* antibaryonInelasticXS = new G4CrossSectionInelastic( new G4ComponentAntiNuclNuclearXS );
G4VCrossSectionDataSet* protonElasticXS = new G4BGGNucleonElasticXS( G4Proton::Definition() ); G4VCrossSectionDataSet* neutronElasticXS = new G4NeutronElasticXS; // a valid alternative could be: // G4VCrossSectionDataSet* neutronElasticXS = new G4BGGNucleonElasticXS( G4Neutron::Definition() ); G4VCrossSectionDataSet* pionPlusElasticXS = new G4BGGPionElasticXS( G4PionPlus::Definition() ); G4VCrossSectionDataSet* pionMinusElasticXS = new G4BGGPionElasticXS( G4PionMinus::Definition() ); // For kaons, hyperons and anti-hyperons G4VCrossSectionDataSet* ggHadElasticXS = new G4CrossSectionElastic( new G4ComponentGGHadronNucleusXsc ); // For deuteron, triton, He3, alpha and generic ions G4VCrossSectionDataSet* ggIonElasticXS = new G4CrossSectionElastic( new G4ComponentGGNuclNuclXsc ); // For anti_proton, anti_neutron, anti_deuteron, anti_triton, anti_He3 and anti_alpha G4VCrossSectionDataSet* antibaryonElasticXS = new G4CrossSectionElastic( new G4ComponentAntiNuclNuclearXS );
G4VCrossSectionDataSet* neutronCaptureXS = new G4NeutronCaptureXS;
G4VCrossSectionDataSet* neutronFissionXS = new G4ZeroXS; G4VCrossSectionDataSet* photoFissionXS = new G4ZeroXS;
G4HadronStoppingProcess* piMinusAbsorption = new G4HadronicAbsorptionBertini( G4PionMinus::Definition() );
G4HadronStoppingProcess* kMinusAbsorption = new G4HadronicAbsorptionBertini( G4KaonMinus::Definition() );
G4HadronStoppingProcess* antiProtonAbsorption = new G4HadronicAbsorptionFritiof( G4AntiProton::Definition() );No replacement for G4AntiNeutronAnnihilationAtRest, just remove it.
G4HadronStoppingProcess* sigmaMinusAbsorption = new G4HadronicAbsorptionBertini( G4SigmaMinus::Definition() );
G4HadronStoppingProcess* antiSigmaPlusAbsorption = new G4HadronicAbsorptionFritiof( G4AntiSigmaPlus::Definition() );