Geant4-11
Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes
G4WilsonAbrasionModel Class Reference

#include <G4WilsonAbrasionModel.hh>

Inheritance diagram for G4WilsonAbrasionModel:
G4HadronicInteraction

Public Member Functions

void ActivateFor (const G4Element *anElement)
 
void ActivateFor (const G4Material *aMaterial)
 
virtual G4HadFinalStateApplyYourself (const G4HadProjectile &, G4Nucleus &)
 
virtual void BuildPhysicsTable (const G4ParticleDefinition &)
 
void DeActivateFor (const G4Element *anElement)
 
void DeActivateFor (const G4Material *aMaterial)
 
 G4WilsonAbrasionModel (const G4WilsonAbrasionModel &right)=delete
 
 G4WilsonAbrasionModel (G4bool useAblation1=false)
 
 G4WilsonAbrasionModel (G4ExcitationHandler *)
 
G4bool GetConserveMomentum ()
 
virtual std::pair< G4double, G4doubleGetEnergyMomentumCheckLevels () const
 
G4ExcitationHandlerGetExcitationHandler ()
 
virtual const std::pair< G4double, G4doubleGetFatalEnergyCheckLevels () const
 
G4double GetMaxEnergy () const
 
G4double GetMaxEnergy (const G4Material *aMaterial, const G4Element *anElement) const
 
G4double GetMinEnergy () const
 
G4double GetMinEnergy (const G4Material *aMaterial, const G4Element *anElement) const
 
const G4StringGetModelName () const
 
G4double GetRecoilEnergyThreshold () const
 
G4bool GetUseAblation ()
 
G4int GetVerboseLevel () const
 
virtual void InitialiseModel ()
 
virtual G4bool IsApplicable (const G4HadProjectile &aTrack, G4Nucleus &targetNucleus)
 
G4bool IsBlocked (const G4Element *anElement) const
 
G4bool IsBlocked (const G4Material *aMaterial) const
 
virtual void ModelDescription (std::ostream &) const
 
G4bool operator!= (const G4HadronicInteraction &right) const =delete
 
const G4WilsonAbrasionModeloperator= (G4WilsonAbrasionModel &right)=delete
 
G4bool operator== (const G4HadronicInteraction &right) const =delete
 
virtual G4double SampleInvariantT (const G4ParticleDefinition *p, G4double plab, G4int Z, G4int A)
 
void SetConserveMomentum (G4bool)
 
void SetEnergyMomentumCheckLevels (G4double relativeLevel, G4double absoluteLevel)
 
void SetExcitationHandler (G4ExcitationHandler *)
 
void SetMaxEnergy (const G4double anEnergy)
 
void SetMaxEnergy (G4double anEnergy, const G4Element *anElement)
 
void SetMaxEnergy (G4double anEnergy, const G4Material *aMaterial)
 
void SetMinEnergy (G4double anEnergy)
 
void SetMinEnergy (G4double anEnergy, const G4Element *anElement)
 
void SetMinEnergy (G4double anEnergy, const G4Material *aMaterial)
 
void SetRecoilEnergyThreshold (G4double val)
 
void SetUseAblation (G4bool)
 
void SetVerboseLevel (G4int)
 
 ~G4WilsonAbrasionModel ()
 

Protected Member Functions

void Block ()
 
G4bool IsBlocked () const
 
void SetModelName (const G4String &nam)
 

Protected Attributes

G4bool isBlocked
 
G4double theMaxEnergy
 
G4double theMinEnergy
 
G4HadFinalState theParticleChange
 
G4int verboseLevel
 

Private Member Functions

G4FragmentGetAbradedNucleons (G4int, G4double, G4double, G4double)
 
G4bool GetConserveEnergy ()
 
G4double GetNucleonInducedExcitation (G4double, G4double, G4double)
 
void PrintWelcomeMessage ()
 
void SetConserveEnergy (G4bool)
 

Private Attributes

G4double B
 
G4bool conserveEnergy
 
G4bool conserveMomentum
 
std::pair< G4double, G4doubleepCheckLevels
 
G4double fradius
 
G4double npK
 
G4double r0sq
 
G4double recoilEnergyThreshold
 
G4HadronicInteractionRegistryregistry
 
G4int secID
 
G4WilsonAblationModeltheAblation
 
std::vector< const G4Material * > theBlockedList
 
std::vector< const G4Element * > theBlockedListElements
 
G4ExcitationHandlertheExcitationHandler
 
std::vector< std::pair< G4double, const G4Material * > > theMaxEnergyList
 
std::vector< std::pair< G4double, const G4Element * > > theMaxEnergyListElements
 
std::vector< std::pair< G4double, const G4Material * > > theMinEnergyList
 
std::vector< std::pair< G4double, const G4Element * > > theMinEnergyListElements
 
G4String theModelName
 
G4double third
 
G4bool useAblation
 

Detailed Description

Definition at line 77 of file G4WilsonAbrasionModel.hh.

Constructor & Destructor Documentation

◆ G4WilsonAbrasionModel() [1/3]

G4WilsonAbrasionModel::G4WilsonAbrasionModel ( G4bool  useAblation1 = false)

Definition at line 117 of file G4WilsonAbrasionModel.cc.

118 : G4HadronicInteraction("G4WilsonAbrasion"), secID(-1)
119{
120 // Send message to stdout to advise that the G4Abrasion model is being used.
122
123 // Set the default verbose level to 0 - no output.
124 verboseLevel = 0;
125 useAblation = useAblation1;
126 theAblation = nullptr;
127
128 // No de-excitation handler has been supplied - define the default handler.
129
131 if (useAblation)
132 {
136 }
137
138 // Set the minimum and maximum range for the model (despite nomanclature,
139 // this is in energy per nucleon number).
140
141 SetMinEnergy(70.0*MeV);
142 SetMaxEnergy(10.1*GeV);
143 isBlocked = false;
144
145 // npK, when mutiplied by the nuclear Fermi momentum, determines the range of
146 // momentum over which the secondary nucleon momentum is sampled.
147
148 r0sq = 0.0;
149 npK = 5.0;
150 B = 10.0 * MeV;
151 third = 1.0 / 3.0;
152 fradius = 0.99;
153 conserveEnergy = false;
154 conserveMomentum = true;
155
156 // Creator model ID for the secondaries created by this model
158}
static constexpr double GeV
Definition: G4SIunits.hh:203
static constexpr double MeV
Definition: G4SIunits.hh:200
void SetEvaporation(G4VEvaporation *ptr, G4bool isLocal=false)
void SetMinEnergy(G4double anEnergy)
G4HadronicInteraction(const G4String &modelName="HadronicModel")
const G4String & GetModelName() const
void SetMaxEnergy(const G4double anEnergy)
static G4int GetModelID(const G4int modelIndex)
G4ExcitationHandler * theExcitationHandler
G4WilsonAblationModel * theAblation

References B, conserveEnergy, conserveMomentum, fradius, G4PhysicsModelCatalog::GetModelID(), G4HadronicInteraction::GetModelName(), GeV, G4HadronicInteraction::isBlocked, MeV, npK, PrintWelcomeMessage(), r0sq, secID, G4ExcitationHandler::SetEvaporation(), G4HadronicInteraction::SetMaxEnergy(), G4HadronicInteraction::SetMinEnergy(), G4WilsonAblationModel::SetVerboseLevel(), theAblation, theExcitationHandler, third, useAblation, and G4HadronicInteraction::verboseLevel.

◆ G4WilsonAbrasionModel() [2/3]

G4WilsonAbrasionModel::G4WilsonAbrasionModel ( G4ExcitationHandler aExcitationHandler)

Definition at line 172 of file G4WilsonAbrasionModel.cc.

172 :
173 G4HadronicInteraction("G4WilsonAbrasion"), secID(-1)
174{
175// Send message to stdout to advise that the G4Abrasion model is being used.
176
178
179// Set the default verbose level to 0 - no output.
180
181 verboseLevel = 0;
182
183 theAblation = nullptr; //A.R. 26-Jul-2012 Coverity fix.
184 useAblation = false; //A.R. 14-Aug-2012 Coverity fix.
185
186//
187// The user is able to provide the excitation handler as well as an argument
188// which is provided in this instantiation is used to determine
189// whether the spectators of the interaction are free following the abrasion.
190//
191 theExcitationHandler = aExcitationHandler;
192//
193//
194// Set the minimum and maximum range for the model (despite nomanclature, this
195// is in energy per nucleon number).
196//
197 SetMinEnergy(70.0*MeV);
198 SetMaxEnergy(10.1*GeV);
199 isBlocked = false;
200//
201//
202// npK, when mutiplied by the nuclear Fermi momentum, determines the range of
203// momentum over which the secondary nucleon momentum is sampled.
204//
205 r0sq = 0.0;
206 npK = 5.0;
207 B = 10.0 * MeV;
208 third = 1.0 / 3.0;
209 fradius = 0.99;
210 conserveEnergy = false;
211 conserveMomentum = true;
212
213 // Creator model ID for the secondaries created by this model
215}

References B, conserveEnergy, conserveMomentum, fradius, G4PhysicsModelCatalog::GetModelID(), G4HadronicInteraction::GetModelName(), GeV, G4HadronicInteraction::isBlocked, MeV, npK, PrintWelcomeMessage(), r0sq, secID, G4HadronicInteraction::SetMaxEnergy(), G4HadronicInteraction::SetMinEnergy(), theAblation, theExcitationHandler, third, useAblation, and G4HadronicInteraction::verboseLevel.

◆ ~G4WilsonAbrasionModel()

G4WilsonAbrasionModel::~G4WilsonAbrasionModel ( )

Definition at line 218 of file G4WilsonAbrasionModel.cc.

219{
221}

References theExcitationHandler.

◆ G4WilsonAbrasionModel() [3/3]

G4WilsonAbrasionModel::G4WilsonAbrasionModel ( const G4WilsonAbrasionModel right)
delete

Member Function Documentation

◆ ActivateFor() [1/2]

void G4HadronicInteraction::ActivateFor ( const G4Element anElement)
inlineinherited

◆ ActivateFor() [2/2]

void G4HadronicInteraction::ActivateFor ( const G4Material aMaterial)
inlineinherited

◆ ApplyYourself()

G4HadFinalState * G4WilsonAbrasionModel::ApplyYourself ( const G4HadProjectile theTrack,
G4Nucleus theTarget 
)
virtual

Reimplemented from G4HadronicInteraction.

Definition at line 224 of file G4WilsonAbrasionModel.cc.

