42 , theTransport(0), theHighEnergyGenerator(0)
56 <<
" string model and a stage to de-excite the excited nuclear fragment."
58 <<
"The string model simulates the interaction of\n"
59 <<
"an incident hadron with a nucleus, forming \n"
60 <<
"excited strings, decays these strings into hadrons,\n"
61 <<
"and leaves an excited nucleus. \n"
62 <<
"<p>The string model:\n";
89 for(
unsigned int i=0; i<result->size(); i++)
93 result->operator[](i)->Get4Momentum().e(),
94 result->operator[](i)->Get4Momentum().vect());
96 delete result->operator[](i);
117 #ifdef DEBUG_initial_result
120 std::vector<G4KineticTrack *>::iterator ir_iter;
121 for(ir_iter=theInitialResult->begin(); ir_iter!=theInitialResult->end(); ir_iter++)
124 E_out += (*ir_iter)->Get4Momentum().e();
127 G4double init_E=aPart.Get4Momentum().e();
132 G4int resZ(0),resA(0);
134 for(
size_t them=0; them<thy.size(); them++)
136 if(thy[them].AreYouHit()) {
151 G4double E_excit=init_mass + init_E - final_mass - E_out;
152 G4cout <<
" Corrected delta mass " << init_mass - final_mass - delta_m <<
G4endl;
153 G4cout <<
"initial E, mass = " << init_E <<
", " << init_mass <<
G4endl;
154 G4cout <<
" final E, mass = " << E_out <<
", " << final_mass <<
" excitation_E " << E_excit <<
G4endl;
161 if(theProjectileNucleus == 0)
166 for(
size_t them=0; them<they.size(); them++)
168 if(they[them].AreYouHit()) hitCount ++;
175 if ( !theTransportResult ) {
176 G4cout <<
"G4TheoFSGenerator: null ptr from transport propagate " <<
G4endl;
183 if ( !theTransportResult ) {
184 G4cout <<
"G4TheoFSGenerator: null ptr from decay propagate " <<
G4endl;
196 if ( !theTransportResult ) {
197 G4cout <<
"G4TheoFSGenerator: null ptr from transport propagate " <<
G4endl;
203 for(
auto i=theTransportResult->begin(); i!=theTransportResult->end(); i++)
207 (*i)->GetTotalEnergy(),
208 (*i)->GetMomentum());
210 G4double time=(*i)->GetFormationTime();
211 if(time < 0.0) { time = 0.0; }
212 aNew.SetTime(timePrimary + time);
213 aNew.SetCreatorModelType((*i)->GetCreatorModel());
219 delete theTransportResult;
std::pair< G4double, G4double > GetEnergyMomentumCheckLevels() const
void ModelDescription(std::ostream &outFile) const
static G4ParticleTable * GetParticleTable()
virtual const std::vector< G4Nucleon > & GetNucleons()=0
void SetMomentumChange(const G4ThreeVector &aV)
G4KineticTrackVector * Scatter(G4Nucleus &theNucleus, const G4DynamicParticle &thePrimary)
virtual G4ReactionProductVector * PropagateNuclNucl(G4KineticTrackVector *theSecondaries, G4V3DNucleus *theNucleus, G4V3DNucleus *theProjectileNucleus)
G4IonTable * GetIonTable() const
void AddSecondary(G4DynamicParticle *aP, G4int mod=-1)
G4VHighEnergyGenerator * theHighEnergyGenerator
static G4Proton * Proton()
G4TheoFSGenerator(const G4String &name="TheoFSGenerator")
G4double GetPDGMass() const
G4double GetIonMass(G4int Z, G4int A, G4int L=0, G4int lvl=0) const
void SetEnergyChange(G4double anEnergy)
G4double GetGlobalTime() const
G4HadFinalState * ApplyYourself(const G4HadProjectile &thePrimary, G4Nucleus &theNucleus)
virtual G4String GetModelName() const
G4double GetFraction(G4Nucleus &theNucleus, const G4DynamicParticle &thePrimary)
void SetPrimaryProjectile(const G4HadProjectile &aPrimary)
std::vector< G4ReactionProduct * > G4ReactionProductVector
const G4LorentzVector & Get4Momentum() const
virtual G4int GetMassNumber()=0
G4double G4ParticleHPJENDLHEData::G4double result
G4ReactionProductVector * Propagate(G4KineticTrackVector *theSecondaries, G4V3DNucleus *)
G4double GetKineticEnergy() const
const G4ParticleDefinition * GetDefinition() const
virtual G4KineticTrackVector * Scatter(const G4Nucleus &theNucleus, const G4DynamicParticle &thePrimary)=0
virtual void ModelDescription(std::ostream &) const
static G4Neutron * Neutron()
virtual G4V3DNucleus * GetWoundedNucleus() const =0
virtual std::pair< G4double, G4double > GetEnergyMomentumCheckLevels() const
G4GLOB_DLL std::ostream G4cout
virtual void PropagateModelDescription(std::ostream &outFile) const
virtual G4V3DNucleus * GetProjectileNucleus() const
G4DecayStrongResonances theDecay
G4QuasiElasticChannel * theQuasielastic
virtual G4ReactionProductVector * Propagate(G4KineticTrackVector *theSecondaries, G4V3DNucleus *theNucleus)=0
G4VIntraNuclearTransportModel * theTransport
void SetStatusChange(G4HadFinalStateStatus aS)
G4HadFinalState * theParticleChange
const G4String & GetModelName() const