91 if(getenv(
"BLICDEBUG") )
G4cerr <<
" ######### Binary Light Ion Reaction starts ######### " <<
G4endl;
92 G4ping debug(
"debug_G4BinaryLightIonReaction");
95 tA=targetNucleus.GetA_asInt();
96 tZ=targetNucleus.GetZ_asInt();
102 G4bool swapped=SetLighterAsProjectile(mom, toBreit);
116 if( (mom.t()-mom.mag())/pA < 50*
MeV )
120 cascaders=FuseNucleiAndPrompound(mom);
135 result=Interact(mom,toBreit);
141 G4cerr <<
"G4BinaryLightIonReaction no final state for: " <<
G4endl;
147 G4cerr <<
" Target nucleus (A,Z)=("
148 << (swapped?pA:tA) <<
","
149 << (swapped?pZ:tZ) <<
")" <<
G4endl;
150 G4cerr <<
" if frequent, please submit above information as bug report"
161 G4double theStatisticalExEnergy = GetProjectileExcitation();
166 pInitialState.
setT(pInitialState.
getT() +
170 delete target3dNucleus;target3dNucleus=0;
171 delete projectile3dNucleus;projectile3dNucleus=0;
181 std::vector<G4ReactionProduct *>::iterator iter;
194 while (std::abs(momentum.e()-pspectators.
e()) > 10*
MeV)
200 G4bool EnergyIsCorrect=EnergyAndMomentumCorrector(cascaders, pCorrect);
201 if ( ! EnergyIsCorrect && debug_G4BinaryLightIonReactionResults)
203 G4cout <<
"Warning - G4BinaryLightIonReaction E/P correction for cascaders failed" <<
G4endl;
206 for(iter=cascaders->begin(); iter!=cascaders->end(); iter++)
208 pFinalState +=
G4LorentzVector( (*iter)->GetMomentum(), (*iter)->GetTotalEnergy() );
210 momentum=pInitialState-pFinalState;
211 if (++loopcount > 10 )
213 if ( momentum.vect().mag() - momentum.e()> 10*
keV )
215 G4cerr <<
"G4BinaryLightIonReaction.cc: Cannot correct 4-momentum of cascade particles" <<
G4endl;
227 if ( momentum.vect().mag() - momentum.e()> 10*
keV )
230 for (iter=spectators->begin();iter!=spectators->end();iter++)
235 for(iter=cascaders->begin(); iter!=cascaders->end(); iter++)
241 G4cout <<
"G4BinaryLightIonReaction.cc: mom check: " << momentum
242 <<
" 3.mag "<< momentum.vect().mag() << G4endl
243 <<
" .. pInitialState/pFinalState/spectators " << pInitialState <<
" "
244 << pFinalState <<
" " << pspectators << G4endl
245 <<
" .. A,Z " << spectatorA <<
" "<< spectatorZ <<
G4endl;
246 G4cout <<
"G4BinaryLightIonReaction invalid final state for: " <<
G4endl;
252 G4cout <<
" Target nucleus (A,Z)=(" << targetNucleus.GetA_asInt()
253 <<
"," << targetNucleus.GetZ_asInt() <<
")" <<
G4endl;
254 G4cout <<
" if frequent, please submit above information as bug report"
256 #ifdef debug_G4BinaryLightIonReaction
258 ed <<
"G4BinaryLightIonreaction: Terminate for above error" <<
G4endl;
271 DeExciteSpectatorNucleus(spectators, cascaders, theStatisticalExEnergy, momentum);
287 G4ReactionProductVector::iterator iter;
288 #ifdef debug_BLIR_result
293 for(iter=cascaders->begin(); iter!=cascaders->end(); iter++)
295 if((*iter)->GetNewlyAdded())
299 (*iter)->GetTotalEnergy(),
300 (*iter)->GetMomentum() );
302 #ifdef debug_BLIR_result
307 tmp*=toBreit.inverse();
321 #ifdef debug_BLIR_result
325 GetIonMass(targetNucleus.GetZ_asInt(),targetNucleus.GetA_asInt());
336 if(getenv(
"BLICDEBUG") )
G4cerr <<
" ######### Binary Light Ion Reaction number ends ######### " <<
G4endl;
G4double G4ParticleHPJENDLHEData::G4double result
std::ostringstream G4ExceptionDescription
HepLorentzRotation & rotateY(double delta)
void SetStatusChange(G4HadFinalStateStatus aS)
std::vector< G4ReactionProduct * > G4ReactionProductVector
G4IonTable * GetIonTable() const
G4GLOB_DLL std::ostream G4cout
const G4ParticleDefinition * GetDefinition() const
G4double GetIonMass(G4int Z, G4int A, G4int L=0, G4int lvl=0) const
G4double GetKineticEnergy() const
static constexpr double eplus
const G4LorentzVector & Get4Momentum() const
G4LorentzVector Get4Momentum() const
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
HepLorentzRotation & rotateZ(double delta)
void Set4Momentum(const G4LorentzVector &momentum)
void SetEnergyChange(G4double anEnergy)
static G4ParticleTable * GetParticleTable()
static constexpr double MeV
void AddSecondary(G4DynamicParticle *aP, G4int mod=-1)
HepLorentzRotation inverse() const
void setVect(const Hep3Vector &)
G4double GetPDGCharge() const
static constexpr double keV
void SetMomentumChange(const G4ThreeVector &aV)
G4GLOB_DLL std::ostream G4cerr
G4int GetBaryonNumber() const
CLHEP::HepLorentzVector G4LorentzVector