226{
227//
228//
229// The secondaries will be returned in G4HadFinalState &theParticleChange -
230// initialise this. The original track will always be discontinued and
231// secondaries followed.
232//
235//
236//
237// Get relevant information about the projectile and target (A, Z, energy/nuc,
238// momentum, etc).
239//
240 const G4ParticleDefinition *definitionP = theTrack.GetDefinition();
241 const G4double AP = definitionP->GetBaryonNumber();
242 const G4double ZP = definitionP->GetPDGCharge();
243 G4LorentzVector pP = theTrack.Get4Momentum();
244 G4double E = theTrack.GetKineticEnergy()/AP;
245 G4double AT = theTarget.GetA_asInt();
246 G4double ZT = theTarget.GetZ_asInt();
247 G4double TotalEPre = theTrack.GetTotalEnergy() +
248 theTarget.AtomicMass(AT, ZT) + theTarget.GetEnergyDeposit();
249 G4double TotalEPost = 0.0;
250//
251//
252// Determine the radii of the projectile and target nuclei.
253//
255 G4double rP = aR.GetWilsonRadius(AP);
256 G4double rT = aR.GetWilsonRadius(AT);
257 G4double rPsq = rP * rP;
258 G4double rTsq = rT * rT;
259 if (verboseLevel >= 2)
260 {
261 G4cout <<"########################################"
262 <<"########################################"
263 <<G4endl;
264 G4cout.precision(6);
265 G4cout <<"IN G4WilsonAbrasionModel" <<G4endl;
266 G4cout <<"Initial projectile A=" <<AP
267 <<", Z=" <<ZP
268 <<", radius = " <<rP/fermi <<" fm"
269 <<G4endl;
270 G4cout <<"Initial target A=" <<AT
271 <<", Z=" <<ZT
272 <<", radius = " <<rT/fermi <<" fm"
273 <<G4endl;
274 G4cout <<"Projectile momentum and Energy/nuc = " <<pP <<" ," <<E <<G4endl;
275 }
276//
277//
278// The following variables are used to determine the impact parameter in the
279// near-field (i.e. taking into consideration the electrostatic repulsion).
280//
281 G4double rm = ZP * ZT * elm_coupling / (E * AP);
282 G4double r = 0.0;
283 G4double rsq = 0.0;
284//
285//
286// Initialise some of the variables which wll be used to calculate the chord-
287// length for nucleons in the projectile and target, and hence calculate the
288// number of abraded nucleons and the excitation energy.
289//
290 G4NuclearAbrasionGeometry *theAbrasionGeometry = nullptr;
291 G4double CT = 0.0;
292 G4double F = 0.0;
293 G4int Dabr = 0;
294//
295//
296// The following loop is performed until the number of nucleons which are
297// abraded by the process is >1, i.e. an interaction MUST occur.
298//
299 G4bool skipInteraction = false; // It will be set true if the two nuclei fail to collide
300 const G4int maxNumberOfLoops = 1000;
301 G4int loopCounter = -1;
302 while (Dabr == 0 && ++loopCounter < maxNumberOfLoops) /* Loop checking, 07.08.2015, A.Ribon */
303 {
304//
305//
306// Sample the impact parameter. For the moment, this class takes account of
307// electrostatic effects on the impact parameter, but (like HZETRN AND NUCFRG2)
308// does not make any correction for the effects of nuclear-nuclear repulsion.
309//
310 G4double rPT = rP + rT;
311 G4double rPTsq = rPT * rPT;
312//
313//
314// This is a "catch" to make sure we don't go into an infinite loop because the
315// energy is too low to overcome nuclear repulsion. PRT 20091023. If the
316// value of rm < fradius * rPT then we're unlikely to sample a small enough
317// impact parameter (energy of incident particle is too low).
318//
319 if (rm >= fradius * rPT) {
320 skipInteraction = true;
321 }
322//
323//
324// Now sample impact parameter until the criterion is met that projectile
325// and target overlap, but repulsion is taken into consideration.
326//
327 G4int evtcnt = 0;
328 r = 1.1 * rPT;
329 while (r > rPT && ++evtcnt < 1000) /* Loop checking, 07.08.2015, A.Ribon */
330 {
331 G4double bsq = rPTsq * G4UniformRand();
332 r = (rm + std::sqrt(rm*rm + 4.0*bsq)) / 2.0;
333 }
334//
335//
336// We've tried to sample this 1000 times, but failed.
337//
338 if (evtcnt >= 1000) {
339 skipInteraction = true;
340 }
341
342 rsq = r * r;
343//
344//
345// Now determine the chord-length through the target nucleus.
346//
347 if (rT > rP)
348 {
349 G4double x = (rPsq + rsq - rTsq) / 2.0 / r;
350 if (x > 0.0) CT = 2.0 * std::sqrt(rTsq - x*x);
351 else CT = 2.0 * std::sqrt(rTsq - rsq);
352 }
353 else
354 {
355 G4double x = (rTsq + rsq - rPsq) / 2.0 / r;
356 if (x > 0.0) CT = 2.0 * std::sqrt(rTsq - x*x);
357 else CT = 2.0 * rT;
358 }
359//
360//
361// Determine the number of abraded nucleons. Note that the mean number of
362// abraded nucleons is used to sample the Poisson distribution. The Poisson
363// distribution is sampled only ten times with the current impact parameter,
364// and if it fails after this to find a case for which the number of abraded
365// nucleons >1, the impact parameter is re-sampled.
366//
367 delete theAbrasionGeometry;
368 theAbrasionGeometry = new G4NuclearAbrasionGeometry(AP,AT,r);
369 F = theAbrasionGeometry->F();
370 G4double lambda = 16.6*fermi / G4Pow::GetInstance()->powA(E/MeV,0.26);
371 G4double Mabr = F * AP * (1.0 - G4Exp(-CT/lambda));
372 G4long n = 0;
373 for (G4int i = 0; i<10; ++i)
374 {
375 n = G4Poisson(Mabr);
376 if (n > 0)
377 {
378 if (n>AP) Dabr = (G4int) AP;
379 else Dabr = (G4int) n;
380 break;
381 }
382 }
383 } // End of while loop
384
385 if ( loopCounter >= maxNumberOfLoops || skipInteraction ) {
386 // Assume nuclei do not collide and return unchanged primary.
390 if (verboseLevel >= 2) {
391 G4cout <<"Particle energy too low to overcome repulsion." <<G4endl;
392 G4cout <<"Event rejected and original track maintained" <<G4endl;
393 G4cout <<"########################################"
394 <<"########################################"
395 <<G4endl;
396 }
397 delete theAbrasionGeometry;
398 return &theParticleChange;
399 }
400
401 if (verboseLevel >= 2)
402 {
403 G4cout <<G4endl;
404 G4cout <<"Impact parameter = " <<r/fermi <<" fm" <<G4endl;
405 G4cout <<"# Abraded nucleons = " <<Dabr <<G4endl;
406 }
407//
408//
409// The number of abraded nucleons must be no greater than the number of
410// nucleons in either the projectile or the target. If AP - Dabr < 2 or
411// AT - Dabr < 2 then either we have only a nucleon left behind in the
412// projectile/target or we've tried to abrade too many nucleons - and Dabr
413// should be limited.
414//
415 if (AP - (G4double) Dabr < 2.0) Dabr = (G4int) AP;
416 if (AT - (G4double) Dabr < 2.0) Dabr = (G4int) AT;
417//
418//
419// Determine the abraded secondary nucleons from the projectile. *fragmentP
420// is a pointer to the prefragment from the projectile and nSecP is the number
421// of nucleons in theParticleChange which have been abraded. The total energy
422// from these is determined.
423//
424 G4ThreeVector boost = pP.findBoostToCM();
425 G4Fragment *fragmentP = GetAbradedNucleons (Dabr, AP, ZP, rP);
427 G4int i = 0;
428 for (i=0; i<nSecP; ++i)
429 {
430 TotalEPost += theParticleChange.GetSecondary(i)->
431 GetParticle()->GetTotalEnergy();
432 }
433//
434//
435// Determine the number of spectators in the interaction region for the
436// projectile.
437//
438 G4int DspcP = (G4int) (AP*F) - Dabr;
439 if (DspcP <= 0) DspcP = 0;
440 else if (DspcP > AP-Dabr) DspcP = ((G4int) AP) - Dabr;
441//
442//
443// Determine excitation energy associated with excess surface area of the
444// projectile (EsP) and the excitation due to scattering of nucleons which are
445// retained within the projectile (ExP). Add the total energy from the excited
446// nucleus to the total energy of the secondaries.
447//
448 G4bool excitationAbsorbedByProjectile = false;
449 if (fragmentP != nullptr)
450 {
451 G4double EsP = theAbrasionGeometry->GetExcitationEnergyOfProjectile();
452 G4double ExP = 0.0;
453 if (Dabr < AT)
454 excitationAbsorbedByProjectile = G4UniformRand() < 0.5;
455 if (excitationAbsorbedByProjectile)
456 ExP = GetNucleonInducedExcitation(rP, rT, r);
457 G4double xP = EsP + ExP;
458 if (xP > B*(AP-Dabr)) xP = B*(AP-Dabr);
459 G4LorentzVector lorentzVector = fragmentP->GetMomentum();
460 lorentzVector.setE(lorentzVector.e()+xP);
461 fragmentP->SetMomentum(lorentzVector);
462 TotalEPost += lorentzVector.e();
463 }
464 G4double EMassP = TotalEPost;
465//
466//
467// Determine the abraded secondary nucleons from the target. Note that it's
468// assumed that the same number of nucleons are abraded from the target as for
469// the projectile, and obviously no boost is applied to the products. *fragmentT
470// is a pointer to the prefragment from the target and nSec is the total number
471// of nucleons in theParticleChange which have been abraded. The total energy
472// from these is determined.
473//
474 G4Fragment *fragmentT = GetAbradedNucleons (Dabr, AT, ZT, rT);
476 for (i=nSecP; i<nSec; ++i)
477 {
478 TotalEPost += theParticleChange.GetSecondary(i)->
479 GetParticle()->GetTotalEnergy();
480 }
481//
482//
483// Determine the number of spectators in the interaction region for the
484// target.
485//
486 G4int DspcT = (G4int) (AT*F) - Dabr;
487 if (DspcT <= 0) DspcT = 0;
488 else if (DspcT > AP-Dabr) DspcT = ((G4int) AT) - Dabr;
489//
490//
491// Determine excitation energy associated with excess surface area of the
492// target (EsT) and the excitation due to scattering of nucleons which are
493// retained within the target (ExT). Add the total energy from the excited
494// nucleus to the total energy of the secondaries.
495//
496 if (fragmentT != nullptr)
497 {
498 G4double EsT = theAbrasionGeometry->GetExcitationEnergyOfTarget();
499 G4double ExT = 0.0;
500 if (!excitationAbsorbedByProjectile)
501 ExT = GetNucleonInducedExcitation(rT, rP, r);
502 G4double xT = EsT + ExT;
503 if (xT > B*(AT-Dabr)) xT = B*(AT-Dabr);
504 G4LorentzVector lorentzVector = fragmentT->GetMomentum();
505 lorentzVector.setE(lorentzVector.e()+xT);
506 fragmentT->SetMomentum(lorentzVector);
507 TotalEPost += lorentzVector.e();
508 }
509//
510//
511// Now determine the difference between the pre and post interaction
512// energy - this will be used to determine the Lorentz boost if conservation
513// of energy is to be imposed/attempted.
514//
515 G4double deltaE = TotalEPre - TotalEPost;
516 if (deltaE > 0.0 && conserveEnergy)
517 {
518 G4double beta = std::sqrt(1.0 - EMassP*EMassP/G4Pow::GetInstance()->powN(deltaE+EMassP,2));
519 boost = boost / boost.mag() * beta;
520 }
521//
522//
523// Now boost the secondaries from the projectile.
524//
525 G4ThreeVector pBalance = pP.vect();
526 for (i=0; i<nSecP; ++i)
527 {
529 GetParticle();
530 G4LorentzVector lorentzVector = dynamicP->Get4Momentum();
531 lorentzVector.boost(-boost);
532 dynamicP->Set4Momentum(lorentzVector);
533 pBalance -= lorentzVector.vect();
534 }
535//
536//
537// Set the boost for the projectile prefragment. This is now based on the
538// conservation of momentum. However, if the user selected momentum of the
539// prefragment is not to be conserved this simply boosted to the velocity of the
540// original projectile times the ratio of the unexcited to the excited mass
541// of the prefragment (the excitation increases the effective mass of the
542// prefragment, and therefore modifying the boost is an attempt to prevent
543// the momentum of the prefragment being excessive).
544//
545 if (fragmentP != nullptr)
546 {
547 G4LorentzVector lorentzVector = fragmentP->GetMomentum();
548 G4double fragmentM = lorentzVector.m();
550 fragmentP->SetMomentum
551 (G4LorentzVector(pBalance,std::sqrt(pBalance.mag2()+fragmentM*fragmentM+1.0*eV*eV)));
552 else
553 {
554 G4double fragmentGroundStateM = fragmentP->GetGroundStateMass();
555 fragmentP->SetMomentum(lorentzVector.boost(-boost * fragmentGroundStateM/fragmentM));
556 }
557 }
558//
559//
560// Output information to user if verbose information requested.
561//
562 if (verboseLevel >= 2)
563 {
564 G4cout <<G4endl;
565 G4cout <<"-----------------------------------" <<G4endl;
566 G4cout <<"Secondary nucleons from projectile:" <<G4endl;
567 G4cout <<"-----------------------------------" <<G4endl;
568 G4cout.precision(7);
569 for (i=0; i<nSecP; ++i)
570 {
571 G4cout <<"Particle # " <<i <<G4endl;
574 G4cout <<"New nucleon (P) " <<dyn->GetDefinition()->GetParticleName()
575 <<" : " <<dyn->Get4Momentum()
576 <<G4endl;
577 }
578 G4cout <<"---------------------------" <<G4endl;
579 G4cout <<"The projectile prefragment:" <<G4endl;
580 G4cout <<"---------------------------" <<G4endl;
581 if (fragmentP != nullptr)
582 G4cout <<*fragmentP <<G4endl;
583 else
584 G4cout <<"(No residual prefragment)" <<G4endl;
585 G4cout <<G4endl;
586 G4cout <<"-------------------------------" <<G4endl;
587 G4cout <<"Secondary nucleons from target:" <<G4endl;
588 G4cout <<"-------------------------------" <<G4endl;
589 G4cout.precision(7);
590 for (i=nSecP; i<nSec; ++i)
591 {
592 G4cout <<"Particle # " <<i <<G4endl;
595 G4cout <<"New nucleon (T) " <<dyn->GetDefinition()->GetParticleName()
596 <<" : " <<dyn->Get4Momentum()
597 <<G4endl;
598 }
599 G4cout <<"-----------------------" <<G4endl;
600 G4cout <<"The target prefragment:" <<G4endl;
601 G4cout <<"-----------------------" <<G4endl;
602 if (fragmentT != nullptr)
603 G4cout <<*fragmentT <<G4endl;
604 else
605 G4cout <<"(No residual prefragment)" <<G4endl;
606 }
607//
608//
609// Now we can decay the nuclear fragments if present. The secondaries are
610// collected and boosted as well. This is performed first for the projectile...
611//
612 if (fragmentP !=nullptr)
613 {
614 G4ReactionProductVector *products = nullptr;
615 // if (fragmentP->GetZ_asInt() != fragmentP->GetA_asInt())
616 products = theExcitationHandler->BreakItUp(*fragmentP);
617 // else
618 // products = theExcitationHandlerx->BreakItUp(*fragmentP);
619 delete fragmentP;
620 fragmentP = nullptr;
621
622 G4ReactionProductVector::iterator iter;
623 for (iter = products->begin(); iter != products->end(); ++iter)
624 {
625 G4DynamicParticle *secondary =
626 new G4DynamicParticle((*iter)->GetDefinition(),
627 (*iter)->GetTotalEnergy(), (*iter)->GetMomentum());
629 G4String particleName = (*iter)->GetDefinition()->GetParticleName();
630 delete (*iter); // get rid of leftover particle def!
631 if (verboseLevel >= 2 && particleName.find("[",0) < particleName.size())
632 {
633 G4cout <<"------------------------" <<G4endl;
634 G4cout <<"The projectile fragment:" <<G4endl;
635 G4cout <<"------------------------" <<G4endl;
636 G4cout <<" fragmentP = " <<particleName
637 <<" Energy = " <<secondary->GetKineticEnergy()
638 <<G4endl;
639 }
640 }
641 delete products;
642 }
643//
644//
645// Now decay the target nucleus - no boost is applied since in this
646// approximation it is assumed that there is negligible momentum transfer from
647// the projectile.
648//
649 if (fragmentT != nullptr)
650 {
651 G4ReactionProductVector *products = nullptr;
652 // if (fragmentT->GetZ_asInt() != fragmentT->GetA_asInt())
653 products = theExcitationHandler->BreakItUp(*fragmentT);
654 // else
655 // products = theExcitationHandlerx->BreakItUp(*fragmentT);
656 // delete fragmentT;
657 fragmentT = nullptr;
658
659 G4ReactionProductVector::iterator iter;
660 for (iter = products->begin(); iter != products->end(); ++iter)
661 {
662 G4DynamicParticle *secondary =
663 new G4DynamicParticle((*iter)->GetDefinition(),
664 (*iter)->GetTotalEnergy(), (*iter)->GetMomentum());
666 G4String particleName = (*iter)->GetDefinition()->GetParticleName();
667 delete (*iter); // get rid of leftover particle def!
668 if (verboseLevel >= 2 && particleName.find("[",0) < particleName.size())
669 {
670 G4cout <<"--------------------" <<G4endl;
671 G4cout <<"The target fragment:" <<G4endl;
672 G4cout <<"--------------------" <<G4endl;
673 G4cout <<" fragmentT = " <<particleName
674 <<" Energy = " <<secondary->GetKineticEnergy()
675 <<G4endl;
676 }
677 }
678 delete products;
679 }
680
681 if (verboseLevel >= 2)
682 G4cout <<"########################################"
683 <<"########################################"
684 <<G4endl;
685
686 delete theAbrasionGeometry;
687 return &theParticleChange;
688}
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
Definition: G4Exp.hh:179
@ isAlive
@ stopAndKill
CLHEP::HepLorentzVector G4LorentzVector
G4long G4Poisson(G4double mean)
Definition: G4Poisson.hh:50
std::vector< G4ReactionProduct * > G4ReactionProductVector
static constexpr double fermi
Definition: G4SIunits.hh:83
static constexpr double eV
Definition: G4SIunits.hh:201
double G4double
Definition: G4Types.hh:83
long G4long
Definition: G4Types.hh:87
bool G4bool
Definition: G4Types.hh:86
int G4int
Definition: G4Types.hh:85
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout
#define G4UniformRand()
Definition: Randomize.hh:52
Hep3Vector unit() const
double mag2() const
double mag() const
HepLorentzVector & boost(double, double, double)
Hep3Vector vect() const
Hep3Vector findBoostToCM() const
void DumpInfo(G4int mode=0) const
G4ParticleDefinition * GetDefinition() const
G4LorentzVector Get4Momentum() const
G4double GetKineticEnergy() const
void Set4Momentum(const G4LorentzVector &momentum)
G4ReactionProductVector * BreakItUp(const G4Fragment &theInitialState)
G4double GetGroundStateMass() const
Definition: G4Fragment.hh:304
const G4LorentzVector & GetMomentum() const
Definition: G4Fragment.hh:323
void SetMomentum(const G4LorentzVector &value)
Definition: G4Fragment.hh:328
void SetStatusChange(G4HadFinalStateStatus aS)
void AddSecondary(G4DynamicParticle *aP, G4int mod=-1)
std::size_t GetNumberOfSecondaries() const
void SetEnergyChange(G4double anEnergy)
G4HadSecondary * GetSecondary(size_t i)
void SetMomentumChange(const G4ThreeVector &aV)
const G4ParticleDefinition * GetDefinition() const
G4double GetKineticEnergy() const
const G4LorentzVector & Get4Momentum() const
G4double GetTotalEnergy() const
G4DynamicParticle * GetParticle()
G4int GetA_asInt() const
Definition: G4Nucleus.hh:99
G4int GetZ_asInt() const
Definition: G4Nucleus.hh:105
G4double AtomicMass(const G4double A, const G4double Z, const G4int numberOfLambdas=0) const
Definition: G4Nucleus.cc:357
G4double GetEnergyDeposit()
Definition: G4Nucleus.hh:177
G4double GetPDGCharge() const
const G4String & GetParticleName() const
static G4Pow * GetInstance()
Definition: G4Pow.cc:41
G4double powA(G4double A, G4double y) const
Definition: G4Pow.hh:230
G4Fragment * GetAbradedNucleons(G4int, G4double, G4double, G4double)
G4double GetNucleonInducedExcitation(G4double, G4double, G4double)
G4double GetWilsonRadius(G4double A)
static const G4double AP[5]
Definition: paraMaker.cc:42
int elm_coupling
Definition: hepunit.py:285

