61 #ifndef G4ScreenedNuclearRecoil_h
62 #define G4ScreenedNuclearRecoil_h 1
94 "G4ScreenedNuclearRecoil.hh,v 1.24 2008/05/01 19:58:59 marcus Exp GEANT4 tag ";
483 std::map<std::string, ScreeningFunc>
phiMap;
ScreeningMap screeningData
G4ScreenedCoulombClassicalKinematics()
void SetVerbosity(G4int v)
virtual void BuildPhysicsTable(const G4ParticleDefinition &aParticleType)
Build physics tables in advance. Not Implemented.
G4double GetRecoilCutoff() const
get the recoil cutoff
const G4_c2_function * operator[](G4int materialIndex)
void SetCrossSectionHardening(G4double fraction, G4double HardeningFactor)
set the cross section boost to provide faster computation of backscattering
G4double GetHardeningFactor() const
get the boost factor in use.
const G4VNIELPartition * NIELPartitionFunction
G4double hardeningFraction
std::map< std::string, ScreeningFunc > phiMap
struct G4CoulombKinematicsInfo G4CoulombKinematicsInfo
c2_linear_p< G4double > & xovereps
void SetMFPScaling(G4double scale)
set the mean free path scaling as specified
G4bool DoScreeningComputation(class G4ScreenedNuclearRecoil *master, const G4ScreeningTables *screen, G4double eps, G4double beta)
std::vector< G4String > GetScreeningKeys() const
void SetExternalCrossSectionHandler(G4ScreenedCoulombCrossSection *cs)
set a function to compute screening tables, if the user needs non-standard behavior.
virtual void LoadData(G4String screeningKey, G4int z1, G4double m1, G4double recoilCutoff)=0
virtual ~G4ScreenedCoulombCrossSection()
std::map< G4int, G4ScreenedCoulombCrossSection * > & GetCrossSectionHandlers()
G4ParticleDefinition * recoilIon
std::map< G4int, G4_c2_const_ptr > MFPTables
G4_c2_function & ZBLScreening(G4int z1, G4int z2, size_t npoints, G4double rMax, G4double *auval)
c2_function< G4double > G4_c2_function
void EnableRecoils(G4bool flag)
enable or disable the generation of recoils. If recoils are disabled, the energy they would have rece...
G4double highEnergyLimit
the energy per nucleon above which the MFP is constant
virtual G4double GetMeanFreePath(const G4Track &, G4double, G4ForceCondition *)
used internally by Geant4 machinery
std::map< G4int, G4_c2_const_ptr > sigmaMap
G4ParticleDefinition * SelectRandomUnweightedTarget(const G4MaterialCutsCouple *couple)
G4ScreenedCoulombCrossSection * externalCrossSectionConstructor
void SetPhysicsCutoff(G4double energy)
set the energy to which screening tables are computed. Typically, this is 10 eV or so...
void DepositEnergy(G4int z1, G4double a1, const G4Material *material, G4double energy)
take the given energy, and use the material information to partition it into NIEL and ionizing energy...
Provides the headers for the general c2_function algebra which fast, flexible operations on piecewise...
G4double GetCurrentInteractionLength() const
the the interaciton length used in the last scattering.
G4double currentInteractionLength
G4double processMaxEnergy
the energy per nucleon beyond which the cross section is zero, to cross over to G4MSC ...
virtual G4ScreenedCoulombCrossSection * create()
G4NativeScreenedCoulombCrossSection(const G4NativeScreenedCoulombCrossSection &src)
virtual void DoCollisionStep(class G4ScreenedNuclearRecoil *master, const class G4Track &aTrack, const class G4Step &aStep)
virtual G4ScreenedCoulombCrossSection * GetNewCrossSectionHandler(void)
const G4ScreeningTables * GetScreening(G4int Z)
virtual ~G4ScreenedCoulombClassicalKinematics()
std::string GetScreeningKey() const
find out what screening function we are using
void ResetTables()
clear precomputed screening tables
~G4ScreenedCoulombCrossSectionInfo()
void SetValidCollision(G4bool flag)
G4ScreenedCoulombCrossSectionInfo()
G4NativeScreenedCoulombCrossSection(const G4ScreenedCoulombCrossSection &src)
const G4Material * targetMaterial
static const char * CVSHeaderVers()
std::map< G4int, G4ScreenedCoulombCrossSection * > crossSectionHandlers
virtual void DumpPhysicsTable(const G4ParticleDefinition &aParticleType)
Export physics tables for persistency. Not Implemented.
G4ScreenedCoulombCrossSection * crossSection
void AddStage(G4ScreenedCollisionStage *stage)
G4bool registerDepositedEnergy
c2_ptr< G4double > G4_c2_ptr
virtual G4ScreenedCoulombCrossSection * create()=0
double A(double temperature)
virtual void DoCollisionStep(class G4ScreenedNuclearRecoil *master, const class G4Track &aTrack, const class G4Step &aStep)=0
G4double lowEnergyLimit
the energy per nucleon below which the MFP is zero
G4_c2_function & LJScreening(G4int z1, G4int z2, size_t npoints, G4double rMax, G4double *auval)
void SetMaxEnergyForScattering(G4double energy)
set the upper energy beyond which this process has no cross section
static constexpr double eV
G4CoulombKinematicsInfo & GetKinematics()
G4_c2_const_ptr EMphiData
virtual G4VParticleChange * PostStepDoIt(const G4Track &aTrack, const G4Step &aStep)
used internally by Geant4 machinery
virtual ~G4SingleScatter()
std::vector< G4ScreenedCollisionStage * > collisionStages
G4ScreenedCoulombCrossSection()
G4double GetMFPScaling() const
get the MFPScaling parameter
static const char * CVSFileVers()
G4NativeScreenedCoulombCrossSection()
c2_const_plugin_function_p< G4double > & phifunc
G4_c2_function & MoliereScreening(G4int z1, G4int z2, size_t npoints, G4double rMax, G4double *auval)
G4double standardmass(G4int z1)
G4bool GetAllowEnergyDeposition() const
get flag indicating whether deposition is enabled
G4double GetPhysicsCutoff() const
get the physics cutoff energy.
struct G4ScreeningTables G4ScreeningTables
virtual void DoCollisionStep(class G4ScreenedNuclearRecoil *master, const class G4Track &aTrack, const class G4Step &aStep)
G4ScreenedNuclearRecoil(const G4String &processName="ScreenedElastic", const G4String &ScreeningKey="zbl", G4bool GenerateRecoils=1, G4double RecoilCutoff=100.0 *eV, G4double PhysicsCutoff=10.0 *eV)
Construct the process and set some physics parameters for it.
G4int GetVerboseLevel() const
get the verbosity.
static const G4double massmap[nMassMapElements+1]
std::map< G4int, class G4ParticleDefinition * > ParticleCache
G4bool GetAvoidNuclearReactions() const
get the flag indicating whether hadronic collisions are ignored.
virtual G4bool CheckNuclearCollision(G4double A, G4double A1, G4double apsis)
deterine if the moving particle is within the strong force range of the selected nucleus ...
A process which handles screened Coulomb collisions between nuclei.
G4_c2_function &(* ScreeningFunc)(G4int z1, G4int z2, size_t nPoints, G4double rMax, G4double *au)
static const G4double eps
virtual ~G4ScreenedNuclearRecoil()
destructor
G4CoulombKinematicsInfo kinematics
virtual ~G4NativeScreenedCoulombCrossSection()
void SetRecoilCutoff(G4double energy)
set the minimum energy (per nucleon) at which recoils can be generated, and the energy (per nucleon) ...
c2_const_ptr< G4double > G4_c2_const_ptr
void BuildMFPTables(void)
G4double GetHardeningFraction() const
get the fraction of particles which will have boosted scattering
class G4ParticleChange & GetParticleChange()
get the pointer to our ParticleChange object. for internal use, primarily.
G4double GetNIEL() const
Get non-ionizing energy loss for last step.
virtual ~G4ScreenedCollisionStage()
void AvoidNuclearReactions(G4bool flag)
enable or disable whether this process will skip collisions which are close enough they need hadronic...
G4bool GetValidCollision() const
void SetNIELPartitionFunction(const G4VNIELPartition *part)
set the pointer to a class for paritioning energy into NIEL
G4bool GetEnableRecoils() const
find out if generation of recoils is enabled.
void AddScreeningFunction(G4String name, ScreeningFunc fn)
virtual G4bool IsApplicable(const G4ParticleDefinition &aParticleType)
test if a prticle of type aParticleType can use this process
std::map< G4int, G4ScreeningTables > ScreeningMap
G4ScreenedCoulombCrossSection(const G4ScreenedCoulombCrossSection &src)
virtual void LoadData(G4String screeningKey, G4int z1, G4double m1, G4double recoilCutoff)
G4_c2_function & LJZBLScreening(G4int z1, G4int z2, size_t npoints, G4double rMax, G4double *auval)
void AllowEnergyDeposition(G4bool flag)
enable or disable all energy deposition by this process