58 _materialAlgo = materialAlgo;
73 delete _absorptionProducts;
78 std::vector<G4ParticleDefinition*>* defNucleons = _materialAlgo->
DefinitionVector();
85 for (
unsigned int i=0; i<defNucleons->size(); i++)
101 std::vector<G4LorentzVector*>* p4Nucleons = _materialAlgo->
P4Vector(binding,mass);
103 if (defNucleons != 0 && p4Nucleons != 0)
105 unsigned int nNucleons = p4Nucleons->size();
108 G4int maxN = nNucleons;
109 if (defNucleons->size() < nNucleons) { maxN = defNucleons->size(); }
111 for (
G4int i=0; i<maxN; i++)
121 { _absorptionProducts->push_back(product); }
127 return _absorptionProducts;
135 for (
unsigned int i = 0; i< _absorptionProducts->size(); i++)
137 pProducts = pProducts + (*_absorptionProducts)[i]->GetMomentum();
146 G4int entries = _absorptionProducts->size();
147 for (
int i = 0; i<entries; i++)
159 G4int entries = _absorptionProducts->size();
160 for (
int i = 0; i<entries; i++)
178 G4int nAbsorptionProducts = _absorptionProducts->size();
180 for (
int i = 0; i<nAbsorptionProducts; i++)
182 productEnergy += (*_absorptionProducts)[i]->GetKineticEnergy();
183 pProducts = pProducts + (*_absorptionProducts)[i]->GetMomentum();
191 G4double eNucleus = std::sqrt(pNucleus*pNucleus + mass*mass);
192 G4double tNucleus = eNucleus - mass;
196 energy = productEnergy + productBinding + tNucleus;
200 std::cout <<
"E products " << productEnergy
201 <<
" Binding " << productBinding <<
" " << temp <<
" "
202 <<
" Tnucleus " << tNucleus
203 <<
" energy = " << energy <<
G4endl;