70{
73
74 G4int A = theNucleus.GetA_asInt();
75 G4int Z = theNucleus.GetZ_asInt();
76
77
81
82
83 if(A <= 3) {
84
87
88 ++A;
90 if(M - mass <= lowestEnergyLimit) {
92 }
93
95 G4cout <<
"G4NeutronRadCapture::DoIt: Eini(MeV)="
97 << (M - mass)/MeV
98 <<
" Z= " << Z <<
" A= " << A <<
G4endl;
99 }
100 G4double e1 = (M - mass)*(M + mass)/(2*M);
102 if(cost > 1.0) {cost = 1.0;}
103 else if(cost < -1.0) {cost = -1.0;}
104 G4double sint = std::sqrt((1. - cost)*(1.0 + cost));
106 G4LorentzVector lv2(e1*sint*std::cos(phi),e1*sint*std::sin(phi),e1*cost,e1);
107 lv2.boost(bst);
110
111 lv1 -= lv2;
114 else if (Z == 2 && A == 3) {theDef =
G4He3::He3();}
116 else
117 {
118 theDef =
120 }
121
123 G4cout <<
"Gamma 4-mom: " << lv2 <<
" "
125 }
126 if(theDef) {
128 }
129
130
131 } else {
132
134
136 G4cout <<
"G4NeutronRadCapture::ApplyYourself initial G4Fragmet:" <<
G4endl;
138 }
139
140
141
142
145 fv->push_back(aFragment);
146 size_t n = fv->size();
147
149 G4cout <<
"G4NeutronRadCapture: " <<
n <<
" final particle" <<
G4endl;
150 }
151 for(
size_t i=0; i<
n; ++i) {
156
159 else
160 {
162 }
163
166 <<
" " << lvres <<
G4endl;
167 }
168 if(theDef) {
170 }
171 delete f;
172 }
173 delete fv;
174 }
176}
std::vector< G4Fragment * > G4FragmentVector
G4DLLIMPORT std::ostream G4cout
Hep3Vector boostVector() const
static G4Deuteron * Deuteron()
const G4LorentzVector & GetMomentum() const
G4ParticleDefinition * GetParticleDefinition() const
void SetStatusChange(G4HadFinalStateStatus aS)
void AddSecondary(G4DynamicParticle *aP)
G4double GetKineticEnergy() const
const G4LorentzVector & Get4Momentum() const
G4HadFinalState theParticleChange
G4ParticleDefinition * GetIon(G4int Z, G4int A, G4int J=0)
static G4double GetNuclearMass(const G4double A, const G4double Z)
const G4String & GetParticleName() const
static G4ParticleTable * GetParticleTable()
G4IonTable * GetIonTable()
virtual G4FragmentVector * BreakUpFragment(G4Fragment *theNucleus)
static G4Triton * Triton()