References G4HadFinalState::AddSecondary(), anonymous_namespace{paraMaker.cc}::AP, G4Nucleus::AtomicMass(), B, anonymous_namespace{G4PionRadiativeDecayChannel.cc}::beta, CLHEP::HepLorentzVector::boost(), G4ExcitationHandler::BreakItUp(), G4HadFinalState::Clear(), conserveEnergy, conserveMomentum, G4DynamicParticle::DumpInfo(), source.hepunit::elm_coupling, eV, G4NuclearAbrasionGeometry::F(), fermi, CLHEP::HepLorentzVector::findBoostToCM(), fradius, G4cout, G4endl, G4Exp(), G4Poisson(), G4UniformRand, G4DynamicParticle::Get4Momentum(), G4HadProjectile::Get4Momentum(), G4Nucleus::GetA_asInt(), GetAbradedNucleons(), G4ParticleDefinition::GetBaryonNumber(), G4DynamicParticle::GetDefinition(), G4HadProjectile::GetDefinition(), G4Nucleus::GetEnergyDeposit(), G4NuclearAbrasionGeometry::GetExcitationEnergyOfProjectile(), G4NuclearAbrasionGeometry::GetExcitationEnergyOfTarget(), G4Fragment::GetGroundStateMass(), G4Pow::GetInstance(), G4DynamicParticle::GetKineticEnergy(), G4HadProjectile::GetKineticEnergy(), G4Fragment::GetMomentum(), GetNucleonInducedExcitation(), G4HadFinalState::GetNumberOfSecondaries(), G4HadSecondary::GetParticle(), G4ParticleDefinition::GetParticleName(), G4ParticleDefinition::GetPDGCharge(), G4HadFinalState::GetSecondary(), G4HadProjectile::GetTotalEnergy(), G4WilsonRadius::GetWilsonRadius(), G4Nucleus::GetZ_asInt(), isAlive, G4InuclParticleNames::lambda, CLHEP::HepLorentzVector::m(), CLHEP::Hep3Vector::mag(), CLHEP::Hep3Vector::mag2(), MeV, CLHEP::detail::n, G4Pow::powA(), secID, G4DynamicParticle::Set4Momentum(), CLHEP::HepLorentzVector::setE(), G4HadFinalState::SetEnergyChange(), G4Fragment::SetMomentum(), G4HadFinalState::SetMomentumChange(), G4HadFinalState::SetStatusChange(), stopAndKill, theExcitationHandler, G4HadronicInteraction::theParticleChange, CLHEP::Hep3Vector::unit(), CLHEP::HepLorentzVector::vect(), and G4HadronicInteraction::verboseLevel.

