65{
69
74
76 const G4double myNuleonRadius=1.36E-15;
77
78
84 pTarget = pTarget+pProjectile;
85 G4double E_cm = (pTarget.mag()-targetMass-pProjectile.m())/MeV;
86 if(E_cm <=
DBL_MIN) {
return result; }
87
88 G4double r_rms_p = 0.6 * myNuleonRadius *
89 std::pow(projectileAtomicNumber, 1./3.);
90 G4double r_rms_t = 0.6 * myNuleonRadius *
91 std::pow(targetAtomicNumber, 1./3.);
92
93
94 G4double r_p = 1.29*r_rms_p/nuleonRadius ;
95 G4double r_t = 1.29*r_rms_t/nuleonRadius;
96
97
99 1.2*(std::pow(targetAtomicNumber, 1./3.) +
100 std::pow(projectileAtomicNumber, 1./3.))/std::pow(E_cm, 1./3.);
101
102
103 G4double B = 1.44*nProjProtons*nTargetProtons/Radius;
104 if(E_cm <= B) return result;
105
106 G4double Energy = kineticEnergy/projectileAtomicNumber;
107
108
109
110
111
112
113
114
115
116
118 if (nProjProtons==1 && projectileAtomicNumber==1)
119 {
120 D = 2.05;
121 }
122 else if (nProjProtons==2 && projectileAtomicNumber==4)
123 {
124 D = 2.77-(8.0E-3*targetAtomicNumber)+
125 (1.8E-5*targetAtomicNumber*targetAtomicNumber)
126 - 0.8/(1+std::exp((250.-Energy)/75.));
127 }
128 else
129 {
130
131
132
133
134
135
136 D = 1.75;
137 }
138
139 G4double C_E = D * (1-std::exp(-Energy/40.)) -
140 0.292*std::exp(-Energy/792.)*std::cos(0.229*std::pow(Energy, 0.453));
141
142
143 G4double S = std::pow(projectileAtomicNumber, 1./3.)*
144 std::pow(targetAtomicNumber, 1./3.)/
145 (std::pow(projectileAtomicNumber, 1./3.) +
146 std::pow(targetAtomicNumber, 1./3.));
147
148
149 G4double deltaE = 1.85*S + 0.16*S/std::pow(E_cm,1./3.) - C_E +
150 0.91*(targetAtomicNumber-2.*nTargetProtons)*nProjProtons/
151 (targetAtomicNumber*projectileAtomicNumber);
152
153
154 result =
pi * nuleonRadius*nuleonRadius *
155 std::pow(( std::pow(targetAtomicNumber, 1./3.) +
156 std::pow(projectileAtomicNumber, 1./3.) + deltaE),2.) *
157 (1-B/E_cm);
158
159 if(result < 0.) { result = 0.; }
160 return result*m2;
161
162}
G4ParticleDefinition * GetDefinition() const
G4LorentzVector Get4Momentum() const
G4double GetKineticEnergy() const
G4double GetIonMass(G4int Z, G4int A, G4int L=0) const
!! Only ground states are supported now
static G4NistManager * Instance()
G4double GetAtomicMassAmu(const G4String &symb) const
G4double GetPDGCharge() const
G4int GetBaryonNumber() const
static G4ParticleTable * GetParticleTable()
G4IonTable * GetIonTable()