Import Geant4 11.3.0.beta source tree

This commit is contained in:
Gabriele Cosmo
2024-06-28 13:08:51 +02:00
parent f7b23877ed
commit e58e650b32
5232 changed files with 239416 additions and 244360 deletions
@@ -0,0 +1,84 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// -------------------------------------------------------------------
//
// Geant4 header file
//
// File name: G4ParticleHPCaptureDataPT.hh
//
// Authors: Marek Zmeskal (CTU, Czech Technical University in Prague, Czech Republic)
// Loic Thulliez (CEA France)
//
// Creation date: 4 June 2024
//
// Description: Class for utilization of cross-sections from
// probability tables in the unresolved resonance region
// for capture channel.
// Cross-section data set for a high precision
// (based on evaluated data libraries) description of
// neutron Capture scattering below 20 MeV.
// To be used in your physics list in case you need
// this physics.
// In this case you want to register an object of this
// class with the corresponding process.
//
// Modifications:
//
// -------------------------------------------------------------------
//
//
#ifndef G4ParticleHPCaptureDataPT_h
#define G4ParticleHPCaptureDataPT_h 1
#include "G4VCrossSectionDataSet.hh"
#include <vector>
class G4DynamicParticle;
class G4ParticleDefinition;
class G4Element;
class G4ParticleHPCaptureDataPT : public G4VCrossSectionDataSet {
public:
G4ParticleHPCaptureDataPT();
~G4ParticleHPCaptureDataPT();
void BuildPhysicsTable( const G4ParticleDefinition& );
G4bool IsIsoApplicable( const G4DynamicParticle* , G4int /*Z*/ , G4int /*A*/ ,
const G4Element* /*elm*/ , const G4Material* /*mat*/ );
G4double GetIsoCrossSection( const G4DynamicParticle* , G4int /*Z*/ , G4int /*A*/ ,
const G4Isotope* /*iso*/ , const G4Element* /*elm*/ , const G4Material* /*mat*/ );
void SetVerboseLevel( G4int );
G4int GetVerboseLevel() const;
virtual void CrossSectionDescription( std::ostream& ) const;
private:
std::vector< std::pair< G4double, G4double > >* URRlimits;
};
#endif
@@ -0,0 +1,79 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// -------------------------------------------------------------------
//
// Geant4 header file
//
// File name: G4ParticleHPCaptureURR.hh
//
// Authors: Marek Zmeskal (CTU, Czech Technical University in Prague, Czech Republic)
// Loic Thulliez (CEA France)
//
// Creation date: 4 June 2024
//
// Description: Final state production model for a high precision
// (based on evaluated data libraries) description of
// neutron Capture scattering below 20 MeV.
// To be used in your physics list in case you need
// this physics.
// In this case you want to register an object of this
// class with the corresponding process.
//
// Modifications:
//
// -------------------------------------------------------------------
//
//
#ifndef G4ParticleHPCaptureURR_h
#define G4ParticleHPCaptureURR_h 1
#include "globals.hh"
#include "G4HadronicInteraction.hh"
#include <vector>
class G4NeutronHPCapture;
class G4ParticleHPCaptureURR : public G4HadronicInteraction {
public:
G4ParticleHPCaptureURR();
~G4ParticleHPCaptureURR();
G4HadFinalState* ApplyYourself( const G4HadProjectile& aTrack, G4Nucleus& aTargetNucleus );
virtual const std::pair< G4double, G4double > GetFatalEnergyCheckLevels() const;
G4int GetVerboseLevel() const;
void SetVerboseLevel( G4int );
void BuildPhysicsTable( const G4ParticleDefinition& );
virtual void ModelDescription( std::ostream& outFile ) const;
private:
G4NeutronHPCapture* neutronHPcapture;
std::vector< std::pair< G4double, G4double > >* URRlimits{ nullptr };
};
#endif
@@ -127,6 +127,9 @@ public:
G4ParticleHPFinalState** GetFinalStates() const { return theFinalStates; }
// method added by M.Zmeskal 02/2024 - to be used in G4ParticleHPFissionURR
G4WendtFissionFragmentGenerator* GetWendtFissionGenerator();
G4ParticleHPChannel(G4ParticleHPChannel &) = delete;
G4ParticleHPChannel & operator=
(const G4ParticleHPChannel &right) = delete;
@@ -55,6 +55,9 @@ class G4ParticleHPChannelList
G4HadFinalState* ApplyYourself(const G4Element* theElement,
const G4HadProjectile& aTrack);
// method added by M.Zmeskal 02/2024 - to be used in G4ParticleHPInelasticURR
G4HadFinalState * ApplyYourself(G4int, G4int, G4int, const G4HadProjectile & aTrack);
void Init(G4Element* anElement, const G4String& dirName,
G4ParticleDefinition* projectile);
@@ -69,6 +72,18 @@ class G4ParticleHPChannelList
return result;
}
// method added by M.Zmeskal 02/2024 - to be used in G4ParticleHPIsoProbabilityTable
inline G4double GetWeightedXsec( G4double anEnergy, G4int isotopeJ ) {
G4double result = 0.0;
G4int i;
for ( i = 0; i < nChannels; i++ ) {
if ( theChannels[i]->HasAnyData( isotopeJ ) ) {
result += std::max( 0.0, theChannels[i]->GetWeightedXsec( anEnergy, isotopeJ ) );
}
}
return result;
}
G4int GetNumberOfChannels() { return nChannels; }
G4bool HasDataInAnyFinalState()
@@ -0,0 +1,84 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// -------------------------------------------------------------------
//
// Geant4 header file
//
// File name: G4ParticleHPElasticDataPT.hh
//
// Authors: Marek Zmeskal (CTU, Czech Technical University in Prague, Czech Republic)
// Loic Thulliez (CEA France)
//
// Creation date: 4 June 2024
//
// Description: Class for utilization of cross-sections from
// probability tables in the unresolved resonance region
// for elastic channel.
// Cross-section data set for a high precision
// (based on evaluated data libraries) description of
// neutron elastic scattering below 20 MeV.
// To be used in your physics list in case you need
// this physics.
// In this case you want to register an object of this
// class with the corresponding process.
//
// Modifications:
//
// -------------------------------------------------------------------
//
//
#ifndef G4ParticleHPElasticDataPT_h
#define G4ParticleHPElasticDataPT_h 1
#include "G4VCrossSectionDataSet.hh"
#include <vector>
class G4DynamicParticle;
class G4ParticleDefinition;
class G4Element;
class G4ParticleHPElasticDataPT : public G4VCrossSectionDataSet {
public:
G4ParticleHPElasticDataPT();
~G4ParticleHPElasticDataPT();
void BuildPhysicsTable( const G4ParticleDefinition& );
G4bool IsIsoApplicable( const G4DynamicParticle* , G4int /*Z*/ , G4int /*A*/ ,
const G4Element* /*elm*/ , const G4Material* /*mat*/ );
G4double GetIsoCrossSection( const G4DynamicParticle* , G4int /*Z*/ , G4int /*A*/ ,
const G4Isotope* /*iso*/ , const G4Element* /*elm*/ , const G4Material* /*mat*/ );
void SetVerboseLevel( G4int );
G4int GetVerboseLevel() const;
virtual void CrossSectionDescription( std::ostream& ) const;
private:
std::vector< std::pair< G4double, G4double > >* URRlimits;
};
#endif
@@ -0,0 +1,79 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// -------------------------------------------------------------------
//
// Geant4 header file
//
// File name: G4ParticleHPElasticURR.hh
//
// Authors: Marek Zmeskal (CTU, Czech Technical University in Prague, Czech Republic)
// Loic Thulliez (CEA France)
//
// Creation date: 4 June 2024
//
// Description: Final state production model for a high precision
// (based on evaluated data libraries) description of
// neutron elastic scattering below 20 MeV.
// To be used in your physics list in case you need
// this physics.
// In this case you want to register an object of this
// class with the corresponding process.
//
// Modifications:
//
// -------------------------------------------------------------------
//
//
#ifndef G4ParticleHPElasticURR_h
#define G4ParticleHPElasticURR_h 1
#include "globals.hh"
#include "G4HadronicInteraction.hh"
#include <vector>
class G4ParticleHPElastic;
class G4ParticleHPElasticURR : public G4HadronicInteraction {
public:
G4ParticleHPElasticURR();
~G4ParticleHPElasticURR();
G4HadFinalState* ApplyYourself( const G4HadProjectile& aTrack, G4Nucleus& aTargetNucleus );
virtual const std::pair< G4double, G4double > GetFatalEnergyCheckLevels() const;
G4int GetVerboseLevel() const;
void SetVerboseLevel( G4int );
void BuildPhysicsTable( const G4ParticleDefinition& );
virtual void ModelDescription( std::ostream& outFile ) const;
private:
G4ParticleHPElastic* particleHPelastic;
std::vector< std::pair< G4double, G4double > >* URRlimits{ nullptr };
};
#endif
@@ -0,0 +1,84 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// -------------------------------------------------------------------
//
// Geant4 header file
//
// File name: G4ParticleHPFissionDataPT.hh
//
// Authors: Marek Zmeskal (CTU, Czech Technical University in Prague, Czech Republic)
// Loic Thulliez (CEA France)
//
// Creation date: 4 June 2024
//
// Description: Class for utilization of cross-sections from
// probability tables in the unresolved resonance region
// for fission channel.
// Cross-section data set for a high precision
// (based on evaluated data libraries) description of
// neutron Fission scattering below 20 MeV.
// To be used in your physics list in case you need
// this physics.
// In this case you want to register an object of this
// class with the corresponding process.
//
// Modifications:
//
// -------------------------------------------------------------------
//
//
#ifndef G4ParticleHPFissionDataPT_h
#define G4ParticleHPFissionDataPT_h 1
#include "G4VCrossSectionDataSet.hh"
#include <vector>
class G4DynamicParticle;
class G4ParticleDefinition;
class G4Element;
class G4ParticleHPFissionDataPT : public G4VCrossSectionDataSet {
public:
G4ParticleHPFissionDataPT();
~G4ParticleHPFissionDataPT();
void BuildPhysicsTable( const G4ParticleDefinition& );
G4bool IsIsoApplicable( const G4DynamicParticle* , G4int /*Z*/ , G4int /*A*/ ,
const G4Element* /*elm*/ , const G4Material* /*mat*/ );
G4double GetIsoCrossSection( const G4DynamicParticle* , G4int /*Z*/ , G4int /*A*/ ,
const G4Isotope* /*iso*/ , const G4Element* /*elm*/ , const G4Material* /*mat*/ );
void SetVerboseLevel( G4int );
G4int GetVerboseLevel() const;
virtual void CrossSectionDescription( std::ostream& ) const;
private:
std::vector< std::pair< G4double, G4double > >* URRlimits;
};
#endif
@@ -0,0 +1,78 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// -------------------------------------------------------------------
//
// Geant4 header file
//
// File name: G4ParticleHPFissionURR.hh
//
// Authors: Marek Zmeskal (CTU, Czech Technical University in Prague, Czech Republic)
// Loic Thulliez (CEA France)
//
// Creation date: 4 June 2024
//
// Description: Final state production model for a high precision
// (based on evaluated data libraries) description of
// neutron Fission scattering below 20 MeV.
// To be used in your physics list in case you need
// this physics.
// In this case you want to register an object of this
// class with the corresponding process.
//
// Modifications:
//
// -------------------------------------------------------------------
//
//
#ifndef G4ParticleHPFissionURR_h
#define G4ParticleHPFissionURR_h 1
#include "globals.hh"
#include "G4HadronicInteraction.hh"
#include <vector>
class G4ParticleHPFission;
class G4ParticleHPFissionURR : public G4HadronicInteraction {
public:
G4ParticleHPFissionURR();
~G4ParticleHPFissionURR();
G4HadFinalState* ApplyYourself( const G4HadProjectile& aTrack, G4Nucleus& aTargetNucleus );
virtual const std::pair< G4double, G4double > GetFatalEnergyCheckLevels() const;
G4int GetVerboseLevel() const;
void SetVerboseLevel( G4int );
void BuildPhysicsTable( const G4ParticleDefinition& );
virtual void ModelDescription( std::ostream& outFile ) const;
private:
G4ParticleHPFission* particleHPfission;
std::vector< std::pair< G4double, G4double > >* URRlimits{ nullptr };
};
#endif
@@ -0,0 +1,84 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// -------------------------------------------------------------------
//
// Geant4 header file
//
// File name: G4ParticleHPInelasticDataPT.hh
//
// Authors: Marek Zmeskal (CTU, Czech Technical University in Prague, Czech Republic)
// Loic Thulliez (CEA France)
//
// Creation date: 4 June 2024
//
// Description: Class for utilization of cross-sections from
// probability tables in the unresolved resonance region
// for inelastic channel.
// Cross-section data set for a high precision
// (based on evaluated data libraries) description of
// neutron Inelastic scattering below 20 MeV.
// To be used in your physics list in case you need
// this physics.
// In this case you want to register an object of this
// class with the corresponding process.
//
// Modifications:
//
// -------------------------------------------------------------------
//
//
#ifndef G4ParticleHPInelasticDataPT_h
#define G4ParticleHPInelasticDataPT_h 1
#include "G4VCrossSectionDataSet.hh"
#include <vector>
class G4DynamicParticle;
class G4ParticleDefinition;
class G4Element;
class G4ParticleHPInelasticDataPT : public G4VCrossSectionDataSet {
public:
G4ParticleHPInelasticDataPT();
~G4ParticleHPInelasticDataPT();
void BuildPhysicsTable( const G4ParticleDefinition& );
G4bool IsIsoApplicable( const G4DynamicParticle* , G4int /*Z*/ , G4int /*A*/ ,
const G4Element* /*elm*/ , const G4Material* /*mat*/ );
G4double GetIsoCrossSection( const G4DynamicParticle* , G4int /*Z*/ , G4int /*A*/ ,
const G4Isotope* /*iso*/ , const G4Element* /*elm*/ , const G4Material* /*mat*/ );
void SetVerboseLevel( G4int );
G4int GetVerboseLevel() const;
virtual void CrossSectionDescription( std::ostream& ) const;
private:
std::vector< std::pair< G4double, G4double > >* URRlimits;
};
#endif
@@ -0,0 +1,80 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// -------------------------------------------------------------------
//
// Geant4 header file
//
// File name: G4ParticleHPInelasticURR.hh
//
// Authors: Marek Zmeskal (CTU, Czech Technical University in Prague, Czech Republic)
// Loic Thulliez (CEA France)
//
// Creation date: 4 June 2024
//
// Description: Final state production model for a high precision
// (based on evaluated data libraries) description of
// neutron Inelastic scattering below 20 MeV.
// To be used in your physics list in case you need
// this physics.
// In this case you want to register an object of this
// class with the corresponding process.
//
// Modifications:
//
// -------------------------------------------------------------------
//
//
#ifndef G4ParticleHPInelasticURR_h
#define G4ParticleHPInelasticURR_h 1
#include "globals.hh"
#include "G4HadronicInteraction.hh"
#include <vector>
class G4ParticleHPInelastic;
class G4ParticleHPInelasticURR : public G4HadronicInteraction {
public:
G4ParticleHPInelasticURR();
~G4ParticleHPInelasticURR();
G4HadFinalState* ApplyYourself( const G4HadProjectile& aTrack, G4Nucleus& aTargetNucleus );
virtual const std::pair< G4double, G4double > GetFatalEnergyCheckLevels() const;
G4int GetVerboseLevel() const;
void SetVerboseLevel( G4int );
void BuildPhysicsTable( const G4ParticleDefinition& );
virtual void ModelDescription( std::ostream& outFile ) const;
private:
G4ParticleHPInelastic* particleHPinelastic;
std::vector< std::pair< G4double, G4double > >* URRlimits{ nullptr };
G4bool doNOTusePTforInelastic{ true };
};
#endif
@@ -0,0 +1,101 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// -------------------------------------------------------------------
//
// Geant4 header file
//
// File name: G4ParticleHPIsoProbabilityTable.hh
//
// Authors: Marek Zmeskal (CTU, Czech Technical University in Prague, Czech Republic)
// Loic Thulliez (CEA France)
//
// Creation date: 4 June 2024
//
// Description: Class for the probability table of the given isotope
// and for the given temperature.
// It reads the files with probability tables and
// finds the correct cross-section.
//
// Modifications:
//
// -------------------------------------------------------------------
//
//
#ifndef G4ParticleHPIsoProbabilityTable_h
#define G4ParticleHPIsoProbabilityTable_h 1
#include "globals.hh"
#include <vector>
#include <thread>
#include <map>
class G4ParticleHPVector;
class G4DynamicParticle;
class G4Element;
class G4ParticleHPIsoProbabilityTable {
public:
G4ParticleHPIsoProbabilityTable();
virtual ~G4ParticleHPIsoProbabilityTable();
virtual void Init( G4int, G4int, G4int, G4double, G4String );
virtual G4double GetCorrelatedIsoCrossSectionPT( const G4DynamicParticle*, G4int, const G4Element*,
G4double&, G4double&, std::thread::id& );
virtual G4double GetIsoCrossSectionPT( const G4DynamicParticle*, G4int, const G4Element*, G4double&,
std::map< std::thread::id, G4double >&, std::thread::id& );
protected:
G4double GetDopplerBroadenedElasticXS( const G4DynamicParticle*, G4int, G4int );
G4double GetDopplerBroadenedCaptureXS( const G4DynamicParticle*, G4int, G4int );
G4double GetDopplerBroadenedFissionXS( const G4DynamicParticle*, G4int, G4int );
G4double GetDopplerBroadenedInelasticXS( const G4DynamicParticle*, G4int, G4int );
G4int Z;
G4int A;
G4int m;
G4double T;
G4double Emin;
G4double Emax;
G4int nEnergies;
std::map< std::thread::id, G4double > energy_cache;
std::map< std::thread::id, G4double > xsela_cache;
std::map< std::thread::id, G4double > xscap_cache;
std::map< std::thread::id, G4double > xsfiss_cache;
G4ParticleHPVector* theEnergies;
std::vector< std::vector< G4double >* >* theProbabilities;
std::vector< std::vector< G4double >* >* theElasticData;
std::vector< std::vector< G4double >* >* theCaptureData;
std::vector< std::vector< G4double >* >* theFissionData;
std::vector< std::vector< G4double >* >* theInelasticData;
G4String filename;
};
#endif
@@ -0,0 +1,75 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// -------------------------------------------------------------------
//
// Geant4 header file
//
// File name: G4ParticleHPIsoProbabilityTable_CALENDF.hh
//
// Authors: Marek Zmeskal (CTU, Czech Technical University in Prague, Czech Republic)
// Loic Thulliez (CEA France)
//
// Creation date: 4 June 2024
//
// Description: Class for the probability table of the given isotope
// and for the given temperature generated with CALENDF.
// It reads the files with probability tables and
// finds the correct cross-section.
//
// Modifications:
//
// -------------------------------------------------------------------
//
//
#ifndef G4ParticleHPIsoProbabilityTable_CALENDF_h
#define G4ParticleHPIsoProbabilityTable_CALENDF_h 1
#include "globals.hh"
#include "G4ParticleHPIsoProbabilityTable.hh"
#include <vector>
#include <thread>
#include <map>
class G4DynamicParticle;
class G4Element;
class G4ParticleHPIsoProbabilityTable_CALENDF : public G4ParticleHPIsoProbabilityTable {
public:
G4ParticleHPIsoProbabilityTable_CALENDF();
~G4ParticleHPIsoProbabilityTable_CALENDF();
void Init( G4int, G4int, G4int, G4double, G4String ) override;
G4double GetCorrelatedIsoCrossSectionPT( const G4DynamicParticle*, G4int, const G4Element*, G4double&, G4double&,
std::thread::id& ) override;
G4double GetIsoCrossSectionPT( const G4DynamicParticle*, G4int, const G4Element*, G4double&,
std::map< std::thread::id, G4double >&, std::thread::id& ) override;
private:
std::map< std::thread::id, G4double > xsinela_cache;
std::vector< std::vector< G4double >* >* theInelasticData;
};
#endif
@@ -0,0 +1,77 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// -------------------------------------------------------------------
//
// Geant4 header file
//
// File name: G4ParticleHPIsoProbabilityTable_NJOY.hh
//
// Authors: Marek Zmeskal (CTU, Czech Technical University in Prague, Czech Republic)
// Loic Thulliez (CEA France)
//
// Creation date: 4 June 2024
//
// Description: Class for the probability table of the given isotope
// and for the given temperature generated with NJOY.
// It reads the files with probability tables and
// finds the correct cross-section.
//
// Modifications:
//
// -------------------------------------------------------------------
//
//
#ifndef G4ParticleHPIsoProbabilityTable_NJOY_h
#define G4ParticleHPIsoProbabilityTable_NJOY_h 1
#include "globals.hh"
#include "G4ParticleHPInterpolator.hh"
#include "G4ParticleHPIsoProbabilityTable.hh"
#include <vector>
#include <thread>
#include <map>
class G4DynamicParticle;
class G4Element;
class G4ParticleHPIsoProbabilityTable_NJOY : public G4ParticleHPIsoProbabilityTable {
public:
G4ParticleHPIsoProbabilityTable_NJOY();
~G4ParticleHPIsoProbabilityTable_NJOY();
void Init( G4int, G4int, G4int, G4double, G4String ) override;
G4double GetCorrelatedIsoCrossSectionPT( const G4DynamicParticle*, G4int, const G4Element*, G4double&, G4double&,
std::thread::id& ) override;
G4double GetIsoCrossSectionPT( const G4DynamicParticle*, G4int, const G4Element*, G4double&,
std::map< std::thread::id, G4double >&, std::thread::id& ) override;
private:
G4int tableOrder;
G4int lssf_flag;
G4ParticleHPInterpolator theInt;
};
#endif
@@ -42,6 +42,7 @@ class G4ParticleHPChannel;
class G4ParticleHPChannelList;
class G4ParticleHPMessenger;
class G4ParticleHPVector;
class G4ParticleHPIsoProbabilityTable;
class G4PhysicsTable;
struct E_isoAng;
struct E_P_E_isoAng;
@@ -205,6 +206,17 @@ class G4ParticleHPManager
theTSInelasticFinalStates = val;
};
std::vector< std::map< G4int, G4ParticleHPIsoProbabilityTable* > >* GetProbabilityTables()
{ return theProbabilityTables; };
void RegisterProbabilityTables( std::vector< std::map< G4int, G4ParticleHPIsoProbabilityTable* > >* val )
{ theProbabilityTables = val; };
std::vector< std::pair< G4double, G4double > >* GetURRlimits() { return theURRlimits; };
void RegisterURRlimits( std::vector< std::pair< G4double, G4double > >* val ) { theURRlimits = val; };
G4String GetUsedPTformat() { return USE_PROBABILITY_TABLE_FROM; };
void SetUsedPTformat( G4String val ) { USE_PROBABILITY_TABLE_FROM = val; };
G4double GetMinADBRC() const { return theMinADBRC; };
G4double GetMinEnergyDBRC() const { return theMinEnergyDBRC; };
G4double GetMaxEnergyDBRC() const { return theMaxEnergyDBRC; };
@@ -271,5 +283,10 @@ class G4ParticleHPManager
G4double theMaxEnergyDoppler;
G4String fDataPath[6]{""};
std::vector< std::map< G4int, G4ParticleHPIsoProbabilityTable* > >* theProbabilityTables{ nullptr };
std::vector< std::pair< G4double, G4double > >* theURRlimits{ nullptr };
G4String USE_PROBABILITY_TABLE_FROM{ "njoy" };
};
#endif
@@ -62,6 +62,7 @@ class G4ParticleHPMessenger : public G4UImessenger
G4UIcmdWithADouble* MinADBRCCmd;
G4UIcmdWithADoubleAndUnit* MinEnergyDBRCCmd;
G4UIcmdWithADoubleAndUnit* MaxEnergyDBRCCmd;
G4UIcmdWithAString* PTformatCmd;
};
#endif
@@ -0,0 +1,92 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// -------------------------------------------------------------------
//
// Geant4 header file
//
// File name: G4ParticleHPProbabilityTablesStore.hh
//
// Authors: Marek Zmeskal (CTU, Czech Technical University in Prague, Czech Republic)
// Loic Thulliez (CEA France)
//
// Creation date: 4 June 2024
//
// Description: Class to store all probability tables for different isotopes
// and in future also for different temperatures.
//
// Modifications:
//
// -------------------------------------------------------------------
//
//
#ifndef G4ParticleHPProbabilityTablesStore_h
#define G4ParticleHPProbabilityTablesStore_h 1
#include "globals.hh"
#include <map>
#include <vector>
#include <thread>
class G4Material;
class G4Element;
class G4Isotope;
class G4DynamicParticle;
class G4ParticleHPIsoProbabilityTable;
class G4ParticleHPProbabilityTablesStore {
public:
static G4ParticleHPProbabilityTablesStore * GetInstance();
void Init();
void InitURRlimits();
std::vector< std::map< G4int, G4ParticleHPIsoProbabilityTable* > >* GetProbabilityTables() { return ProbabilityTables; };
std::vector< std::pair< G4double, G4double > >* GetURRlimits(){ return URRlimits; };
G4double GetIsoCrossSectionPT( const G4DynamicParticle*, G4int, const G4Isotope*, const G4Element*, const G4Material* );
std::vector< std::map< std::thread::id, G4double > > random_number_cache;
private:
static G4ParticleHPProbabilityTablesStore* instance;
G4ParticleHPProbabilityTablesStore();
G4ParticleHPProbabilityTablesStore( const G4ParticleHPProbabilityTablesStore& ){};
~G4ParticleHPProbabilityTablesStore();
std::vector< std::vector< G4int > >* Temperatures;
std::vector< std::map< G4int, G4ParticleHPIsoProbabilityTable* > >* ProbabilityTables;
std::vector< std::pair< G4double, G4double > >* URRlimits;
std::vector< std::map< std::thread::id, G4double > > energy_cache;
G4String dirName;
G4String filename;
G4int numIso;
G4bool usedNjoy;
G4bool usedCalendf;
};
#endif
@@ -145,6 +145,9 @@ class G4ParticleHPVector
}
G4double GetXsec(G4double e);
G4int GetEnergyIndex(G4double &e); // method added by M. Zmeskal 02/2024
G4double GetXsec(G4double e, G4int min)
{
G4int i;