◆ Block()

void G4HadronicInteraction::Block ( )
inlineprotectedinherited

◆ BuildPhysicsTable()

void G4HadronicInteraction::BuildPhysicsTable ( const G4ParticleDefinition )
virtualinherited

◆ DeActivateFor() [1/2]

void G4HadronicInteraction::DeActivateFor ( const G4Element anElement)
inherited

Definition at line 186 of file G4HadronicInteraction.cc.

187{
188 Block();
189 theBlockedListElements.push_back(anElement);
190}
std::vector< const G4Element * > theBlockedListElements

References G4HadronicInteraction::Block(), and G4HadronicInteraction::theBlockedListElements.

◆ DeActivateFor() [2/2]

void G4HadronicInteraction::DeActivateFor ( const G4Material aMaterial)
inherited

Definition at line 180 of file G4HadronicInteraction.cc.

181{
182 Block();
183 theBlockedList.push_back(aMaterial);
184}
std::vector< const G4Material * > theBlockedList

References G4HadronicInteraction::Block(), and G4HadronicInteraction::theBlockedList.

Referenced by G4HadronHElasticPhysics::ConstructProcess().

◆ GetAbradedNucleons()

G4Fragment * G4WilsonAbrasionModel::GetAbradedNucleons ( G4int  Dabr,
G4double  A,
G4double  Z,
G4double  r 
)
private

Definition at line 691 of file G4WilsonAbrasionModel.cc.

693{
694//
695//
696// Initialise variables. tau is the Fermi radius of the nucleus. The variables
697// p..., C... and gamma are used to help sample the secondary nucleon
698// spectrum.
699//
700
701 G4double pK = hbarc * G4Pow::GetInstance()->A13(9.0 * pi / 4.0 * A) / (1.29 * r);
702 if (A <= 24.0) pK *= -0.229*G4Pow::GetInstance()->A13(A) + 1.62;
703 G4double pKsq = pK * pK;
704 G4double p1sq = 2.0/5.0 * pKsq;
705 G4double p2sq = 6.0/5.0 * pKsq;
706 G4double p3sq = 500.0 * 500.0;
707 G4double C1 = 1.0;
708 G4double C2 = 0.03;
709 G4double C3 = 0.0002;
710 G4double gamma = 90.0 * MeV;
711 G4double maxn = C1 + C2 + C3;
712//
713//
714// initialise the number of secondary nucleons abraded to zero, and initially set
715// the type of nucleon abraded to proton ... just for now.
716//
717 G4double Aabr = 0.0;
718 G4double Zabr = 0.0;
720 G4DynamicParticle *dynamicNucleon = nullptr;
721 G4ParticleMomentum pabr(0.0, 0.0, 0.0);
722//
723//
724// Now go through each abraded nucleon and sample type, spectrum and angle.
725//
726 G4bool isForLoopExitAnticipated = false;
727 for (G4int i=0; i<Dabr; ++i)
728 {
729//
730//
731// Sample the nucleon momentum distribution by simple rejection techniques. We
732// reject values of p == 0.0 since this causes bad behaviour in the sinh term.
733//
734 G4double p = 0.0;
735 G4bool found = false;
736 const G4int maxNumberOfLoops = 100000;
737 G4int loopCounter = -1;
738 while (!found && ++loopCounter < maxNumberOfLoops) /* Loop checking, 07.08.2015, A.Ribon */
739 {
740 while (p <= 0.0) p = npK * pK * G4UniformRand(); /* Loop checking, 07.08.2015, A.Ribon */
741 G4double psq = p * p;
742 found = maxn * G4UniformRand() < C1*G4Exp(-psq/p1sq/2.0) +
743 C2*G4Exp(-psq/p2sq/2.0) + C3*G4Exp(-psq/p3sq/2.0) + p/gamma/(0.5*(G4Exp(p/gamma)-G4Exp(-p/gamma)));
744 }
745 if ( loopCounter >= maxNumberOfLoops )
746 {
747 isForLoopExitAnticipated = true;
748 break;
749 }
750//
751//
752// Determine the type of particle abraded. Can only be proton or neutron,
753// and the probability is determine to be proportional to the ratio as found
754// in the nucleus at each stage.
755//
756 G4double prob = (Z-Zabr)/(A-Aabr);
757 if (G4UniformRand()<prob)
758 {
759 Zabr++;
760 typeNucleon = G4Proton::ProtonDefinition();
761 }
762 else
763 typeNucleon = G4Neutron::NeutronDefinition();
764 Aabr++;
765//
766//
767// The angular distribution of the secondary nucleons is approximated to an
768// isotropic distribution in the rest frame of the nucleus (this will be Lorentz
769// boosted later.
770//
771 G4double costheta = 2.*G4UniformRand()-1.0;
772 G4double sintheta = std::sqrt((1.0 - costheta)*(1.0 + costheta));
773 G4double phi = 2.0*pi*G4UniformRand()*rad;
774 G4ThreeVector direction(sintheta*std::cos(phi),sintheta*std::sin(phi),costheta);
775 G4double nucleonMass = typeNucleon->GetPDGMass();
776 G4double E = std::sqrt(p*p + nucleonMass*nucleonMass)-nucleonMass;
777 dynamicNucleon = new G4DynamicParticle(typeNucleon,direction,E);
778 theParticleChange.AddSecondary (dynamicNucleon, secID);
779 pabr += p*direction;
780 }
781//
782//
783// Next determine the details of the nuclear prefragment .. that is if there
784// is one or more protons in the residue. (Note that the 1 eV in the total
785// energy is a safety factor to avoid any possibility of negative rest mass
786// energy.)
787//
788 G4Fragment *fragment = nullptr;
789 if ( ! isForLoopExitAnticipated && Z-Zabr>=1.0 )
790 {
792 GetIonMass(G4lrint(Z-Zabr),G4lrint(A-Aabr));
793 G4double E = std::sqrt(pabr.mag2() + ionMass*ionMass);
794 G4LorentzVector lorentzVector = G4LorentzVector(-pabr, E + 1.0*eV);
795 fragment =
796 new G4Fragment((G4int) (A-Aabr), (G4int) (Z-Zabr), lorentzVector);
797 }
798
799 return fragment;
800}
static constexpr double rad
Definition: G4SIunits.hh:129
static constexpr double pi
Definition: G4SIunits.hh:55
const G4int Z[17]
const G4double A[17]
const double C2
const double C1
#define C3
static G4Neutron * NeutronDefinition()
Definition: G4Neutron.cc:98
G4IonTable * GetIonTable() const
static G4ParticleTable * GetParticleTable()
G4double A13(G4double A) const
Definition: G4Pow.cc:120
static G4Proton * ProtonDefinition()
Definition: G4Proton.cc:87
float hbarc
Definition: hepunit.py:264
int G4lrint(double ad)
Definition: templates.hh:134

References A, G4Pow::A13(), G4HadFinalState::AddSecondary(), C1, C2, C3, eV, G4Exp(), G4lrint(), G4UniformRand, G4Pow::GetInstance(), G4ParticleTable::GetIonTable(), G4ParticleTable::GetParticleTable(), G4ParticleDefinition::GetPDGMass(), source.hepunit::hbarc, CLHEP::Hep3Vector::mag2(), MeV, G4Neutron::NeutronDefinition(), npK, pi, G4Proton::ProtonDefinition(), rad, secID, G4HadronicInteraction::theParticleChange, and Z.

Referenced by ApplyYourself().

◆ GetConserveEnergy()

G4bool G4WilsonAbrasionModel::GetConserveEnergy ( )
inlineprivate

Definition at line 132 of file G4WilsonAbrasionModel.hh.

133 {return conserveEnergy;}

References conserveEnergy.

◆ GetConserveMomentum()

G4bool G4WilsonAbrasionModel::GetConserveMomentum ( )
inline

Definition at line 138 of file G4WilsonAbrasionModel.hh.

139 {return conserveMomentum;}

References conserveMomentum.

◆ GetEnergyMomentumCheckLevels()

std::pair< G4double, G4double > G4HadronicInteraction::GetEnergyMomentumCheckLevels ( ) const
virtualinherited

◆ GetExcitationHandler()

