77 using namespace G4InuclSpecialFunctions;
85 copy(aFragment, model);
122 return makeG4Fragment();
131 copy(a3DNucleus, model);
135 if (!a3DNucleus)
return;
192 G4double ekin_new = (ekin == 0.) ? 0.
193 : std::sqrt(emass*emass + ekin*(2.*
getMass()+ekin)) - emass;
207 if (0 == a && 0 == z)
return 0;
222 static std::map<G4int,G4ParticleDefinition*> fragmentList;
231 if (a<=0 || z<0 || a<z) {
232 G4cerr <<
" >>> G4InuclNuclei::makeNuclearFragment() called with"
233 <<
" impossible arguments A=" << a <<
" Z=" << z <<
G4endl;
235 "G4InuclNuclei impossible A/Z arguments");
245 if (fragmentList.find(code) != fragmentList.end())
return fragmentList[code];
249 std::stringstream zstr, astr;
268 "nucleus", 0, a, code,
270 true,
"generic", 0, 0.);
274 return (fragmentList[code] = fragPD);
286 if (
this != &right) {
287 theExitonConfiguration = right.theExitonConfiguration;
301 if (!theExitonConfiguration.
empty())
302 os <<
G4endl <<
" " << theExitonConfiguration;
void fill(G4int a, G4int z, G4double exc=0., Model model=DefaultModel)
const G4ParticleDefinition * GetParticleType() const
static G4double GetNuclearMass(const G4double A, const G4double Z)
virtual G4int GetCharge()=0
void SetAntiPDGEncoding(G4int aEncoding)
G4LorentzVector getMomentum() const
virtual G4bool StartLoop()=0
std::vector< ExP01TrackerHit * > a
G4InuclNuclei & operator=(const G4InuclNuclei &right)
G4ParticleDefinition * GetIon(G4int Z, G4int A, G4int lvl=0)
virtual G4int GetMassNumber()=0
const G4ParticleDefinition * getDefinition() const
void SetNumberOfHoles(G4int valueTot, G4int valueP=0)
static G4int GetNucleusEncoding(G4int Z, G4int A, G4double E=0.0, G4int lvl=0)
void setDefinition(const G4ParticleDefinition *pd)
G4int GetNumberOfParticles() const
#define G4MUTEX_INITIALIZER
const G4String & GetParticleName() const
G4double getKineticEnergy() const
static G4Proton * Definition()
void setExitationEnergy(G4double e)
G4int GetNumberOfHoles() const
void SetNumberOfExcitedParticle(G4int valueTot, G4int valueP)
G4IonTable * GetIonTable() const
virtual void print(std::ostream &os) const
const G4LorentzVector & GetMomentum() const
G4double getNucleiMass() const
void copy(const G4Fragment &aFragment, Model model=DefaultModel)
G4double getExitationEnergy() const
static constexpr double eplus
virtual void print(std::ostream &os) const
static G4ParticleTable * GetParticleTable()
G4Fragment makeG4Fragment() const
void clearExitonConfiguration()
static G4Neutron * Definition()
static constexpr double GeV
G4InuclParticle & operator=(const G4InuclParticle &right)
void setMass(G4double mass)
void setModel(Model model)
static constexpr double MeV
G4int GetNumberOfChargedHoles() const
virtual G4Nucleon * GetNextNucleon()=0
void setKineticEnergy(G4double ekin)
static G4ParticleDefinition * makeDefinition(G4int a, G4int z)
void setMomentum(const G4LorentzVector &mom)
static G4ParticleDefinition * makeNuclearFragment(G4int a, G4int z)
const XML_Char XML_Content * model
G4int GetNumberOfCharged() const
G4double GetExcitationEnergy() const
G4GLOB_DLL std::ostream G4cerr
G4int neutronQuasiParticles
G4int protonQuasiParticles