59 theABLAModel(new
G4Abla(volant, ablaResult)),
73 applyYourselfResult.
Clear();
87 if (isInitialised)
return;
108 ed <<
"G4AblaModel is used for ";
132 applyYourselfResult.
Clear();
134 for (
auto const & prod : *deExciteResult ) {
136 new G4DynamicParticle( prod->GetDefinition(), prod->GetTotalEnergy(), prod->GetMomentum() );
138 G4double time = std::max( prod->GetFormationTime(), 0.0 );
139 aNew.
SetTime( timePrimary + time );
144 delete deExciteResult;
145 return &applyYourselfResult;
168 pzRem, (
G4int)eventNumber, SRem);
175 toG4Particle(ablaResult->
avv[j], ablaResult->
zvv[j], ablaResult->
svv[j],
181 result->push_back(product);
197 else if(
A == 3 && Z == 2 &&
S == 0 )
return G4He3::He3();
205 else if(
A > 0 && Z > 0 &&
A > Z )
212 G4cout <<
"Can't convert particle with A=" <<
A <<
", Z=" << Z <<
", S=" <<
S
213 <<
" to G4ParticleDefinition, trouble ahead" <<
G4endl;
219 G4cout <<
"Can't convert particle with A=" <<
A <<
", Z=" << Z <<
", S=" <<
S
220 <<
" to G4ParticleDefinition, trouble ahead" <<
G4endl;
245 outFile <<
"ABLA++ does not provide an implementation of the ApplyYourself method!\n\n";
251 <<
"ABLA++ is a statistical model for nuclear de-excitation. It simulates\n"
252 <<
"the gamma emission and the evaporation of neutrons, light charged\n"
253 <<
"particles and IMFs, as well as fission where applicable. The code\n"
254 <<
"included in Geant4 is a C++ translation of the original Fortran\n"
255 <<
"code ABLA07. Although the model has been recently extended to\n"
256 <<
"hypernuclei by including the evaporation of lambda particles.\n"
257 <<
"More details about the physics are available in the Geant4\n"
258 <<
"Physics Reference Manual and in the reference articles.\n\n"
260 <<
"(1) A. Kelic, M. V. Ricciardi, and K. H. Schmidt, in Proceedings of "
262 <<
"ICTP-IAEA Advanced Workshop on Model Codes for Spallation Reactions,\n"
263 <<
"ICTP Trieste, Italy, 4–8 February 2008, edited by D. Filges, S. Leray, "
265 <<
"A. Mengoni, A. Stanculescu, and G. Mank (IAEA INDC(NDS)-530, Vienna, "
266 "2008), pp. 181–221.\n\n"
267 <<
"(2) J.L. Rodriguez-Sanchez, J.-C. David et al., Phys. Rev. C 98, "
G4double S(G4double temp)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
std::ostringstream G4ExceptionDescription
CLHEP::HepLorentzVector G4LorentzVector
std::vector< G4ReactionProduct * > G4ReactionProductVector
G4GLOB_DLL std::ostream G4cout
virtual void BuildPhysicsTable(const G4ParticleDefinition &) final
virtual void DeExciteModelDescription(std::ostream &outFile) const
virtual G4HadFinalState * ApplyYourself(G4HadProjectile const &, G4Nucleus &) final
virtual void InitialiseModel() final
virtual void ModelDescription(std::ostream &outFile) const
virtual G4ReactionProductVector * DeExcite(G4Fragment &aFragment)
G4AblaInterface(G4ExcitationHandler *ptr=nullptr)
virtual ~G4AblaInterface()
void DeexcitationAblaxx(G4int nucleusA, G4int nucleusZ, G4double excitationEnergy, G4double angularMomentum, G4double momX, G4double momY, G4double momZ, G4int eventnumber)
static G4Deuteron * Deuteron()
static G4DoubleHyperDoubleNeutron * Definition()
static G4DoubleHyperH4 * Definition()
G4double GetExcitationEnergy() const
const G4LorentzVector & GetMomentum() const
void SetCreatorModelID(G4int value)
void SetCreationTime(G4double time)
void SetNumberOfHoles(G4int valueTot, G4int valueP=0)
G4int GetNumberOfLambdas() const
G4ThreeVector GetAngularMomentum() const
void SetNumberOfExcitedParticle(G4int valueTot, G4int valueP)
void SetStatusChange(G4HadFinalStateStatus aS)
void AddSecondary(G4DynamicParticle *aP, G4int mod=-1)
const G4ParticleDefinition * GetDefinition() const
const G4LorentzVector & Get4Momentum() const
G4double GetGlobalTime() const
void SetTime(G4double aT)
void SetCreatorModelID(G4int id)
const G4String & GetModelName() const
static G4HyperAlpha * Definition()
static G4HyperH4 * Definition()
static G4HyperHe5 * Definition()
static G4HyperTriton * Definition()
G4ParticleDefinition * GetIon(G4int Z, G4int A, G4int lvl=0)
static G4IonTable * GetIonTable()
static G4Lambda * Lambda()
static G4Neutron * Neutron()
static G4Neutron * Definition()
static G4double GetNuclearMass(const G4double A, const G4double Z)
const G4String & GetParticleName() const
static G4int GetModelID(const G4int modelIndex)
static G4PionMinus * PionMinus()
static G4PionPlus * PionPlus()
static G4PionZero * PionZero()
static G4Proton * Definition()
static G4Proton * Proton()
void SetCreatorModelID(const G4int mod)
static G4Triton * Triton()
G4ExcitationHandler * GetExcitationHandler() const
void SetExcitationHandler(G4ExcitationHandler *ptr)
G4double enerj[VARNTPSIZE]
G4double pylab[VARNTPSIZE]
G4double pzlab[VARNTPSIZE]
G4double pxlab[VARNTPSIZE]
G4double energy(const ThreeVector &p, const G4double m)