G4ExcitationHandler * G4WilsonAbrasionModel::GetExcitationHandler ( )
inline

Definition at line 123 of file G4WilsonAbrasionModel.hh.

124 {return theExcitationHandler;}

References theExcitationHandler.

◆ GetFatalEnergyCheckLevels()

const std::pair< G4double, G4double > G4HadronicInteraction::GetFatalEnergyCheckLevels ( ) const
virtualinherited

Reimplemented in G4FissLib, G4LFission, G4LENDFission, G4ParticleHPCapture, G4ParticleHPElastic, G4ParticleHPFission, G4ParticleHPInelastic, and G4ParticleHPThermalScattering.

Definition at line 210 of file G4HadronicInteraction.cc.

211{
212 // default level of Check
213 return std::pair<G4double, G4double>(2.*perCent, 1. * GeV);
214}
static constexpr double perCent
Definition: G4SIunits.hh:325

References GeV, and perCent.

Referenced by G4HadronicProcess::CheckResult().

◆ GetMaxEnergy() [1/2]

G4double G4HadronicInteraction::GetMaxEnergy ( ) const
inlineinherited

◆ GetMaxEnergy() [2/2]

G4double G4HadronicInteraction::GetMaxEnergy ( const G4Material aMaterial,
const G4Element anElement 
) const
inherited

Definition at line 131 of file G4HadronicInteraction.cc.

133{
134 if(!IsBlocked()) { return theMaxEnergy; }
135 if( IsBlocked(aMaterial) || IsBlocked(anElement) ) { return 0.0; }
136 if(!theMaxEnergyListElements.empty()) {
137 for(auto const& elmlist : theMaxEnergyListElements) {
138 if( anElement == elmlist.second )
139 { return elmlist.first; }
140 }
141 }
142 if(!theMaxEnergyList.empty()) {
143 for(auto const& matlist : theMaxEnergyList) {
144 if( aMaterial == matlist.second )
145 { return matlist.first; }
146 }
147 }
148 return theMaxEnergy;
149}
std::vector< std::pair< G4double, const G4Material * > > theMaxEnergyList
std::vector< std::pair< G4double, const G4Element * > > theMaxEnergyListElements

References G4HadronicInteraction::IsBlocked(), G4HadronicInteraction::theMaxEnergy, G4HadronicInteraction::theMaxEnergyList, and G4HadronicInteraction::theMaxEnergyListElements.

◆ GetMinEnergy() [1/2]

G4double G4HadronicInteraction::GetMinEnergy ( ) const
inlineinherited

◆ GetMinEnergy() [2/2]

G4double G4HadronicInteraction::GetMinEnergy ( const G4Material aMaterial,
const G4Element anElement 
) const
inherited

Definition at line 81 of file G4HadronicInteraction.cc.

83{
84 if(!IsBlocked()) { return theMinEnergy; }
85 if( IsBlocked(aMaterial) || IsBlocked(anElement) ) { return DBL_MAX; }
86 if(!theMinEnergyListElements.empty()) {
87 for(auto const& elmlist : theMinEnergyListElements) {
88 if( anElement == elmlist.second )
89 { return elmlist.first; }
90 }
91 }
92 if(!theMinEnergyList.empty()) {
93 for(auto const & matlist : theMinEnergyList) {
94 if( aMaterial == matlist.second )
95 { return matlist.first; }
96 }
97 }
98 return theMinEnergy;
99}
std::vector< std::pair< G4double, const G4Element * > > theMinEnergyListElements
std::vector< std::pair< G4double, const G4Material * > > theMinEnergyList
#define DBL_MAX
Definition: templates.hh:62

References DBL_MAX, G4HadronicInteraction::IsBlocked(), G4HadronicInteraction::theMinEnergy, G4HadronicInteraction::theMinEnergyList, and G4HadronicInteraction::theMinEnergyListElements.

◆ GetModelName()

const G4String & G4HadronicInteraction::GetModelName ( ) const
inlineinherited

Definition at line 115 of file G4HadronicInteraction.hh.

116 { return theModelName; }

References G4HadronicInteraction::theModelName.

Referenced by G4MuMinusCapturePrecompound::ApplyYourself(), G4HadronElastic::ApplyYourself(), G4INCLXXInterface::ApplyYourself(), G4TheoFSGenerator::ApplyYourself(), G4HadronStoppingProcess::AtRestDoIt(), G4VHadronPhysics::BuildModel(), G4HadronicProcess::CheckEnergyMomentumConservation(), G4HadronicProcess::CheckResult(), G4ChargeExchangePhysics::ConstructProcess(), G4MuonicAtomDecay::DecayIt(), G4LENDModel::DumpLENDTargetInfo(), G4AblaInterface::G4AblaInterface(), G4ElectroVDNuclearModel::G4ElectroVDNuclearModel(), G4EMDissociation::G4EMDissociation(), G4ExcitedStringDecay::G4ExcitedStringDecay(), G4LEHadronProtonElastic::G4LEHadronProtonElastic(), G4LENDModel::G4LENDModel(), G4LENDorBERTModel::G4LENDorBERTModel(), G4LEnp::G4LEnp(), G4LEpp::G4LEpp(), G4LFission::G4LFission(), G4LowEGammaNuclearModel::G4LowEGammaNuclearModel(), G4LowEIonFragmentation::G4LowEIonFragmentation(), G4MuonVDNuclearModel::G4MuonVDNuclearModel(), G4NeutrinoElectronCcModel::G4NeutrinoElectronCcModel(), G4NeutrinoNucleusModel::G4NeutrinoNucleusModel(), G4WilsonAbrasionModel(), G4INCLXXInterface::GetDeExcitationModelName(), G4EnergyRangeManager::GetHadronicInteraction(), G4VHighEnergyGenerator::GetProjectileNucleus(), G4NeutronRadCapture::InitialiseModel(), G4BinaryCascade::ModelDescription(), G4LMsdGenerator::ModelDescription(), G4VPartonStringModel::ModelDescription(), G4TheoFSGenerator::ModelDescription(), G4VHadronPhysics::NewModel(), G4NeutrinoElectronProcess::PostStepDoIt(), G4HadronicProcess::PostStepDoIt(), G4ElNeutrinoNucleusProcess::PostStepDoIt(), G4HadronElasticProcess::PostStepDoIt(), G4MuNeutrinoNucleusProcess::PostStepDoIt(), G4HadronicProcessStore::PrintModelHtml(), G4BinaryCascade::PropagateModelDescription(), G4HadronicProcessStore::RegisterInteraction(), and G4LENDModel::returnUnchanged().

◆ GetNucleonInducedExcitation()

G4double G4WilsonAbrasionModel::GetNucleonInducedExcitation ( G4double  rP,
G4double  rT,
G4double  r 
)
private

Definition at line 803 of file G4WilsonAbrasionModel.cc.

805{
806//
807//
808// Initialise variables.
809//
810 G4double Cl = 0.0;
811 G4double rPsq = rP * rP;
812 G4double rTsq = rT * rT;
813 G4double rsq = r * r;
814//
815//
816// Depending upon the impact parameter, a different form of the chord length is
817// is used.
818//
819 if (r > rT) Cl = 2.0*std::sqrt(rPsq + 2.0*r*rT - rsq - rTsq);
820 else Cl = 2.0*rP;
821//
822//
823// The next lines have been changed to include a "catch" to make sure if the
824// projectile and target are too close, Ct is set to twice rP or twice rT.
825// Otherwise the standard Wilson algorithm should work fine.
826// PRT 20091023.
827//
828 G4double Ct = 0.0;
829 if (rT > rP && rsq < rTsq - rPsq) Ct = 2.0 * rP;
830 else if (rP > rT && rsq < rPsq - rTsq) Ct = 2.0 * rT;
831 else {
832 G4double bP = (rPsq+rsq-rTsq)/2.0/r;
833 G4double x = rPsq - bP*bP;
834 if (x < 0.0) {
835 G4cerr <<"########################################"
836 <<"########################################"
837 <<G4endl;
838 G4cerr <<"ERROR IN G4WilsonAbrasionModel::GetNucleonInducedExcitation"
839 <<G4endl;
840 G4cerr <<"rPsq - bP*bP < 0.0 and cannot be square-rooted" <<G4endl;
841 G4cerr <<"Set to zero instead" <<G4endl;
842 G4cerr <<"########################################"
843 <<"########################################"
844 <<G4endl;
845 }
846 Ct = 2.0*std::sqrt(x);
847 }
848
849 G4double Ex = 13.0 * Cl / fermi;
850 if (Ct > 1.5*fermi)
851 Ex += 13.0 * Cl / fermi /3.0 * (Ct/fermi - 1.5);
852
853 return Ex;
854}
G4GLOB_DLL std::ostream G4cerr

References fermi, G4cerr, and G4endl.

Referenced by ApplyYourself().

◆ GetRecoilEnergyThreshold()

G4double G4HadronicInteraction::GetRecoilEnergyThreshold ( ) const
inlineinherited

◆ GetUseAblation()

G4bool G4WilsonAbrasionModel::GetUseAblation ( )
inline

Definition at line 126 of file G4WilsonAbrasionModel.hh.

127 {return useAblation;}

References useAblation.

◆ GetVerboseLevel()

G4int G4HadronicInteraction::GetVerboseLevel ( ) const
inlineinherited

Definition at line 109 of file G4HadronicInteraction.hh.

110 { return verboseLevel; }

References G4HadronicInteraction::verboseLevel.

◆ InitialiseModel()

void G4HadronicInteraction::InitialiseModel ( )
virtualinherited

◆ IsApplicable()

G4bool G4HadronicInteraction::IsApplicable ( const G4HadProjectile aTrack,
G4Nucleus targetNucleus 
)
virtualinherited

◆ IsBlocked() [1/3]

G4bool G4HadronicInteraction::IsBlocked ( ) const
inlineprotectedinherited

◆ IsBlocked() [2/3]

G4bool G4HadronicInteraction::IsBlocked ( const G4Element anElement) const
inherited

Definition at line 202 of file G4HadronicInteraction.cc.

203{
204 for (auto const& elm : theBlockedListElements) {
205 if (anElement == elm) return true;
206 }
207 return false;
208}

References G4HadronicInteraction::theBlockedListElements.

◆ IsBlocked() [3/3]

G4bool G4HadronicInteraction::IsBlocked ( const G4Material aMaterial) const
inherited

Definition at line 193 of file G4HadronicInteraction.cc.

194{
195 for (auto const& mat : theBlockedList) {
196 if (aMaterial == mat) return true;
197 }
198 return false;
199}

References G4HadronicInteraction::theBlockedList.

◆ ModelDescription()

