Warning, file /include/Geant4/G4CompetitiveFission.hh was not indexed
or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031 #ifndef G4CompetitiveFission_h
0032 #define G4CompetitiveFission_h 1
0033
0034 #include "G4VEvaporationChannel.hh"
0035 #include "G4Fragment.hh"
0036 #include "G4VEmissionProbability.hh"
0037 #include "G4FissionParameters.hh"
0038 #include <CLHEP/Units/SystemOfUnits.h>
0039 #include "G4Exp.hh"
0040
0041 class G4VFissionBarrier;
0042 class G4VEmissionProbability;
0043 class G4VLevelDensityParameter;
0044 class G4PairingCorrection;
0045
0046 class G4CompetitiveFission : public G4VEvaporationChannel
0047 {
0048 public:
0049
0050 explicit G4CompetitiveFission();
0051 ~G4CompetitiveFission() override;
0052
0053 G4Fragment* EmittedFragment(G4Fragment* theNucleus) override;
0054
0055 G4double GetEmissionProbability(G4Fragment* theNucleus) override;
0056
0057 void SetFissionBarrier(G4VFissionBarrier * aBarrier);
0058
0059 void SetEmissionStrategy(G4VEmissionProbability * aFissionProb);
0060
0061 void SetLevelDensityParameter(G4VLevelDensityParameter * aLevelDensity);
0062
0063 inline G4double GetFissionBarrier(void) const;
0064
0065 inline G4double GetLevelDensityParameter(void) const;
0066
0067 inline G4double GetMaximalKineticEnergy(void) const;
0068
0069 private:
0070
0071
0072 G4int FissionAtomicNumber(G4int A);
0073
0074 G4double MassDistribution(G4double x, G4int A);
0075
0076
0077 G4int FissionCharge(G4int A, G4int Z, G4double Af);
0078
0079
0080 G4double FissionKineticEnergy(G4int A, G4int Z,
0081 G4int Af1, G4int Zf1,
0082 G4int Af2, G4int Zf2,
0083 G4double U, G4double Tmax);
0084
0085 inline G4double Ratio(G4double A, G4double A11,
0086 G4double B1, G4double A00) const;
0087
0088 inline G4double SymmetricRatio(G4int A, G4double A11) const;
0089
0090 inline G4double AsymmetricRatio(G4int A, G4double A11) const;
0091
0092 inline G4double LocalExp(G4double x) const;
0093
0094 G4CompetitiveFission(const G4CompetitiveFission &right);
0095 const G4CompetitiveFission & operator=(const G4CompetitiveFission &right);
0096 G4bool operator==(const G4CompetitiveFission &right) const;
0097 G4bool operator!=(const G4CompetitiveFission &right) const;
0098
0099
0100 G4double maxKineticEnergy;
0101 G4double fissionBarrier;
0102 G4double fissionProbability;
0103
0104
0105 G4VFissionBarrier* theFissionBarrierPtr;
0106
0107
0108 G4VEmissionProbability* theFissionProbabilityPtr;
0109
0110
0111 G4VLevelDensityParameter* theLevelDensityPtr;
0112 G4PairingCorrection* pairingCorrection;
0113
0114 G4bool myOwnFissionProbability;
0115 G4bool myOwnFissionBarrier;
0116 G4bool myOwnLevelDensity;
0117
0118 G4FissionParameters theParam;
0119
0120 G4int theSecID;
0121 };
0122
0123 inline G4double G4CompetitiveFission::GetFissionBarrier(void) const
0124 {
0125 return fissionBarrier;
0126 }
0127
0128 inline G4double G4CompetitiveFission::GetMaximalKineticEnergy(void) const
0129 {
0130 return maxKineticEnergy;
0131 }
0132
0133 inline
0134 G4double G4CompetitiveFission::Ratio(G4double A, G4double A11,
0135 G4double B1, G4double A00) const
0136 {
0137 G4double res;
0138 if (A11 >= A*0.5 && A11 <= (A00+10.0)) {
0139 G4double x = (A11-A00)/A;
0140 res = 1.0 - B1*x*x;
0141 } else {
0142 G4double x = 10.0/A;
0143 res = 1.0 - B1*x*x - 2.0*x*B1*(A11-A00-10.0)/A;
0144 }
0145 return res;
0146 }
0147
0148 inline
0149 G4double G4CompetitiveFission::AsymmetricRatio(G4int A, G4double A11) const
0150 {
0151 return Ratio(G4double(A),A11,23.5,134.0);
0152 }
0153
0154 inline
0155 G4double G4CompetitiveFission::SymmetricRatio(G4int A, G4double A11) const
0156 {
0157 G4double A0 = G4double(A);
0158 return Ratio(A0,A11,5.32,A0*0.5);
0159 }
0160
0161 inline G4double G4CompetitiveFission::LocalExp(G4double x) const
0162 {
0163 return (std::abs(x) < 8.) ? G4Exp(-0.5*x*x) : 0.0;
0164 }
0165
0166 #endif
0167
0168