Geant4 11.2.2
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4FermiBreakUpUtil.cc
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26//
27// FermiBreakUp de-excitation model
28// by V. Ivanchenko (July 2016)
29//
30
31#include "G4FermiBreakUpUtil.hh"
32#include "G4FermiFragment.hh"
33#include "G4NuclearRadii.hh"
35
36namespace G4FermiBreakUpUtil {
37
38 const G4double deltaR = 0.6*CLHEP::fermi;
39 const G4double coeff = 0.9;
40
41 // Coulomb barrier
42 G4double CoulombBarrier(const G4int Z1, const G4int A1,
43 const G4int Z2, const G4int A2, const G4double exc) {
44 const G4double r1 = G4NuclearRadii::RadiusCB(Z1, A1);
45 const G4double r2 = G4NuclearRadii::RadiusCB(Z2, A2);
46 G4double CB = coeff*CLHEP::elm_coupling*(Z1*Z2)/(r1 + r2 - deltaR);
47 if(exc > 0.0) { CB /= (1.0 + std::sqrt(exc/((2*(A1 + A2))*CLHEP::MeV))); }
48 return CB;
49 }
50
51 // 2-body decay probability
53 const G4FermiFragment* f1, const G4FermiFragment* f2,
54 const G4double mass, const G4double exc) {
55 G4double prob = 0.0;
56 const G4double mass1 = f1->GetTotalEnergy();
57 const G4double mass2 = f2->GetTotalEnergy();
58 const G4double bCouloumb =
59 CoulombBarrier(f1->GetZ(), f1->GetA(), f2->GetZ(), f2->GetA(), exc);
60 if (mass < mass1 + mass2 + bCouloumb)
61 return prob;
62
63 // free energy
64 const G4double e = mass - mass1 - mass2;
65
66 // Spin factor S_n
67 const G4int S_n = (std::abs(f1->TwoSpinParity())+1)
68 *(std::abs(f2->TwoSpinParity())+1);
69
70 // mass factors
71 const G4double x = mass1*mass2/(mass1 + mass2);
72 G4double massFactor = x*std::sqrt(x);
73
74 // Permutation Factor G_n - search for identical fragments
75 G4double G_n = (f1 == f2) ? 0.5 : 1.0;
76
77 prob = (A*S_n) * massFactor*G_n*std::sqrt(e);
78 //G4cout << "prob= " << prob << " Coeff= " << Coeff << G4endl;
79 return prob;
80 }
81
83 const G4FermiFragment* f3)
84 {
85 // check parity
86 G4int spin1 = f1->TwoSpinParity();
87 G4int spin2 = f2->TwoSpinParity();
88 G4int spin3 = f3->TwoSpinParity();
89 if ((spin3 > 0 && spin1*spin2 < 0) || (spin3 < 0 && spin1*spin2 > 0))
90 return false;
91
92 return true;
93 }
94}
double G4double
Definition G4Types.hh:83
bool G4bool
Definition G4Types.hh:86
int G4int
Definition G4Types.hh:85
const G4double A[17]
G4int GetA() const
G4int TwoSpinParity() const
G4int GetZ() const
G4double GetTotalEnergy(void) const
static G4double RadiusCB(G4int Z, G4int A)
G4bool CheckSpinParity(const G4FermiFragment *f1, const G4FermiFragment *f2, const G4FermiFragment *f3)
G4double CoulombBarrier(const G4int Z1, const G4int A1, const G4int Z2, const G4int A2, const G4double exc)
G4double Probability(const G4int A, const G4FermiFragment *f1, const G4FermiFragment *f2, const G4double mass, const G4double exc)