void G4WilsonAbrasionModel::ModelDescription ( std::ostream &  outFile) const
virtual

Reimplemented from G4HadronicInteraction.

Definition at line 160 of file G4WilsonAbrasionModel.cc.

161{
162 outFile << "G4WilsonAbrasionModel is a macroscopic treatment of\n"
163 << "nucleus-nucleus collisions using simple geometric arguments.\n"
164 << "The smaller projectile nucleus gouges out a part of the larger\n"
165 << "target nucleus, leaving a residual nucleus and a fireball\n"
166 << "region where the projectile and target intersect. The fireball"
167 << "is then treated as a highly excited nuclear fragment. This\n"
168 << "model is based on the NUCFRG2 model and is valid for all\n"
169 << "projectile energies between 70 MeV/n and 10.1 GeV/n. \n";
170}

◆ operator!=()

G4bool G4HadronicInteraction::operator!= ( const G4HadronicInteraction right) const
deleteinherited

◆ operator=()

const G4WilsonAbrasionModel & G4WilsonAbrasionModel::operator= ( G4WilsonAbrasionModel right)
delete

◆ operator==()

G4bool G4HadronicInteraction::operator== ( const G4HadronicInteraction right) const
deleteinherited

◆ PrintWelcomeMessage()

void G4WilsonAbrasionModel::PrintWelcomeMessage ( )
private

Definition at line 879 of file G4WilsonAbrasionModel.cc.

880{
881 G4cout <<G4endl;
882 G4cout <<" *****************************************************************"
883 <<G4endl;
884 G4cout <<" Nuclear abrasion model for nuclear-nuclear interactions activated"
885 <<G4endl;
886 G4cout <<" (Written by QinetiQ Ltd for the European Space Agency)"
887 <<G4endl;
888 G4cout <<" *****************************************************************"
889 <<G4endl;
890 G4cout << G4endl;
891
892 return;
893}

References G4cout, and G4endl.

Referenced by G4WilsonAbrasionModel().

◆ SampleInvariantT()

G4double G4HadronicInteraction::SampleInvariantT ( const G4ParticleDefinition p,
G4double  plab,
G4int  Z,
G4int  A 
)
virtualinherited

◆ SetConserveEnergy()

void G4WilsonAbrasionModel::SetConserveEnergy ( G4bool  conserveEnergy1)
inlineprivate

Definition at line 129 of file G4WilsonAbrasionModel.hh.

130 {conserveEnergy = conserveEnergy1;}

References conserveEnergy.

◆ SetConserveMomentum()

void G4WilsonAbrasionModel::SetConserveMomentum ( G4bool  conserveMomentum1)
inline

Definition at line 135 of file G4WilsonAbrasionModel.hh.

136 {conserveMomentum = conserveMomentum1;}

References conserveMomentum.

◆ SetEnergyMomentumCheckLevels()

void G4HadronicInteraction::SetEnergyMomentumCheckLevels ( G4double  relativeLevel,
G4double  absoluteLevel 
)
inlineinherited

Definition at line 149 of file G4HadronicInteraction.hh.

150 { epCheckLevels.first = relativeLevel;
151 epCheckLevels.second = absoluteLevel; }

References G4HadronicInteraction::epCheckLevels.

Referenced by G4BinaryCascade::G4BinaryCascade(), G4CascadeInterface::G4CascadeInterface(), and G4FTFModel::G4FTFModel().

◆ SetExcitationHandler()

void G4WilsonAbrasionModel::SetExcitationHandler ( G4ExcitationHandler aExcitationHandler)
inline

Definition at line 120 of file G4WilsonAbrasionModel.hh.

121 {theExcitationHandler = aExcitationHandler;}

References theExcitationHandler.

◆ SetMaxEnergy() [1/3]

void G4HadronicInteraction::SetMaxEnergy ( const G4double  anEnergy)
inlineinherited

Definition at line 102 of file G4HadronicInteraction.hh.

103 { theMaxEnergy = anEnergy; }

References G4HadronicInteraction::theMaxEnergy.

Referenced by G4HadronicInteraction::ActivateFor(), G4IonINCLXXPhysics::AddProcess(), G4BertiniElectroNuclearBuilder::Build(), G4LENDBertiniGammaElectroNuclearBuilder::Build(), G4NeutronLENDBuilder::Build(), G4NeutronPHPBuilder::Build(), G4AlphaPHPBuilder::Build(), G4BertiniKaonBuilder::Build(), G4BertiniNeutronBuilder::Build(), G4BertiniPiKBuilder::Build(), G4BertiniPionBuilder::Build(), G4BertiniProtonBuilder::Build(), G4BinaryAlphaBuilder::Build(), G4BinaryDeuteronBuilder::Build(), G4BinaryHe3Builder::Build(), G4BinaryNeutronBuilder::Build(), G4BinaryPiKBuilder::Build(), G4BinaryPionBuilder::Build(), G4BinaryProtonBuilder::Build(), G4BinaryTritonBuilder::Build(), G4DeuteronPHPBuilder::Build(), G4FTFBinaryKaonBuilder::Build(), G4FTFBinaryNeutronBuilder::Build(), G4FTFBinaryPionBuilder::Build(), G4FTFBinaryProtonBuilder::Build(), G4FTFPAntiBarionBuilder::Build(), G4FTFPKaonBuilder::Build(), G4FTFPNeutronBuilder::Build(), G4FTFPPiKBuilder::Build(), G4FTFPPionBuilder::Build(), G4FTFPProtonBuilder::Build(), G4He3PHPBuilder::Build(), G4HyperonFTFPBuilder::Build(), G4HyperonQGSPBuilder::Build(), G4INCLXXNeutronBuilder::Build(), G4INCLXXPionBuilder::Build(), G4INCLXXProtonBuilder::Build(), G4PrecoNeutronBuilder::Build(), G4PrecoProtonBuilder::Build(), G4ProtonPHPBuilder::Build(), G4QGSBinaryKaonBuilder::Build(), G4QGSBinaryNeutronBuilder::Build(), G4QGSBinaryPiKBuilder::Build(), G4QGSBinaryPionBuilder::Build(), G4QGSBinaryProtonBuilder::Build(), G4QGSPAntiBarionBuilder::Build(), G4QGSPKaonBuilder::Build(), G4QGSPLundStrFragmProtonBuilder::Build(), G4QGSPNeutronBuilder::Build(), G4QGSPPiKBuilder::Build(), G4QGSPPionBuilder::Build(), G4TritonPHPBuilder::Build(), G4QGSPProtonBuilder::Build(), G4HadronicBuilder::BuildFTFP_BERT(), G4HadronicBuilder::BuildFTFQGSP_BERT(), G4QGSBuilder::BuildModel(), G4VHadronPhysics::BuildModel(), G4HadronicBuilder::BuildQGSP_FTFP_BERT(), G4EmExtraPhysics::ConstructGammaElectroNuclear(), LBE::ConstructHad(), G4EmExtraPhysics::ConstructLENDGammaNuclear(), G4HadronDElasticPhysics::ConstructProcess(), G4HadronElasticPhysics::ConstructProcess(), G4HadronHElasticPhysics::ConstructProcess(), G4IonINCLXXPhysics::ConstructProcess(), G4IonPhysics::ConstructProcess(), G4IonPhysicsPHP::ConstructProcess(), G4IonQMDPhysics::ConstructProcess(), G4ANuElNucleusNcModel::G4ANuElNucleusNcModel(), G4ANuMuNucleusNcModel::G4ANuMuNucleusNcModel(), G4BertiniKaonBuilder::G4BertiniKaonBuilder(), G4BertiniPiKBuilder::G4BertiniPiKBuilder(), G4BertiniPionBuilder::G4BertiniPionBuilder(), G4BinaryCascade::G4BinaryCascade(), G4BinaryPiKBuilder::G4BinaryPiKBuilder(), G4BinaryPionBuilder::G4BinaryPionBuilder(), G4ChargeExchange::G4ChargeExchange(), G4DiffuseElastic::G4DiffuseElastic(), G4DiffuseElasticV2::G4DiffuseElasticV2(), G4ElectroVDNuclearModel::G4ElectroVDNuclearModel(), G4EMDissociation::G4EMDissociation(), G4FissLib::G4FissLib(), G4FTFBinaryKaonBuilder::G4FTFBinaryKaonBuilder(), G4FTFBinaryNeutronBuilder::G4FTFBinaryNeutronBuilder(), G4FTFBinaryPiKBuilder::G4FTFBinaryPiKBuilder(), G4FTFBinaryPionBuilder::G4FTFBinaryPionBuilder(), G4FTFBinaryProtonBuilder::G4FTFBinaryProtonBuilder(), G4FTFPAntiBarionBuilder::G4FTFPAntiBarionBuilder(), G4FTFPKaonBuilder::G4FTFPKaonBuilder(), G4FTFPNeutronBuilder::G4FTFPNeutronBuilder(), G4FTFPPiKBuilder::G4FTFPPiKBuilder(), G4FTFPPionBuilder::G4FTFPPionBuilder(), G4FTFPProtonBuilder::G4FTFPProtonBuilder(), G4HadronElastic::G4HadronElastic(), G4HadronicAbsorptionFritiof::G4HadronicAbsorptionFritiof(), G4HadronicAbsorptionFritiofWithBinaryCascade::G4HadronicAbsorptionFritiofWithBinaryCascade(), G4hhElastic::G4hhElastic(), G4HyperonFTFPBuilder::G4HyperonFTFPBuilder(), G4HyperonQGSPBuilder::G4HyperonQGSPBuilder(), G4INCLXXPionBuilder::G4INCLXXPionBuilder(), G4LEHadronProtonElastic::G4LEHadronProtonElastic(), G4LENDModel::G4LENDModel(), G4LEnp::G4LEnp(), G4LEpp::G4LEpp(), G4LFission::G4LFission(), G4LowEGammaNuclearModel::G4LowEGammaNuclearModel(), G4MuonVDNuclearModel::G4MuonVDNuclearModel(), G4NeutrinoElectronCcModel::G4NeutrinoElectronCcModel(), G4NeutrinoElectronNcModel::G4NeutrinoElectronNcModel(), G4NeutrinoNucleusModel::G4NeutrinoNucleusModel(), G4NeutronElectronElModel::G4NeutronElectronElModel(), G4NeutronRadCapture::G4NeutronRadCapture(), G4NuclNuclDiffuseElastic::G4NuclNuclDiffuseElastic(), G4NuElNucleusNcModel::G4NuElNucleusNcModel(), G4NuMuNucleusNcModel::G4NuMuNucleusNcModel(), G4ParticleHPCapture::G4ParticleHPCapture(), G4ParticleHPElastic::G4ParticleHPElastic(), G4ParticleHPFission::G4ParticleHPFission(), G4ParticleHPInelastic::G4ParticleHPInelastic(), G4ParticleHPThermalScattering::G4ParticleHPThermalScattering(), G4QGSPAntiBarionBuilder::G4QGSPAntiBarionBuilder(), G4WilsonAbrasionModel(), G4HadronPhysicsFTFP_BERT_HP::Neutron(), G4HadronPhysicsINCLXX::Neutron(), G4HadronPhysicsQGSP_BERT_HP::Neutron(), G4HadronPhysicsQGSP_BIC_HP::Neutron(), G4HadronPhysicsShielding::Neutron(), and G4VHadronPhysics::NewModel().

