Changeset 1340 for trunk/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4HETCFragment.cc
- Timestamp:
- Nov 5, 2010, 3:45:55 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4HETCFragment.cc
r819 r1340 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4HETCFragment.cc,v 1.4 2010/08/28 15:16:55 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 28 // 26 29 // by V. Lara 30 // 31 // Modified: 32 // 23.08.2010 V.Ivanchenko general cleanup, move constructor and destructor 33 // the source, use G4Pow 27 34 28 35 #include "G4HETCFragment.hh" … … 30 37 31 38 G4HETCFragment:: 32 G4HETCFragment(const G4HETCFragment & right) : 33 G4VPreCompoundFragment(right) 39 G4HETCFragment(const G4ParticleDefinition* part, 40 G4VCoulombBarrier* aCoulombBarrier) 41 : G4VPreCompoundFragment(part, aCoulombBarrier) 34 42 { 43 G4double r0 = theParameters->Getr0(); 44 r2norm = r0*r0/(CLHEP::pi*CLHEP::hbarc*CLHEP::hbarc*CLHEP::hbarc); 35 45 } 36 46 37 G4HETCFragment:: 38 G4HETCFragment(const G4double anA, 39 const G4double aZ, 40 G4VCoulombBarrier* aCoulombBarrier, 41 const G4String & aName) : 42 G4VPreCompoundFragment(anA,aZ,aCoulombBarrier,aName) 47 G4HETCFragment::~G4HETCFragment() 43 48 {} 44 45 G4HETCFragment::~G4HETCFragment()46 {47 }48 49 const G4HETCFragment & G4HETCFragment::50 operator= (const G4HETCFragment & right)51 {52 if (&right != this) this->G4VPreCompoundFragment::operator=(right);53 return *this;54 }55 56 G4int G4HETCFragment::operator==(const G4HETCFragment & right) const57 {58 return G4VPreCompoundFragment::operator==(right);59 }60 61 G4int G4HETCFragment::operator!=(const G4HETCFragment & right) const62 {63 return G4VPreCompoundFragment::operator!=(right);64 }65 66 67 49 68 50 G4double G4HETCFragment:: … … 70 52 { 71 53 if (GetEnergyThreshold() <= 0.0) 72 {54 { 73 55 theEmissionProbability = 0.0; 74 56 return 0.0; 75 }57 } 76 58 // Coulomb barrier is the lower limit 77 59 // of integration over kinetic energy … … 80 62 // Excitation energy of nucleus after fragment emission is the upper limit 81 63 // of integration over kinetic energy 82 G4double UpperLimit = this->GetMaximalKineticEnergy();64 G4double UpperLimit = GetMaximalKineticEnergy(); 83 65 84 theEmissionProbability = IntegrateEmissionProbability(LowerLimit,UpperLimit,aFragment); 66 theEmissionProbability = 67 IntegrateEmissionProbability(LowerLimit,UpperLimit,aFragment); 85 68 86 69 return theEmissionProbability; … … 92 75 { 93 76 94 if ( !IsItPossible(aFragment) ) return 0.0; 95 96 const G4double r0 = G4PreCompoundParameters::GetAddress()->Getr0(); 77 if ( !IsItPossible(aFragment) ) { return 0.0; } 97 78 98 79 G4double U = aFragment.GetExcitationEnergy(); 99 G4double P = aFragment.GetNumberOfParticles(); 100 G4double H = aFragment.GetNumberOfHoles(); 101 G4double N = P + H; 102 G4double Pb = P - GetA(); 103 G4double Nb = Pb + H; 104 if (Nb <= 0.0) return 0.0; 105 106 G4double A = (P*P+H*H+P-3*H)/4.0; 107 G4double Ab = (Pb*Pb+H*H+Pb-3*H)/4.0; 80 81 G4int P = aFragment.GetNumberOfParticles(); 82 G4int H = aFragment.GetNumberOfHoles(); 83 G4int N = P + H; 84 G4int Pb = P - GetA(); 85 G4int Nb = Pb + H; 86 if (Nb <= 0.0) { return 0.0; } 87 G4double g = (6.0/pi2)*aFragment.GetA()*theParameters->GetLevelDensity(); 88 G4double gb = (6.0/pi2)*GetRestA()*theParameters->GetLevelDensity(); 89 90 G4double A = G4double(P*P+H*H+P-3*H)/(4.0*g); 91 G4double Ab = G4double(Pb*Pb+H*H+Pb-3*H)/(4.0*gb); 108 92 U = std::max(U-A,0.0); 109 if (U <= 0.0) return 0.0;93 if (U <= 0.0) { return 0.0; } 110 94 111 G4double g = (6.0/pi2)*aFragment.GetA()*G4PreCompoundParameters::GetAddress()->GetLevelDensity(); 112 G4double gb = (6.0/pi2)*GetRestA()*G4PreCompoundParameters::GetAddress()->GetLevelDensity(); 113 114 G4double Pf = P; 115 G4double Hf = H; 116 G4double Nf = N-1.0; 117 for (G4int i = 1; i < GetA(); i++) 95 G4int Pf = P; 96 G4int Hf = H; 97 G4int Nf = N-1; 98 for (G4int i = 1; i < GetA(); ++i) 118 99 { 119 100 Pf *= (P-i); … … 125 106 G4double Y = std::max(Up - Ab - Low, 0.0); 126 107 127 G4double Probability = GetSpinFactor()/(pi*hbarc*hbarc*hbarc) * GetReducedMass() * GetAlpha() * 128 r0 * r0 * std::pow(GetRestA(),2.0/3.0)/std::pow(U,N-1) * (std::pow(gb,Nb)/std::pow(g,N)) * Pf * Hf * Nf * K(aFragment) * 129 std::pow(Y,Nb) * (X/Nb - Y/(Nb+1)); 108 G4double Probability = r2norm*GetSpinFactor()*GetReducedMass()*GetAlpha() 109 *g4pow->Z23(GetRestA())*Pf*Hf*Nf*K(aFragment)*(X/Nb - Y/(Nb+1)) 110 *U*g4pow->powN(g*gb,Nb)/g4pow->powN(g*U,N); 111 112 // G4double Probability = GetSpinFactor()/(pi*hbarc*hbarc*hbarc) 113 // * GetReducedMass() * GetAlpha() * 114 // r0 * r0 * std::pow->Z23(GetRestA())/std::pow->pow(U,G4double(N-1)) * 115 // (std::pow->(gb,Nb)/std::pow(g,N)) * Pf * Hf * Nf * K(aFragment) * 116 // std::pow(Y,Nb) * (X/Nb - Y/(Nb+1)); 130 117 131 118 return Probability;
Note: See TracChangeset
for help on using the changeset viewer.