194   incidReactionProduct.SetKineticEnergy( eKinetic );
 
  212   if ( targetMass == 0 ) 
 
  231   boosted.
Lorentz(incidReactionProduct, theTarget);
 
  241     for(ii=0; ii<nDef; ii++) 
 
  245     thePhaseSpaceDistribution.
Init(aPhaseMass, nDef);
 
  247     thePhaseSpaceDistribution.
SetTarget(&theTarget);
 
  248     for(ii=0; ii<nDef; ii++) 
 
  250       G4double massCode = 1000.*std::abs(theDefs[ii]->GetPDGCharge());
 
  254       aSec->
Lorentz(*aSec, -1.*theTarget);
 
  300     if ( !getenv( 
"G4PHP_DO_NOT_ADJUST_FINAL_STATE" ) ) {
 
  303       if ( tmpHadrons != NULL ) {
 
  308          for ( 
G4int j = 0 ; j != (
G4int)tmpHadrons->size() ; j++ ) {
 
  310             if ( tmpHadrons->at(j)->GetDefinition()->GetBaryonNumber() > maxA ) {
 
  311                maxA = tmpHadrons->at(j)->GetDefinition()->GetBaryonNumber(); 
 
  314             sumA += tmpHadrons->at(j)->GetDefinition()->GetBaryonNumber();
 
  315             sumZ += 
G4int( tmpHadrons->at(j)->GetDefinition()->GetPDGCharge() + 
eps );
 
  319          if ( dA < 0 || dZ < 0 ) {
 
  320             G4int newA = tmpHadrons->at(jAtMaxA)->GetDefinition()->GetBaryonNumber() + dA ;
 
  321             G4int newZ = 
G4int( tmpHadrons->at(jAtMaxA)->GetDefinition()->GetPDGCharge() + 
eps ) + dZ;
 
  323             tmpHadrons->at( jAtMaxA )->SetDefinition( pd );
 
  333     for(i0=0; i0<nDef; i0++) Done[i0] = 
false;
 
  355     for(i0=0; i0<nDef; i0++)
 
  377       throw G4HadronicException(__FILE__, __LINE__, 
"No energy distribution to sample from in InelasticBaseFS::BaseApply");
 
  390         G4double availableEnergy = eKinetic+massn+localMass-mass1-mass2-concreteMass;
 
  392         G4double emin = availableEnergy+mass1+mass2 - std::sqrt((mass1+mass2)*(mass1+mass2)+orgMomentum*orgMomentum);
 
  393         G4double p1=std::sqrt(2.*mass2*emin);
 
  396         if(getenv(
"G4ParticleHPDebug")) 
 
  398           G4cout << 
"G4ParticleHPInelasticBaseFS "<<z1<<
" "<<theBaseZ<<
" "<<a1<<
" "<<theBaseA<<
" "<<availableEnergy<<
" " 
  405         bufferedDirection = -bufferedDirection;
 
  409         if(getenv(
"G4ParticleHPDebug")) 
 
  411         G4cout << 
" G4ParticleHPInelasticBaseFS "<<bufferedDirection.mag2()<<
G4endl;
 
  415                                   +bufferedDirection.mag2()) );
 
  417           aHadron->
Lorentz(*aHadron, -1.*(theTarget+incidReactionProduct)); 
 
  419         if(getenv(
"G4ParticleHPDebug"))
 
  425     tmpHadrons->push_back(aHadron);
 
  435     throw G4HadronicException(__FILE__, __LINE__, 
"No data to create the neutrons in NInelasticFS");
 
  443     boosted_tmp.
Lorentz(incidReactionProduct, theTarget);
 
  448       for(i=0; i<thePhotons->size(); i++)
 
  451         thePhotons->operator[](i)->Lorentz(*(thePhotons->operator[](i)), -1.*theTarget);
 
  459     G4bool bAdjustPhotons = 
true;
 
  461     bAdjustPhotons = 
true; 
 
  463     if ( getenv( 
"G4PHP_DO_NOT_ADJUST_FINAL_STATE" ) ) bAdjustPhotons = 
false;
 
  466     if( bAdjustPhotons ) {
 
  469       theGammaEnergy = anEnergy-theGammaEnergy;
 
  479       for(i=0; i<tmpHadrons->size(); i++)
 
  483           eBindProducts+=eBindN;
 
  487           eBindProducts+=eBindP;
 
  491           eBindProducts+=eBindD;
 
  495           eBindProducts+=eBindT;
 
  497       else if(tmpHadrons->operator[](i)->GetDefinition() == 
G4He3::He3())
 
  499           eBindProducts+=eBindHe3;
 
  501       else if(tmpHadrons->operator[](i)->GetDefinition() == 
G4Alpha::Alpha())
 
  503           eBindProducts+=eBindA;
 
  508       theGammaEnergy += eBindProducts;
 
  511       if( getenv(
"G4ParticleHPDebug"))  
G4cout << 
" G4ParticleHPInelasticBaseFS::BaseApply gamma Energy " << theGammaEnergy << 
" eBindProducts " << eBindProducts << 
G4endl;
 
  524           theGammaEnergy -= (2*eBindA);
 
  540           if( getenv(
"G4ParticleHPDebug"))  
G4cout << 
" G4ParticleHPInelasticBaseFS::BaseApply adding gamma from level " << iLevel << theOtherPhotons->operator[](ii)->GetKineticEnergy() << 
G4endl;
 
  548           if(random > (eHigh-eLow)/(theGammaEnergy-eLow)) iLevel++;
 
  552       if(theOtherPhotons != 0)
 
  554           for(
unsigned int iii=0; iii<theOtherPhotons->size(); iii++)
 
  556           thePhotons->push_back(theOtherPhotons->operator[](iii));
 
  558       if( getenv(
"G4ParticleHPDebug"))
 
  559             G4cout << iii << 
" G4ParticleHPInelasticBaseFS::BaseApply adding gamma " << theOtherPhotons->operator[](iii)->GetKineticEnergy() << 
G4endl;
 
  562           delete theOtherPhotons; 
 
  565       if(iLevel == -1) 
break;
 
  571   unsigned int nSecondaries = tmpHadrons->size();
 
  572   unsigned int nPhotons = 0;
 
  573   if(thePhotons!=0) { nPhotons = thePhotons->size(); }
 
  574   nSecondaries += nPhotons;
 
  577   if( getenv(
"G4ParticleHPDebug"))  
G4cout << 
" G4ParticleHPInelasticBaseFS::BaseApply N hadrons " << nSecondaries-nPhotons << 
G4endl;
 
  580   for(i=0; i<nSecondaries-nPhotons; i++)
 
  583       theSec->
SetDefinition(tmpHadrons->operator[](i)->GetDefinition());
 
  584       theSec->
SetMomentum(tmpHadrons->operator[](i)->GetMomentum());
 
  590       delete tmpHadrons->operator[](i);
 
  593   if( getenv(
"G4ParticleHPDebug"))  
G4cout << 
" G4ParticleHPInelasticBaseFS::BaseApply N photons " << nPhotons << G4endl;
 
  597     for(i=0; i<nPhotons; i++)
 
  600       theSec->
SetDefinition(thePhotons->operator[](i)->GetDefinition());
 
  601       theSec->
SetMomentum(thePhotons->operator[](i)->GetMomentum());
 
  606       delete thePhotons->operator[](i);
 
G4ReactionProduct * Sample(G4double anEnergy, G4double massCode, G4double mass)
G4double GetTotalMeanEnergy()
G4ReactionProductVector * GetDecayGammas(G4int aLevel)
static G4double GetNuclearMass(const G4double A, const G4double Z)
G4Cache< G4HadFinalState * > theResult
void SetMomentum(const G4ThreeVector &momentum)
void Lorentz(const G4ReactionProduct &p1, const G4ReactionProduct &p2)
G4double GetKineticEnergy() const 
static constexpr double keV
void SetKineticEnergy(const G4double en)
void SetMomentum(const G4double x, const G4double y, const G4double z)
void SetProjectileRP(G4ReactionProduct &aIncidentPart)
G4ParticleDefinition * GetIon(G4int Z, G4int A, G4int lvl=0)
G4ParticleHPEnAngCorrelation * theEnergyAngData
static const G4double eps
G4ParticleDefinition * GetDefinition() const 
G4double Sample(G4double anEnergy, G4int &it)
G4ReactionProductVector * Sample(G4double anEnergy)
const G4String & GetParticleName() const 
void SetDefinition(const G4ParticleDefinition *aParticleDefinition)
void SetProjectileRP(const G4ReactionProduct &anIncidentParticleRP)
G4ParticleDefinition * theProjectile
void Init(G4double aMass, G4int aCount)
void SetStatusChange(G4HadFinalStateStatus aS)
std::vector< G4ReactionProduct * > G4ReactionProductVector
void SetTarget(const G4ReactionProduct &aTarget)
G4ParticleHPDeExGammas theGammas
void adjust_final_state(G4LorentzVector)
const G4ParticleDefinition * GetDefinition() const 
G4ReactionProduct GetBiasedThermalNucleus(G4double aMass, G4ThreeVector aVelocity, G4double temp=-1) const 
G4GLOB_DLL std::ostream G4cout
void SampleAndUpdate(G4ReactionProduct &anIncidentParticle)
const G4ParticleDefinition * GetDefinition() const 
G4int GetNumberOfLevels()
G4double GetKineticEnergy() const 
void SetTotalEnergy(const G4double en)
static constexpr double MeV
G4ErrorTarget * theTarget
static G4Triton * Triton()
static G4Proton * Proton()
static G4Neutron * Neutron()
const G4ParticleDefinition * GetParticleDefinition() const 
const G4LorentzVector & Get4Momentum() const 
void SetProjectileRP(G4ReactionProduct *aIncidentParticleRP)
static G4Deuteron * Deuteron()
static G4IonTable * GetIonTable()
G4double GetKineticEnergy() const 
G4double theNuclearMassDifference
G4double GetTotalEnergy() const 
void SetTarget(G4ReactionProduct *aTarget)
G4double GetPDGMass() const 
static G4double GetBindingEnergy(const G4int A, const G4int Z)
G4ParticleHPEnergyDistribution * theEnergyDistribution
void SetTarget(G4ReactionProduct &aTarget)
G4ReactionProductVector * GetPhotons(G4double anEnergy)
G4ThreeVector GetMomentum() const 
G4double GetTemperature() const 
const G4Material * GetMaterial() const 
void AddSecondary(G4DynamicParticle *aP, G4int mod=-1)
void SetDefinition(const G4ParticleDefinition *aParticleDefinition)
G4ParticleHPPhotonDist * theFinalStatePhotons
G4double GetPDGCharge() const 
void Put(const value_type &val) const 
G4double GetLevelEnergy(G4int aLevel)
G4int GetNumberOfSecondaries() const 
G4ParticleHPAngular * theAngularDistribution
G4ThreeVector GetMomentum() const 
G4int GetBaryonNumber() const