◆ SetMaxEnergy() [2/3]

void G4HadronicInteraction::SetMaxEnergy ( G4double  anEnergy,
const G4Element anElement 
)
inherited

Definition at line 151 of file G4HadronicInteraction.cc.

153{
154 Block();
155 if(!theMaxEnergyListElements.empty()) {
156 for(auto & elmlist : theMaxEnergyListElements) {
157 if( anElement == elmlist.second ) {
158 elmlist.first = anEnergy;
159 return;
160 }
161 }
162 }
163 theMaxEnergyListElements.push_back(std::pair<G4double, const G4Element *>(anEnergy, anElement));
164}

References G4HadronicInteraction::Block(), and G4HadronicInteraction::theMaxEnergyListElements.

◆ SetMaxEnergy() [3/3]

void G4HadronicInteraction::SetMaxEnergy ( G4double  anEnergy,
const G4Material aMaterial 
)
inherited

Definition at line 166 of file G4HadronicInteraction.cc.

167{
168 Block();
169 if(!theMaxEnergyList.empty()) {
170 for(auto & matlist: theMaxEnergyList) {
171 if( aMaterial == matlist.second ) {
172 matlist.first = anEnergy;
173 return;
174 }
175 }
176 }
177 theMaxEnergyList.push_back(std::pair<G4double, const G4Material *>(anEnergy, aMaterial));
178}

References G4HadronicInteraction::Block(), and G4HadronicInteraction::theMaxEnergyList.

◆ SetMinEnergy() [1/3]

void G4HadronicInteraction::SetMinEnergy ( G4double  anEnergy)
inlineinherited

Definition at line 89 of file G4HadronicInteraction.hh.

90 { theMinEnergy = anEnergy; }

References G4HadronicInteraction::theMinEnergy.

Referenced by G4HadronicInteraction::ActivateFor(), G4BertiniElectroNuclearBuilder::Build(), G4LENDBertiniGammaElectroNuclearBuilder::Build(), G4NeutronLENDBuilder::Build(), G4NeutronPHPBuilder::Build(), G4AlphaPHPBuilder::Build(), G4BertiniKaonBuilder::Build(), G4BertiniNeutronBuilder::Build(), G4BertiniPiKBuilder::Build(), G4BertiniPionBuilder::Build(), G4BertiniProtonBuilder::Build(), G4BinaryAlphaBuilder::Build(), G4BinaryDeuteronBuilder::Build(), G4BinaryHe3Builder::Build(), G4BinaryNeutronBuilder::Build(), G4BinaryPiKBuilder::Build(), G4BinaryPionBuilder::Build(), G4BinaryProtonBuilder::Build(), G4BinaryTritonBuilder::Build(), G4DeuteronPHPBuilder::Build(), G4FTFBinaryKaonBuilder::Build(), G4FTFBinaryNeutronBuilder::Build(), G4FTFBinaryPiKBuilder::Build(), G4FTFBinaryPionBuilder::Build(), G4FTFBinaryProtonBuilder::Build(), G4FTFPAntiBarionBuilder::Build(), G4FTFPKaonBuilder::Build(), G4FTFPNeutronBuilder::Build(), G4FTFPPiKBuilder::Build(), G4FTFPPionBuilder::Build(), G4FTFPProtonBuilder::Build(), G4He3PHPBuilder::Build(), G4HyperonFTFPBuilder::Build(), G4HyperonQGSPBuilder::Build(), G4INCLXXNeutronBuilder::Build(), G4INCLXXPionBuilder::Build(), G4INCLXXProtonBuilder::Build(), G4PrecoNeutronBuilder::Build(), G4PrecoProtonBuilder::Build(), G4ProtonPHPBuilder::Build(), G4QGSBinaryKaonBuilder::Build(), G4QGSBinaryNeutronBuilder::Build(), G4QGSBinaryPiKBuilder::Build(), G4QGSBinaryPionBuilder::Build(), G4QGSBinaryProtonBuilder::Build(), G4QGSPAntiBarionBuilder::Build(), G4QGSPKaonBuilder::Build(), G4QGSPLundStrFragmProtonBuilder::Build(), G4QGSPNeutronBuilder::Build(), G4QGSPPiKBuilder::Build(), G4QGSPPionBuilder::Build(), G4TritonPHPBuilder::Build(), G4QGSPProtonBuilder::Build(), G4QGSBuilder::BuildModel(), G4VHadronPhysics::BuildModel(), G4EmExtraPhysics::ConstructGammaElectroNuclear(), LBE::ConstructHad(), G4EmExtraPhysics::ConstructLENDGammaNuclear(), G4HadronElasticPhysicsHP::ConstructProcess(), G4HadronElasticPhysicsLEND::ConstructProcess(), G4HadronElasticPhysicsPHP::ConstructProcess(), G4HadronDElasticPhysics::ConstructProcess(), G4HadronElasticPhysics::ConstructProcess(), G4HadronHElasticPhysics::ConstructProcess(), G4IonElasticPhysics::ConstructProcess(), G4IonINCLXXPhysics::ConstructProcess(), G4IonPhysics::ConstructProcess(), G4IonPhysicsPHP::ConstructProcess(), G4IonQMDPhysics::ConstructProcess(), G4ANuElNucleusNcModel::G4ANuElNucleusNcModel(), G4ANuMuNucleusNcModel::G4ANuMuNucleusNcModel(), G4BertiniKaonBuilder::G4BertiniKaonBuilder(), G4BertiniPiKBuilder::G4BertiniPiKBuilder(), G4BertiniPionBuilder::G4BertiniPionBuilder(), G4BinaryCascade::G4BinaryCascade(), G4BinaryPiKBuilder::G4BinaryPiKBuilder(), G4BinaryPionBuilder::G4BinaryPionBuilder(), G4ChargeExchange::G4ChargeExchange(), G4DiffuseElastic::G4DiffuseElastic(), G4DiffuseElasticV2::G4DiffuseElasticV2(), G4ElectroVDNuclearModel::G4ElectroVDNuclearModel(), G4EMDissociation::G4EMDissociation(), G4FissLib::G4FissLib(), G4FTFBinaryKaonBuilder::G4FTFBinaryKaonBuilder(), G4FTFBinaryNeutronBuilder::G4FTFBinaryNeutronBuilder(), G4FTFBinaryPiKBuilder::G4FTFBinaryPiKBuilder(), G4FTFBinaryPionBuilder::G4FTFBinaryPionBuilder(), G4FTFBinaryProtonBuilder::G4FTFBinaryProtonBuilder(), G4FTFPAntiBarionBuilder::G4FTFPAntiBarionBuilder(), G4FTFPKaonBuilder::G4FTFPKaonBuilder(), G4FTFPNeutronBuilder::G4FTFPNeutronBuilder(), G4FTFPPiKBuilder::G4FTFPPiKBuilder(), G4FTFPPionBuilder::G4FTFPPionBuilder(), G4FTFPProtonBuilder::G4FTFPProtonBuilder(), G4HadronElastic::G4HadronElastic(), G4HadronicAbsorptionBertini::G4HadronicAbsorptionBertini(), G4HadronicAbsorptionFritiof::G4HadronicAbsorptionFritiof(), G4HadronicAbsorptionFritiofWithBinaryCascade::G4HadronicAbsorptionFritiofWithBinaryCascade(), G4hhElastic::G4hhElastic(), G4HyperonFTFPBuilder::G4HyperonFTFPBuilder(), G4HyperonQGSPBuilder::G4HyperonQGSPBuilder(), G4INCLXXPionBuilder::G4INCLXXPionBuilder(), G4LEHadronProtonElastic::G4LEHadronProtonElastic(), G4LENDModel::G4LENDModel(), G4LEnp::G4LEnp(), G4LEpp::G4LEpp(), G4LFission::G4LFission(), G4LowEGammaNuclearModel::G4LowEGammaNuclearModel(), G4MuonVDNuclearModel::G4MuonVDNuclearModel(), G4NeutrinoElectronCcModel::G4NeutrinoElectronCcModel(), G4NeutrinoElectronNcModel::G4NeutrinoElectronNcModel(), G4NeutrinoNucleusModel::G4NeutrinoNucleusModel(), G4NeutronElectronElModel::G4NeutronElectronElModel(), G4NeutronRadCapture::G4NeutronRadCapture(), G4NuclNuclDiffuseElastic::G4NuclNuclDiffuseElastic(), G4NuElNucleusNcModel::G4NuElNucleusNcModel(), G4NuMuNucleusNcModel::G4NuMuNucleusNcModel(), G4ParticleHPCapture::G4ParticleHPCapture(), G4ParticleHPElastic::G4ParticleHPElastic(), G4ParticleHPFission::G4ParticleHPFission(), G4ParticleHPInelastic::G4ParticleHPInelastic(), G4ParticleHPThermalScattering::G4ParticleHPThermalScattering(), G4QGSPAntiBarionBuilder::G4QGSPAntiBarionBuilder(), G4WilsonAbrasionModel(), G4NeutrinoElectronCcModel::IsApplicable(), G4HadronPhysicsFTFP_BERT_HP::Neutron(), G4HadronPhysicsINCLXX::Neutron(), G4HadronPhysicsQGSP_BERT_HP::Neutron(), G4HadronPhysicsQGSP_BIC_HP::Neutron(), G4HadronPhysicsShielding::Neutron(), and G4VHadronPhysics::NewModel().

◆ SetMinEnergy() [2/3]

void G4HadronicInteraction::SetMinEnergy ( G4double  anEnergy,
const G4Element anElement 
)
inherited

Definition at line 101 of file G4HadronicInteraction.cc.

103{
104 Block();
105 if(!theMinEnergyListElements.empty()) {
106 for(auto & elmlist : theMinEnergyListElements) {
107 if( anElement == elmlist.second ) {
108 elmlist.first = anEnergy;
109 return;
110 }
111 }
112 }
113 theMinEnergyListElements.push_back(std::pair<G4double, const G4Element *>(anEnergy, anElement));
114}

