Geant4
9.6.p02
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
geant4_9_6_p02
source
processes
hadronic
models
pre_equilibrium
exciton_model
src
G4PreCompoundIon.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
// $Id$
27
//
28
// -------------------------------------------------------------------
29
//
30
// GEANT4 Class file
31
//
32
//
33
// File name: G4PreCompoundIon
34
//
35
// Author: V.Lara
36
//
37
// Modified:
38
// 10.02.2009 J. M. Quesada fixed bug in density level of light fragments
39
// 20.08.2010 V.Ivanchenko added G4Pow and G4PreCompoundParameters pointers
40
// use int Z and A and cleanup
41
//
42
43
#include "
G4PreCompoundIon.hh
"
44
#include "
G4PhysicalConstants.hh
"
45
46
G4PreCompoundIon::
47
G4PreCompoundIon(
const
G4ParticleDefinition
*
part
,
48
G4VCoulombBarrier
* aCoulombBarrier)
49
:
G4PreCompoundFragment
(part,aCoulombBarrier)
50
{
51
G4double
r0 =
theParameters
->
Getr0
();
52
fact = 0.75*CLHEP::millibarn/(CLHEP::pi*r0*r0*r0);
53
}
54
55
G4PreCompoundIon::~G4PreCompoundIon
()
56
{}
57
58
G4double
G4PreCompoundIon::
59
ProbabilityDistributionFunction
(
G4double
eKin,
60
const
G4Fragment
& aFragment)
61
{
62
if
( !
IsItPossible
(aFragment) ) {
return
0.0; }
63
G4double
efinal = eKin +
GetBindingEnergy
();
64
//G4cout << "Efinal= " << efinal << " Ekin= " << eKin << G4endl;
65
if
(efinal <= 0.0 ) {
return
0.0; }
66
67
G4double
U = aFragment.
GetExcitationEnergy
();
68
G4int
P = aFragment.
GetNumberOfParticles
();
69
G4int
H = aFragment.
GetNumberOfHoles
();
70
G4int
A =
GetA
();
71
G4int
N
= P + H;
72
73
G4double
g0 = (6.0/
pi2
)*aFragment.
GetA_asInt
()*
theParameters
->
GetLevelDensity
();
74
G4double
g1 = (6.0/
pi2
)*
GetRestA
()*
theParameters
->
GetLevelDensity
();
75
76
//JMQ 06/02/209 This is THE BUG that was killing cluster emission
77
// G4double gj = (6.0/pi2)*GetA() *
78
// G4PreCompoundParameters::GetAddress()->GetLevelDensity();
79
80
G4double
gj = g1;
81
82
G4double
A0 =
G4double
(P*P+H*H+P-3*H)/(4.0*g0);
83
G4double
A1 = std::max(0.0,(A0*g0 + A*(A-2*P-1)*0.25)/g1);
84
85
G4double
E0 = U - A0;
86
//G4cout << "E0= " << E0 << G4endl;
87
if
(E0 <= 0.0) {
return
0.0; }
88
89
G4double
E1 = (std::max(0.0,
GetMaximalKineticEnergy
() - eKin - A1));
90
91
G4double
Aj = A*(A+1)/(4.0*gj);
92
G4double
Ej = std::max(0.0,efinal - Aj);
93
94
G4double
rj =
GetRj
(P, aFragment.
GetNumberOfCharged
());
95
G4double
xs =
CrossSection
(eKin);
96
97
//G4cout << "rj= " << rj << " xs= " << xs << G4endl;
98
99
// JMQ 10/02/09 reshaping of the formula (unnecessary std::pow elimitated)
100
/*
101
G4double r0 = theParameters->Getr0();
102
G4double pA = (3.0/4.0) * std::sqrt(std::max(0.0, 2.0/(GetReducedMass()*
103
(eKin+GetBindingEnergy()))))/(pi * r0 * r0 *r0* GetRestA())*
104
eKin*CrossSection(eKin)*millibarn*
105
CoalescenceFactor(aFragment.GetA_asInt()) * FactorialFactor(N,P)*
106
GetRj(aFragment.GetNumberOfParticles(), aFragment.GetNumberOfCharged());
107
108
G4double pB = std::pow((g1*E1)/(g0*E0),N-GetA()-1.0)*(g1/g0);
109
G4double pC = std::pow((gj*Ej)/(g0*E0),GetA()-1.0)*(gj/g0)/E0;
110
pA *= pB * pC;
111
*/
112
113
G4double
pA = fact*eKin*xs*rj
114
*
CoalescenceFactor
(aFragment.
GetA_asInt
()) *
FactorialFactor
(N,P)
115
* std::sqrt(2.0/(
GetReducedMass
()*efinal))
116
*
g4pow
->
powN
(g1*E1/(g0*E0), N-A-1)
117
*
g4pow
->
powN
(gj*Ej/(g0*E0), A-1)*gj*g1/(g0*g0*E0*
GetRestA
());
118
119
return
pA;
120
}
Generated on Sat May 25 2013 14:34:06 for Geant4 by
1.8.4