References G4HadronicInteraction::Block(), and G4HadronicInteraction::theMinEnergyListElements.

◆ SetMinEnergy() [3/3]

void G4HadronicInteraction::SetMinEnergy ( G4double  anEnergy,
const G4Material aMaterial 
)
inherited

Definition at line 116 of file G4HadronicInteraction.cc.

118{
119 Block();
120 if(!theMinEnergyList.empty()) {
121 for(auto & matlist : theMinEnergyList) {
122 if( aMaterial == matlist.second ) {
123 matlist.first = anEnergy;
124 return;
125 }
126 }
127 }
128 theMinEnergyList.push_back(std::pair<G4double, const G4Material *>(anEnergy, aMaterial));
129}

References G4HadronicInteraction::Block(), and G4HadronicInteraction::theMinEnergyList.

◆ SetModelName()

void G4HadronicInteraction::SetModelName ( const G4String nam)
inlineprotectedinherited

◆ SetRecoilEnergyThreshold()

void G4HadronicInteraction::SetRecoilEnergyThreshold ( G4double  val)
inlineinherited

◆ SetUseAblation()

void G4WilsonAbrasionModel::SetUseAblation ( G4bool  useAblation1)

◆ SetVerboseLevel()

void G4WilsonAbrasionModel::SetVerboseLevel ( G4int  verboseLevel1)
inline

Field Documentation

◆ B

G4double G4WilsonAbrasionModel::B
private

Definition at line 113 of file G4WilsonAbrasionModel.hh.

Referenced by ApplyYourself(), and G4WilsonAbrasionModel().

◆ conserveEnergy

G4bool G4WilsonAbrasionModel::conserveEnergy
private

◆ conserveMomentum

G4bool G4WilsonAbrasionModel::conserveMomentum
private

◆ epCheckLevels

std::pair<G4double, G4double> G4HadronicInteraction::epCheckLevels
privateinherited

◆ fradius

G4double G4WilsonAbrasionModel::fradius
private

Definition at line 115 of file G4WilsonAbrasionModel.hh.

Referenced by ApplyYourself(), and G4WilsonAbrasionModel().

◆ isBlocked

G4bool G4HadronicInteraction::isBlocked
protectedinherited

◆ npK

G4double G4WilsonAbrasionModel::npK
private

Definition at line 107 of file G4WilsonAbrasionModel.hh.

Referenced by G4WilsonAbrasionModel(), and GetAbradedNucleons().

◆ r0sq

G4double G4WilsonAbrasionModel::r0sq
private

Definition at line 106 of file G4WilsonAbrasionModel.hh.

Referenced by G4WilsonAbrasionModel().

◆ recoilEnergyThreshold

G4double G4HadronicInteraction::recoilEnergyThreshold
privateinherited

◆ registry

G4HadronicInteractionRegistry* G4HadronicInteraction::registry
privateinherited

◆ secID

G4int G4WilsonAbrasionModel::secID
private

◆ theAblation

G4WilsonAblationModel* G4WilsonAbrasionModel::theAblation
private

◆ theBlockedList

std::vector<const G4Material *> G4HadronicInteraction::theBlockedList
privateinherited

◆ theBlockedListElements

std::vector<const G4Element *> G4HadronicInteraction::theBlockedListElements
privateinherited

◆ theExcitationHandler

G4ExcitationHandler* G4WilsonAbrasionModel::theExcitationHandler
private

◆ theMaxEnergy

G4double G4HadronicInteraction::theMaxEnergy
protectedinherited

◆ theMaxEnergyList

std::vector<std::pair<G4double, const G4Material *> > G4HadronicInteraction::theMaxEnergyList
privateinherited

◆ theMaxEnergyListElements

std::vector<std::pair<G4double, const G4Element *> > G4HadronicInteraction::theMaxEnergyListElements
privateinherited

◆ theMinEnergy

G4double G4HadronicInteraction::theMinEnergy
protectedinherited

◆ theMinEnergyList

std::vector<std::pair<G4double, const G4Material *> > G4HadronicInteraction::theMinEnergyList
privateinherited

◆ theMinEnergyListElements

std::vector<std::pair<G4double, const G4Element *> > G4HadronicInteraction::theMinEnergyListElements
privateinherited

◆ theModelName

G4String G4HadronicInteraction::theModelName
privateinherited

◆ theParticleChange

G4HadFinalState G4HadronicInteraction::theParticleChange
protectedinherited

Definition at line 172 of file G4HadronicInteraction.hh.

Referenced by ApplyYourself(), G4EMDissociation::ApplyYourself(), G4LENDCapture::ApplyYourself(), G4LENDElastic::ApplyYourself(), G4LENDFission::ApplyYourself(), G4LENDInelastic::ApplyYourself(), G4ElectroVDNuclearModel::ApplyYourself(), G4ParticleHPThermalScattering::ApplyYourself(), G4NeutrinoElectronNcModel::ApplyYourself(), G4NeutronElectronElModel::ApplyYourself(), G4LFission::ApplyYourself(), G4ANuElNucleusCcModel::ApplyYourself(), G4ANuElNucleusNcModel::ApplyYourself(), G4ANuMuNucleusCcModel::ApplyYourself(), G4ANuMuNucleusNcModel::ApplyYourself(), G4MuonVDNuclearModel::ApplyYourself(), G4NeutrinoElectronCcModel::ApplyYourself(), G4NuElNucleusCcModel::ApplyYourself(), G4NuElNucleusNcModel::ApplyYourself(), G4NuMuNucleusCcModel::ApplyYourself(), G4NuMuNucleusNcModel::ApplyYourself(), G4QMDReaction::ApplyYourself(), G4NeutronRadCapture::ApplyYourself(), G4LowEGammaNuclearModel::ApplyYourself(), G4ChargeExchange::ApplyYourself(), G4HadronElastic::ApplyYourself(), G4LEHadronProtonElastic::ApplyYourself(), G4LEnp::ApplyYourself(), G4LEpp::ApplyYourself(), G4BinaryCascade::ApplyYourself(), G4CascadeInterface::ApplyYourself(), G4LMsdGenerator::ApplyYourself(), G4ElectroVDNuclearModel::CalculateEMVertex(), G4MuonVDNuclearModel::CalculateEMVertex(), G4ElectroVDNuclearModel::CalculateHadronicVertex(), G4MuonVDNuclearModel::CalculateHadronicVertex(), G4NeutrinoNucleusModel::CoherentPion(), G4CascadeInterface::copyOutputToHadronicResult(), G4BinaryCascade::DebugEpConservation(), G4BinaryCascade::DebugFinalEpConservation(), G4NeutrinoNucleusModel::FinalBarion(), G4NeutrinoNucleusModel::FinalMeson(), GetAbradedNucleons(), G4CascadeInterface::NoInteraction(), G4CascadeInterface::Propagate(), G4NeutrinoNucleusModel::RecoilDeexcitation(), G4LEHadronProtonElastic::~G4LEHadronProtonElastic(), G4LEnp::~G4LEnp(), and G4LFission::~G4LFission().

◆ third

G4double G4WilsonAbrasionModel::third
private

Definition at line 114 of file G4WilsonAbrasionModel.hh.

Referenced by G4WilsonAbrasionModel().

◆ useAblation

G4bool G4WilsonAbrasionModel::useAblation
private

◆ verboseLevel

G4int G4HadronicInteraction::verboseLevel
protectedinherited

Definition at line 177 of file G4HadronicInteraction.hh.

Referenced by ApplyYourself(), G4EMDissociation::ApplyYourself(), G4LFission::ApplyYourself(), G4MuMinusCapturePrecompound::ApplyYourself(), G4NeutronRadCapture::ApplyYourself(), G4LowEGammaNuclearModel::ApplyYourself(), G4ChargeExchange::ApplyYourself(), G4HadronElastic::ApplyYourself(), G4LEHadronProtonElastic::ApplyYourself(), G4LEnp::ApplyYourself(), G4LEpp::ApplyYourself(), G4CascadeInterface::ApplyYourself(), G4CascadeInterface::checkFinalResult(), G4CascadeInterface::copyOutputToHadronicResult(), G4CascadeInterface::copyOutputToReactionProducts(), G4LENDModel::create_used_target_map(), G4CascadeInterface::createBullet(), G4CascadeInterface::createTarget(), G4ElasticHadrNucleusHE::DefineHadronValues(), G4ElasticHadrNucleusHE::FillData(), G4ElasticHadrNucleusHE::FillFq2(), G4DiffuseElastic::G4DiffuseElastic(), G4DiffuseElasticV2::G4DiffuseElasticV2(), G4ElasticHadrNucleusHE::G4ElasticHadrNucleusHE(), G4EMDissociation::G4EMDissociation(), G4hhElastic::G4hhElastic(), G4NuclNuclDiffuseElastic::G4NuclNuclDiffuseElastic(), G4WilsonAbrasionModel(), G4ElasticHadrNucleusHE::GetFt(), G4ElasticHadrNucleusHE::GetLightFq2(), G4ElasticHadrNucleusHE::GetQ2_2(), G4HadronicInteraction::GetVerboseLevel(), G4ElasticHadrNucleusHE::HadronNucleusQ2_2(), G4ElasticHadrNucleusHE::HadronProtonQ2(), G4LFission::init(), G4DiffuseElastic::Initialise(), G4DiffuseElasticV2::Initialise(), G4NuclNuclDiffuseElastic::Initialise(), G4DiffuseElastic::InitialiseOnFly(), G4DiffuseElasticV2::InitialiseOnFly(), G4NuclNuclDiffuseElastic::InitialiseOnFly(), G4CascadeInterface::makeDynamicParticle(), G4CascadeInterface::NoInteraction(), G4CascadeInterface::Propagate(), G4ElasticHadrNucleusHE::SampleInvariantT(), G4AntiNuclElastic::SampleThetaCMS(), G4DiffuseElastic::SampleThetaLab(), G4NuclNuclDiffuseElastic::SampleThetaLab(), G4AntiNuclElastic::SampleThetaLab(), SetUseAblation(), G4HadronicInteraction::SetVerboseLevel(), SetVerboseLevel(), G4DiffuseElastic::ThetaCMStoThetaLab(), G4DiffuseElasticV2::ThetaCMStoThetaLab(), G4NuclNuclDiffuseElastic::ThetaCMStoThetaLab(), G4DiffuseElastic::ThetaLabToThetaCMS(), G4DiffuseElasticV2::ThetaLabToThetaCMS(), and G4NuclNuclDiffuseElastic::ThetaLabToThetaCMS().


The documentation for this class was generated from the following files: