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

#include <G4QMDReaction.hh>

Inheritance diagram for G4QMDReaction:
G4HadronicInteraction

Public Member Functions

void ActivateFor (const G4Element *anElement)
 
void ActivateFor (const G4Material *aMaterial)
 
G4HadFinalStateApplyYourself (const G4HadProjectile &aTrack, G4Nucleus &targetNucleus)
 
virtual void BuildPhysicsTable (const G4ParticleDefinition &)
 
void DeActivateFor (const G4Element *anElement)
 
void DeActivateFor (const G4Material *aMaterial)
 
 G4QMDReaction ()
 
virtual std::pair< G4double, G4doubleGetEnergyMomentumCheckLevels () const
 
G4ExcitationHandlerGetExcitationHandler ()
 
virtual const std::pair< G4double, G4doubleGetFatalEnergyCheckLevels () const
 
std::vector< G4QMDSystem * > GetFinalStates ()
 
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
 
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 &outFile) const
 
G4bool operator!= (const G4HadronicInteraction &right) const =delete
 
G4bool operator== (const G4HadronicInteraction &right) const =delete
 
virtual G4double SampleInvariantT (const G4ParticleDefinition *p, G4double plab, G4int Z, G4int A)
 
void SetDT (G4double t)
 
void SetEF (G4double x)
 
void SetEnergyMomentumCheckLevels (G4double relativeLevel, G4double absoluteLevel)
 
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 SetTMAX (G4int i)
 
void SetVerboseLevel (G4int value)
 
void UnUseGEM ()
 
void UseFRAG ()
 
 ~G4QMDReaction ()
 

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

void calcOffSetOfCollision (G4double, const G4ParticleDefinition *, const G4ParticleDefinition *, G4double, G4double, G4double, G4ThreeVector)
 
std::vector< G4QMDSystem * > doClusterJudgment ()
 
void doCollision ()
 
 G4QMDReaction (const G4QMDReaction &)
 
void operator= (const G4QMDReaction &)
 
void setEvaporationCh ()
 
void setHighEnergyModel ()
 

Private Attributes

G4QMDCollisioncollision
 
G4double coulomb_collision_gamma_proj
 
G4double coulomb_collision_gamma_targ
 
G4double coulomb_collision_px_proj
 
G4double coulomb_collision_px_targ
 
G4double coulomb_collision_pz_proj
 
G4double coulomb_collision_pz_targ
 
G4double coulomb_collision_rx_proj
 
G4double coulomb_collision_rx_targ
 
G4double coulomb_collision_rz_proj
 
G4double coulomb_collision_rz_targ
 
G4double deltaT
 
G4double envelopF
 
std::pair< G4double, G4doubleepCheckLevels
 
G4Evaporationevaporation
 
G4ExcitationHandlerexcitationHandler
 
G4bool frag
 
G4bool gem
 
G4int maxTime
 
G4QMDMeanFieldmeanField
 
G4BGGPionElasticXSpimElNucXS
 
G4BGGPionInelasticXSpimInelNucXS
 
G4BGGPionElasticXSpipElNucXS
 
G4BGGPionInelasticXSpipInelNucXS
 
G4double recoilEnergyThreshold
 
G4HadronicInteractionRegistryregistry
 
G4int secID
 
G4QMDSystemsystem
 
std::vector< const G4Material * > theBlockedList
 
std::vector< const G4Element * > theBlockedListElements
 
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
 
G4VCrossSectionDataSettheXS
 

Detailed Description

Definition at line 59 of file G4QMDReaction.hh.

Constructor & Destructor Documentation

◆ G4QMDReaction() [1/2]

G4QMDReaction::G4QMDReaction ( )

Definition at line 54 of file G4QMDReaction.cc.

55: G4HadronicInteraction("QMDModel")
56, system ( NULL )
57, deltaT ( 1 ) // in fsec (c=1)
58, maxTime ( 100 ) // will have maxTime-th time step
59, envelopF ( 1.05 ) // 10% for Peripheral reactions
60, gem ( true )
61, frag ( false )
62, secID( -1 )
63{
67
70
73
76
79
82 //fEvaporation - 8 default channels
83 //fCombined - 8 default + 60 GEM
84 //fGEM - 2 default + 66 GEM
88
94
100
101 secID = G4PhysicsModelCatalog::GetModelID( "model_QMDModel" );
102}
void BuildPhysicsTable(const G4ParticleDefinition &) final
void BuildPhysicsTable(const G4ParticleDefinition &) final
void SetEvaporation(G4VEvaporation *ptr, G4bool isLocal=false)
void SetDeexChannelsType(G4DeexChannelType val)
G4HadronicInteraction(const G4String &modelName="HadronicModel")
static G4int GetModelID(const G4int modelIndex)
static G4PionMinus * PionMinus()
Definition: G4PionMinus.cc:97
static G4PionPlus * PionPlus()
Definition: G4PionPlus.cc:97
G4double coulomb_collision_rx_targ
G4QMDCollision * collision
G4double coulomb_collision_rx_proj
G4double coulomb_collision_rz_targ
G4QMDSystem * system
G4BGGPionInelasticXS * pipInelNucXS
G4double coulomb_collision_pz_proj
G4double envelopF
G4ExcitationHandler * excitationHandler
G4Evaporation * evaporation
G4QMDMeanField * meanField
G4double coulomb_collision_pz_targ
G4BGGPionElasticXS * pipElNucXS
void setEvaporationCh()
G4double coulomb_collision_gamma_targ
G4BGGPionInelasticXS * pimInelNucXS
G4BGGPionElasticXS * pimElNucXS
G4double coulomb_collision_gamma_proj
G4double coulomb_collision_px_targ
G4VCrossSectionDataSet * theXS
G4double coulomb_collision_rz_proj
G4double deltaT
G4double coulomb_collision_px_proj

References G4BGGPionElasticXS::BuildPhysicsTable(), G4BGGPionInelasticXS::BuildPhysicsTable(), collision, coulomb_collision_gamma_proj, coulomb_collision_gamma_targ, coulomb_collision_px_proj, coulomb_collision_px_targ, coulomb_collision_pz_proj, coulomb_collision_pz_targ, coulomb_collision_rx_proj, coulomb_collision_rx_targ, coulomb_collision_rz_proj, coulomb_collision_rz_targ, evaporation, excitationHandler, fCombined, G4PhysicsModelCatalog::GetModelID(), meanField, pimElNucXS, pimInelNucXS, G4PionMinus::PionMinus(), G4PionPlus::PionPlus(), pipElNucXS, pipInelNucXS, secID, G4ExcitationHandler::SetDeexChannelsType(), G4ExcitationHandler::SetEvaporation(), setEvaporationCh(), and theXS.

◆ ~G4QMDReaction()

G4QMDReaction::~G4QMDReaction ( )

Definition at line 105 of file G4QMDReaction.cc.

106{
107 delete evaporation;
108 delete excitationHandler;
109 delete collision;
110 delete meanField;
111}

References collision, evaporation, excitationHandler, and meanField.

◆ G4QMDReaction() [2/2]

G4QMDReaction::G4QMDReaction ( const G4QMDReaction )
inlineprivate

Definition at line 84 of file G4QMDReaction.hh.

84:G4HadronicInteraction("QMDModel"){};

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 * G4QMDReaction::ApplyYourself ( const G4HadProjectile aTrack,
G4Nucleus targetNucleus 
)
virtual

Reimplemented from G4HadronicInteraction.

Definition at line 114 of file G4QMDReaction.cc.

115{
116 //G4cout << "G4QMDReaction::ApplyYourself" << G4endl;
117
119
120 system = new G4QMDSystem;
121
122 G4int proj_Z = 0;
123 G4int proj_A = 0;
124 const G4ParticleDefinition* proj_pd = ( const G4ParticleDefinition* ) projectile.GetDefinition();
125 if ( proj_pd->GetParticleType() == "nucleus" )
126 {
127 proj_Z = proj_pd->GetAtomicNumber();
128 proj_A = proj_pd->GetAtomicMass();
129 }
130 else
131 {
132 proj_Z = (int)( proj_pd->GetPDGCharge()/eplus );
133 proj_A = 1;
134 }
135 //G4int targ_Z = int ( target.GetZ() + 0.5 );
136 //G4int targ_A = int ( target.GetN() + 0.5 );
137 //migrate to integer A and Z (GetN_asInt returns number of neutrons in the nucleus since this)
138 G4int targ_Z = target.GetZ_asInt();
139 G4int targ_A = target.GetA_asInt();
140 const G4ParticleDefinition* targ_pd = G4IonTable::GetIonTable()->GetIon( targ_Z , targ_A , 0.0 );
141
142
143 //G4NistManager* nistMan = G4NistManager::Instance();
144// G4Element* G4NistManager::FindOrBuildElement( targ_Z );
145
146 const G4DynamicParticle* proj_dp = new G4DynamicParticle ( proj_pd , projectile.Get4Momentum() );
147 //const G4Element* targ_ele = nistMan->FindOrBuildElement( targ_Z );
148 //G4double aTemp = projectile.GetMaterial()->GetTemperature();
149
150 // Glauber-Gribov nucleus-nucleus cross section does not have GetIsoCrossSection,
151 // therefore call GetElementCrossSection instead.
152 //G4double xs_0 = theXS->GetIsoCrossSection ( proj_dp , targ_Z , targ_A );
153 G4double xs_0 = theXS->GetElementCrossSection( proj_dp , targ_Z , projectile.GetMaterial() );
154
155 // When the projectile is a pion
156 if (proj_pd == G4PionPlus::PionPlus() ) {
157 xs_0 = pipElNucXS->GetElementCrossSection(proj_dp, targ_Z, projectile.GetMaterial() ) +
158 pipInelNucXS->GetElementCrossSection(proj_dp, targ_Z, projectile.GetMaterial() );
159 } else if (proj_pd == G4PionMinus::PionMinus() ) {
160 xs_0 = pimElNucXS->GetElementCrossSection(proj_dp, targ_Z, projectile.GetMaterial() ) +
161 pimInelNucXS->GetElementCrossSection(proj_dp, targ_Z, projectile.GetMaterial() );
162 }
163
164 //G4double xs_0 = genspaXS->GetCrossSection ( proj_dp , targ_ele , aTemp );
165 //G4double xs_0 = theXS->GetCrossSection ( proj_dp , targ_ele , aTemp );
166 //110822
167
168 G4double bmax_0 = std::sqrt( xs_0 / pi );
169 //std::cout << "bmax_0 in fm (fermi) " << bmax_0/fermi << std::endl;
170
171 //delete proj_dp;
172
173 G4bool elastic = true;
174
175 std::vector< G4QMDNucleus* > nucleuses; // Secondary nuceluses
176 G4ThreeVector boostToReac; // ReactionSystem (CM or NN);
177 G4ThreeVector boostBackToLAB; // Reaction System to LAB;
178
179 G4LorentzVector targ4p( G4ThreeVector( 0.0 ) , targ_pd->GetPDGMass()/GeV );
180 G4ThreeVector boostLABtoCM = targ4p.findBoostToCM( proj_dp->Get4Momentum()/GeV ); // CM of target and proj;
181
182 G4double p1 = proj_dp->GetMomentum().mag()/GeV/proj_A;
183 G4double m1 = proj_dp->GetDefinition()->GetPDGMass()/GeV/proj_A;
184 G4double e1 = std::sqrt( p1*p1 + m1*m1 );
185 G4double e2 = targ_pd->GetPDGMass()/GeV/targ_A;
186 G4double beta_nn = -p1 / ( e1+e2 );
187
188 G4ThreeVector boostLABtoNN ( 0. , 0. , beta_nn ); // CM of NN;
189
190 G4double beta_nncm = ( - boostLABtoCM.beta() + boostLABtoNN.beta() ) / ( 1 - boostLABtoCM.beta() * boostLABtoNN.beta() ) ;
191
192 //std::cout << targ4p << std::endl;
193 //std::cout << proj_dp->Get4Momentum()<< std::endl;
194 //std::cout << beta_nncm << std::endl;
195 G4ThreeVector boostNNtoCM( 0. , 0. , beta_nncm ); //
196 G4ThreeVector boostCMtoNN( 0. , 0. , -beta_nncm ); //
197
198 boostToReac = boostLABtoNN;
199 boostBackToLAB = -boostLABtoNN;
200
201 delete proj_dp;
202
203 G4int icounter = 0;
204 G4int icounter_max = 1024;
205 while ( elastic ) // Loop checking, 11.03.2015, T. Koi
206 {
207 icounter++;
208 if ( icounter > icounter_max ) {
209 G4cout << "Loop-counter exceeded the threshold value at " << __LINE__ << "th line of " << __FILE__ << "." << G4endl;
210 break;
211 }
212
213// impact parameter
214 //G4double bmax = 1.05*(bmax_0/fermi); // 10% for Peripheral reactions
215 G4double bmax = envelopF*(bmax_0/fermi);
216 G4double b = bmax * std::sqrt ( G4UniformRand() );
217//071112
218 //G4double b = 0;
219 //G4double b = bmax;
220 //G4double b = bmax/1.05 * 0.7 * G4UniformRand();
221
222 //G4cout << "G4QMDRESULT bmax_0 = " << bmax_0/fermi << " fm, bmax = " << bmax << " fm , b = " << b << " fm " << G4endl;
223
224 G4double plab = projectile.GetTotalMomentum()/GeV;
225 G4double elab = ( projectile.GetKineticEnergy() + proj_pd->GetPDGMass() + targ_pd->GetPDGMass() )/GeV;
226
227 calcOffSetOfCollision( b , proj_pd , targ_pd , plab , elab , bmax , boostCMtoNN );
228
229// Projectile
230 G4LorentzVector proj4pLAB = projectile.Get4Momentum()/GeV;
231
232 G4QMDGroundStateNucleus* proj(NULL);
233 if ( projectile.GetDefinition()->GetParticleType() == "nucleus"
234 || projectile.GetDefinition()->GetParticleName() == "proton"
235 || projectile.GetDefinition()->GetParticleName() == "neutron" )
236 {
237
238 proj_Z = proj_pd->GetAtomicNumber();
239 proj_A = proj_pd->GetAtomicMass();
240
241 proj = new G4QMDGroundStateNucleus( proj_Z , proj_A );
242 //proj->ShowParticipants();
243
244
245 meanField->SetSystem ( proj );
246 proj->SetTotalPotential( meanField->GetTotalPotential() );
247 proj->CalEnergyAndAngularMomentumInCM();
248
249 }
250
251// Target
252 //G4int iz = int ( target.GetZ() );
253 //G4int ia = int ( target.GetN() );
254 //migrate to integer A and Z (GetN_asInt returns number of neutrons in the nucleus since this)
255 G4int iz = int ( target.GetZ_asInt() );
256 G4int ia = int ( target.GetA_asInt() );
257
259
260 meanField->SetSystem (targ );
263
264 //G4LorentzVector targ4p( G4ThreeVector( 0.0 ) , targ->GetNuclearMass()/GeV );
265// Boost Vector to CM
266 //boostToCM = targ4p.findBoostToCM( proj4pLAB );
267
268// Target
269 for ( G4int i = 0 ; i < targ->GetTotalNumberOfParticipant() ; i++ )
270 {
271
272 G4ThreeVector p0 = targ->GetParticipant( i )->GetMomentum();
273 G4ThreeVector r0 = targ->GetParticipant( i )->GetPosition();
274
276 , p0.y()
278
280 , r0.y()
282
283 system->SetParticipant( new G4QMDParticipant( targ->GetParticipant( i )->GetDefinition() , p , r ) );
285
286 }
287
288 G4LorentzVector proj4pCM = CLHEP::boostOf ( proj4pLAB , boostToReac );
289 G4LorentzVector targ4pCM = CLHEP::boostOf ( targ4p , boostToReac );
290
291// Projectile
292 //G4cout << "proj : " << proj << G4endl;
293 //if ( proj != NULL )
294 if ( proj_A != 1 )
295 {
296
297// projectile is nucleus
298
299 for ( G4int i = 0 ; i < proj->GetTotalNumberOfParticipant() ; i++ )
300 {
301
302 G4ThreeVector p0 = proj->GetParticipant( i )->GetMomentum();
303 G4ThreeVector r0 = proj->GetParticipant( i )->GetPosition();
304
306 , p0.y()
308
310 , r0.y()
312
313 system->SetParticipant( new G4QMDParticipant( proj->GetParticipant( i )->GetDefinition() , p , r ) );
315 }
316
317 }
318 else
319 {
320
321// projectile is particle
322
323 // avoid multiple set in "elastic" loop
324 //G4cout << "system Total Participants : " << system->GetTotalNumberOfParticipant() << ", target : " << targ->GetTotalNumberOfParticipant() << G4endl;
326 {
327
329
330 G4ThreeVector p0( 0 );
331 G4ThreeVector r0( 0 );
332
334 , p0.y()
336
338 , r0.y()
340
341 system->SetParticipant( new G4QMDParticipant( (G4ParticleDefinition*)projectile.GetDefinition() , p , r ) );
342 // This is not important becase only 1 projectile particle.
344 }
345
346 }
347 //system->ShowParticipants();
348
349 delete targ;
350 delete proj;
351
354
355// Time Evolution
356 //std::cout << "Start time evolution " << std::endl;
357 //system->ShowParticipants();
358 for ( G4int i = 0 ; i < maxTime ; i++ )
359 {
360 //G4cout << " do Paropagate " << i << " th time step. " << G4endl;
362 //system->ShowParticipants();
364
365 if ( i / 10 * 10 == i )
366 {
367 //G4cout << i << " th time step. " << G4endl;
368 //system->ShowParticipants();
369 }
370 //system->ShowParticipants();
371 }
372 //system->ShowParticipants();
373
374
375 //std::cout << "Doing Cluster Judgment " << std::endl;
376
377 nucleuses = meanField->DoClusterJudgment();
378
379// Elastic Judgment
380
381 G4int numberOfSecondary = int ( nucleuses.size() ) + system->GetTotalNumberOfParticipant();
382
383 G4int sec_a_Z = 0;
384 G4int sec_a_A = 0;
385 const G4ParticleDefinition* sec_a_pd = NULL;
386 G4int sec_b_Z = 0;
387 G4int sec_b_A = 0;
388 const G4ParticleDefinition* sec_b_pd = NULL;
389
390 if ( numberOfSecondary == 2 )
391 {
392
393 G4bool elasticLike_system = false;
394 if ( nucleuses.size() == 2 )
395 {
396
397 sec_a_Z = nucleuses[0]->GetAtomicNumber();
398 sec_a_A = nucleuses[0]->GetMassNumber();
399 sec_b_Z = nucleuses[1]->GetAtomicNumber();
400 sec_b_A = nucleuses[1]->GetMassNumber();
401
402 if ( ( sec_a_Z == proj_Z && sec_a_A == proj_A && sec_b_Z == targ_Z && sec_b_A == targ_A )
403 || ( sec_a_Z == targ_Z && sec_a_A == targ_A && sec_b_Z == proj_Z && sec_b_A == proj_A ) )
404 {
405 elasticLike_system = true;
406 }
407
408 }
409 else if ( nucleuses.size() == 1 )
410 {
411
412 sec_a_Z = nucleuses[0]->GetAtomicNumber();
413 sec_a_A = nucleuses[0]->GetMassNumber();
414 sec_b_pd = system->GetParticipant( 0 )->GetDefinition();
415
416 if ( ( sec_a_Z == proj_Z && sec_a_A == proj_A && sec_b_pd == targ_pd )
417 || ( sec_a_Z == targ_Z && sec_a_A == targ_A && sec_b_pd == proj_pd ) )
418 {
419 elasticLike_system = true;
420 }
421
422 }
423 else
424 {
425
426 sec_a_pd = system->GetParticipant( 0 )->GetDefinition();
427 sec_b_pd = system->GetParticipant( 1 )->GetDefinition();
428
429 if ( ( sec_a_pd == proj_pd && sec_b_pd == targ_pd )
430 || ( sec_a_pd == targ_pd && sec_b_pd == proj_pd ) )
431 {
432 elasticLike_system = true;
433 }
434
435 }
436
437 if ( elasticLike_system == true )
438 {
439
440 G4bool elasticLike_energy = true;
441// Cal ExcitationEnergy
442 for ( G4int i = 0 ; i < int ( nucleuses.size() ) ; i++ )
443 {
444
445 //meanField->SetSystem( nucleuses[i] );
446 meanField->SetNucleus( nucleuses[i] );
447 //nucleuses[i]->SetTotalPotential( meanField->GetTotalPotential() );
448 //nucleuses[i]->CalEnergyAndAngularMomentumInCM();
449
450 if ( nucleuses[i]->GetExcitationEnergy()*GeV > 1.0*MeV ) elasticLike_energy = false;
451
452 }
453
454// Check Collision
455 G4bool withCollision = true;
456 if ( system->GetNOCollision() == 0 ) withCollision = false;
457
458// Final judegement for Inelasitc or Elastic;
459//
460// ElasticLike without Collision
461 //if ( elasticLike_energy == true && withCollision == false ) elastic = true; // ielst = 0
462// ElasticLike with Collision
463 //if ( elasticLike_energy == true && withCollision == true ) elastic = true; // ielst = 1
464// InelasticLike without Collision
465 //if ( elasticLike_energy == false ) elastic = false; // ielst = 2
466 if ( frag == true )
467 if ( elasticLike_energy == false ) elastic = false;
468// InelasticLike with Collision
469 if ( elasticLike_energy == false && withCollision == true ) elastic = false; // ielst = 3
470
471 }
472
473 }
474 else
475 {
476
477// numberOfSecondary != 2
478 elastic = false;
479
480 }
481
482//071115
483 //G4cout << elastic << G4endl;
484 // if elastic is true try again from sampling of impact parameter
485
486 if ( elastic == true )
487 {
488 // delete this nucleues
489 for ( std::vector< G4QMDNucleus* >::iterator
490 it = nucleuses.begin() ; it != nucleuses.end() ; it++ )
491 {
492 delete *it;
493 }
494 nucleuses.clear();
495 }
496
497 }
498
499
500// Statical Decay Phase
501
502 for ( std::vector< G4QMDNucleus* >::iterator it
503 = nucleuses.begin() ; it != nucleuses.end() ; it++ )
504 {
505
506/*
507 G4cout << "G4QMDRESULT "
508 << (*it)->GetAtomicNumber()
509 << " "
510 << (*it)->GetMassNumber()
511 << " "
512 << (*it)->Get4Momentum()
513 << " "
514 << (*it)->Get4Momentum().vect()
515 << " "
516 << (*it)->Get4Momentum().restMass()
517 << " "
518 << (*it)->GetNuclearMass()/GeV
519 << G4endl;
520*/
521
522 meanField->SetNucleus ( *it );
523
524 if ( (*it)->GetAtomicNumber() == 0 // neutron cluster
525 || (*it)->GetAtomicNumber() == (*it)->GetMassNumber() ) // proton cluster
526 {
527 // push back system
528 for ( G4int i = 0 ; i < (*it)->GetTotalNumberOfParticipant() ; i++ )
529 {
530 G4QMDParticipant* aP = new G4QMDParticipant( ( (*it)->GetParticipant( i ) )->GetDefinition() , ( (*it)->GetParticipant( i ) )->GetMomentum() , ( (*it)->GetParticipant( i ) )->GetPosition() );
531 system->SetParticipant ( aP );
532 }
533 continue;
534 }
535
536 G4double nucleus_e = std::sqrt ( G4Pow::GetInstance()->powN ( (*it)->GetNuclearMass()/GeV , 2 ) + G4Pow::GetInstance()->powN ( (*it)->Get4Momentum().vect().mag() , 2 ) );
537 G4LorentzVector nucleus_p4CM ( (*it)->Get4Momentum().vect() , nucleus_e );
538
539// std::cout << "G4QMDRESULT nucleus deltaQ " << deltaQ << std::endl;
540
541 G4int ia = (*it)->GetMassNumber();
542 G4int iz = (*it)->GetAtomicNumber();
543
544 G4LorentzVector lv ( G4ThreeVector( 0.0 ) , (*it)->GetExcitationEnergy()*GeV + G4IonTable::GetIonTable()->GetIonMass( iz , ia ) );
545
546 G4Fragment* aFragment = new G4Fragment( ia , iz , lv );
547
549 rv = excitationHandler->BreakItUp( *aFragment );
550 G4bool notBreak = true;
551 for ( G4ReactionProductVector::iterator itt
552 = rv->begin() ; itt != rv->end() ; itt++ )
553 {
554
555 notBreak = false;
556 // Secondary from this nucleus (*it)
557 const G4ParticleDefinition* pd = (*itt)->GetDefinition();
558
559 G4LorentzVector p4 ( (*itt)->GetMomentum()/GeV , (*itt)->GetTotalEnergy()/GeV ); //in nucleus(*it) rest system
560 G4LorentzVector p4_CM = CLHEP::boostOf( p4 , -nucleus_p4CM.findBoostToCM() ); // Back to CM
561 G4LorentzVector p4_LAB = CLHEP::boostOf( p4_CM , boostBackToLAB ); // Back to LAB
562
563
564//090122
565 //theParticleChange.AddSecondary( dp );
566 if ( !( pd->GetAtomicNumber() == 4 && pd->GetAtomicMass() == 8 ) )
567 {
568 //G4cout << "pd out of notBreak loop : " << pd->GetParticleName() << G4endl;
569 G4DynamicParticle* dp = new G4DynamicParticle( pd , p4_LAB*GeV );
571 }
572 else
573 {
574 //Be8 -> Alpha + Alpha + Q
575 G4ThreeVector randomized_direction( G4UniformRand() , G4UniformRand() , G4UniformRand() );
576 randomized_direction = randomized_direction.unit();
577 G4double q_decay = (*itt)->GetMass() - 2*G4Alpha::Alpha()->GetPDGMass();
578 G4double p_decay = std::sqrt ( G4Pow::GetInstance()->powN(G4Alpha::Alpha()->GetPDGMass()+q_decay/2,2) - G4Pow::GetInstance()->powN(G4Alpha::Alpha()->GetPDGMass() , 2 ) );
579 G4LorentzVector p4_a1 ( p_decay*randomized_direction , G4Alpha::Alpha()->GetPDGMass()+q_decay/2 ); //in Be8 rest system
580
581 G4LorentzVector p4_a1_Be8 = CLHEP::boostOf ( p4_a1/GeV , -p4.findBoostToCM() );
582 G4LorentzVector p4_a1_CM = CLHEP::boostOf ( p4_a1_Be8 , -nucleus_p4CM.findBoostToCM() );
583 G4LorentzVector p4_a1_LAB = CLHEP::boostOf ( p4_a1_CM , boostBackToLAB );
584
585 G4LorentzVector p4_a2 ( -p_decay*randomized_direction , G4Alpha::Alpha()->GetPDGMass()+q_decay/2 ); //in Be8 rest system
586
587 G4LorentzVector p4_a2_Be8 = CLHEP::boostOf ( p4_a2/GeV , -p4.findBoostToCM() );
588 G4LorentzVector p4_a2_CM = CLHEP::boostOf ( p4_a2_Be8 , -nucleus_p4CM.findBoostToCM() );
589 G4LorentzVector p4_a2_LAB = CLHEP::boostOf ( p4_a2_CM , boostBackToLAB );
590
591 G4DynamicParticle* dp1 = new G4DynamicParticle( G4Alpha::Alpha() , p4_a1_LAB*GeV );
592 G4DynamicParticle* dp2 = new G4DynamicParticle( G4Alpha::Alpha() , p4_a2_LAB*GeV );
595 }
596//090122
597
598/*
599 G4cout
600 << "Regist Secondary "
601 << (*itt)->GetDefinition()->GetParticleName()
602 << " "
603 << (*itt)->GetMomentum()/GeV
604 << " "
605 << (*itt)->GetKineticEnergy()/GeV
606 << " "
607 << (*itt)->GetMass()/GeV
608 << " "
609 << (*itt)->GetTotalEnergy()/GeV
610 << " "
611 << (*itt)->GetTotalEnergy()/GeV * (*itt)->GetTotalEnergy()/GeV
612 - (*itt)->GetMomentum()/GeV * (*itt)->GetMomentum()/GeV
613 << " "
614 << nucleus_p4CM.findBoostToCM()
615 << " "
616 << p4
617 << " "
618 << p4_CM
619 << " "
620 << p4_LAB
621 << G4endl;
622*/
623
624 }
625 if ( notBreak == true )
626 {
627
628 const G4ParticleDefinition* pd = G4IonTable::GetIonTable()->GetIon( (*it)->GetAtomicNumber() , (*it)->GetMassNumber(), (*it)->GetExcitationEnergy()*GeV );
629 //G4cout << "pd in notBreak loop : " << pd->GetParticleName() << G4endl;
630 G4LorentzVector p4_CM = nucleus_p4CM;
631 G4LorentzVector p4_LAB = CLHEP::boostOf( p4_CM , boostBackToLAB ); // Back to LAB
632 G4DynamicParticle* dp = new G4DynamicParticle( pd , p4_LAB*GeV );
634
635 }
636
637 for ( G4ReactionProductVector::iterator itt
638 = rv->begin() ; itt != rv->end() ; itt++ )
639 {
640 delete *itt;
641 }
642 delete rv;
643
644 delete aFragment;
645
646 }
647
648
649
650 for ( G4int i = 0 ; i < system->GetTotalNumberOfParticipant() ; i++ )
651 {
652 // Secondary particles
653
656 G4LorentzVector p4_LAB = CLHEP::boostOf( p4_CM , boostBackToLAB );
657 G4DynamicParticle* dp = new G4DynamicParticle( pd , p4_LAB*GeV );
659 //G4cout << "In the last theParticleChange loop : " << pd->GetParticleName() << G4endl;
660
661/*
662 G4cout << "G4QMDRESULT "
663 << "r" << i << " " << system->GetParticipant ( i ) -> GetPosition() << " "
664 << "p" << i << " " << system->GetParticipant ( i ) -> Get4Momentum()
665 << G4endl;
666*/
667
668 }
669
670 for ( std::vector< G4QMDNucleus* >::iterator it
671 = nucleuses.begin() ; it != nucleuses.end() ; it++ )
672 {
673 delete *it; // delete nulceuse
674 }
675 nucleuses.clear();
676
677 system->Clear();
678 delete system;
679
681
682 for (G4int i = 0; i < G4int(theParticleChange.GetNumberOfSecondaries() ); i++)
683 {
684 //G4cout << "Particle : " << theParticleChange.GetSecondary(i)->GetParticle()->GetParticleDefinition()->GetParticleName() << G4endl;
685 //G4cout << "KEnergy : " << theParticleChange.GetSecondary(i)->GetParticle()->GetKineticEnergy() << G4endl;
686 //G4cout << "modelID : " << theParticleChange.GetSecondary(i)->GetCreatorModelID() << G4endl;
688 }
689
690 return &theParticleChange;
691
692}
static const G4double e1[44]
static const G4double e2[44]
@ stopAndKill
std::vector< G4ReactionProduct * > G4ReactionProductVector
static constexpr double eplus
Definition: G4SIunits.hh:184
static constexpr double fermi
Definition: G4SIunits.hh:83
static constexpr double GeV
Definition: G4SIunits.hh:203
static constexpr double MeV
Definition: G4SIunits.hh:200
static constexpr double pi
Definition: G4SIunits.hh:55
CLHEP::Hep3Vector G4ThreeVector
double G4double
Definition: G4Types.hh:83
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
double beta() const
Definition: SpaceVectorP.cc:26
double z() const
double x() const
double y() const
double mag() const
static G4Alpha * Alpha()
Definition: G4Alpha.cc:88
G4double GetElementCrossSection(const G4DynamicParticle *, G4int Z, const G4Material *mat) final
G4double GetElementCrossSection(const G4DynamicParticle *, G4int Z, const G4Material *mat) final
G4ParticleDefinition * GetDefinition() const
G4LorentzVector Get4Momentum() const
G4ThreeVector GetMomentum() const
G4ReactionProductVector * BreakItUp(const G4Fragment &theInitialState)
void SetStatusChange(G4HadFinalStateStatus aS)
void AddSecondary(G4DynamicParticle *aP, G4int mod=-1)
std::size_t GetNumberOfSecondaries() const
G4HadSecondary * GetSecondary(size_t i)
void SetCreatorModelID(G4int id)
G4ParticleDefinition * GetIon(G4int Z, G4int A, G4int lvl=0)
Definition: G4IonTable.cc:522
static G4IonTable * GetIonTable()
Definition: G4IonTable.cc:170
G4double GetIonMass(G4int Z, G4int A, G4int nL=0, G4int lvl=0) const
Definition: G4IonTable.cc:1517
G4int GetAtomicNumber() const
const G4String & GetParticleType() const
G4int GetAtomicMass() const
G4double GetPDGCharge() const
static G4Pow * GetInstance()
Definition: G4Pow.cc:41
G4double powN(G4double x, G4int n) const
Definition: G4Pow.cc:166
void SetMeanField(G4QMDMeanField *meanfield)
void CalKinematicsOfBinaryCollisions(G4double)
G4double GetTotalPotential()
void SetNucleus(G4QMDNucleus *aSystem)
void DoPropagation(G4double)
std::vector< G4QMDNucleus * > DoClusterJudgment()
void SetSystem(G4QMDSystem *aSystem)
void SetTotalPotential(G4double x)
Definition: G4QMDNucleus.hh:62
void CalEnergyAndAngularMomentumInCM()
G4ThreeVector GetPosition()
const G4ParticleDefinition * GetDefinition()
G4LorentzVector Get4Momentum()
G4ThreeVector GetMomentum()
void calcOffSetOfCollision(G4double, const G4ParticleDefinition *, const G4ParticleDefinition *, G4double, G4double, G4double, G4ThreeVector)
G4QMDParticipant * GetParticipant(G4int i)
Definition: G4QMDSystem.hh:62
G4int GetTotalNumberOfParticipant()
Definition: G4QMDSystem.hh:60
void Clear()
Definition: G4QMDSystem.cc:68
void SetParticipant(G4QMDParticipant *particle)
Definition: G4QMDSystem.hh:51
G4int GetNOCollision()
Definition: G4QMDSystem.hh:65
virtual G4double GetElementCrossSection(const G4DynamicParticle *, G4int Z, const G4Material *mat=nullptr)
HepLorentzVector boostOf(const HepLorentzVector &vec, const Hep3Vector &betaVector)
G4double elastic(Particle const *const p1, Particle const *const p2)

References G4HadFinalState::AddSecondary(), G4Alpha::Alpha(), CLHEP::Hep3Vector::beta(), CLHEP::boostOf(), G4ExcitationHandler::BreakItUp(), calcOffSetOfCollision(), G4QMDNucleus::CalEnergyAndAngularMomentumInCM(), G4QMDCollision::CalKinematicsOfBinaryCollisions(), G4QMDSystem::Clear(), G4HadFinalState::Clear(), collision, coulomb_collision_gamma_proj, coulomb_collision_gamma_targ, coulomb_collision_px_proj, coulomb_collision_px_targ, coulomb_collision_pz_proj, coulomb_collision_pz_targ, coulomb_collision_rx_proj, coulomb_collision_rx_targ, coulomb_collision_rz_proj, coulomb_collision_rz_targ, deltaT, G4QMDMeanField::DoClusterJudgment(), G4QMDMeanField::DoPropagation(), e1, e2, G4INCL::CrossSections::elastic(), envelopF, eplus, excitationHandler, fermi, CLHEP::HepLorentzVector::findBoostToCM(), frag, G4cout, G4endl, G4UniformRand, G4QMDParticipant::Get4Momentum(), G4DynamicParticle::Get4Momentum(), G4HadProjectile::Get4Momentum(), G4Nucleus::GetA_asInt(), G4ParticleDefinition::GetAtomicMass(), G4ParticleDefinition::GetAtomicNumber(), G4QMDParticipant::GetDefinition(), G4DynamicParticle::GetDefinition(), G4HadProjectile::GetDefinition(), G4BGGPionElasticXS::GetElementCrossSection(), G4BGGPionInelasticXS::GetElementCrossSection(), G4VCrossSectionDataSet::GetElementCrossSection(), G4Pow::GetInstance(), G4IonTable::GetIon(), G4IonTable::GetIonMass(), G4IonTable::GetIonTable(), G4HadProjectile::GetKineticEnergy(), G4HadProjectile::GetMaterial(), G4QMDParticipant::GetMomentum(), G4DynamicParticle::GetMomentum(), G4QMDSystem::GetNOCollision(), G4HadFinalState::GetNumberOfSecondaries(), G4QMDSystem::GetParticipant(), G4ParticleDefinition::GetParticleName(), G4ParticleDefinition::GetParticleType(), G4ParticleDefinition::GetPDGCharge(), G4ParticleDefinition::GetPDGMass(), G4QMDParticipant::GetPosition(), G4HadFinalState::GetSecondary(), G4HadProjectile::GetTotalMomentum(), G4QMDSystem::GetTotalNumberOfParticipant(), G4QMDMeanField::GetTotalPotential(), G4Nucleus::GetZ_asInt(), GeV, CLHEP::Hep3Vector::mag(), maxTime, meanField, MeV, pi, pimElNucXS, pimInelNucXS, G4PionMinus::PionMinus(), G4PionPlus::PionPlus(), pipElNucXS, pipInelNucXS, G4Pow::powN(), secID, G4HadSecondary::SetCreatorModelID(), G4QMDCollision::SetMeanField(), G4QMDMeanField::SetNucleus(), G4QMDSystem::SetParticipant(), G4QMDParticipant::SetProjectile(), G4HadFinalState::SetStatusChange(), G4QMDMeanField::SetSystem(), G4QMDParticipant::SetTarget(), G4QMDNucleus::SetTotalPotential(), stopAndKill, system, G4HadronicInteraction::theParticleChange, theXS, CLHEP::Hep3Vector::unit(), CLHEP::Hep3Vector::x(), CLHEP::Hep3Vector::y(), and CLHEP::Hep3Vector::z().

◆ Block()

void G4HadronicInteraction::Block ( )
inlineprotectedinherited

◆ BuildPhysicsTable()

void G4HadronicInteraction::BuildPhysicsTable ( const G4ParticleDefinition )
virtualinherited

◆ calcOffSetOfCollision()

void G4QMDReaction::calcOffSetOfCollision ( G4double  b,
const G4ParticleDefinition pd_proj,
const G4ParticleDefinition pd_targ,
G4double  ptot,
G4double  etot,
G4double  bmax,
G4ThreeVector  boostToCM 
)
private

Definition at line 696 of file G4QMDReaction.cc.

700{
701
702 G4double mass_proj = pd_proj->GetPDGMass()/GeV;
703 G4double mass_targ = pd_targ->GetPDGMass()/GeV;
704
705 G4double stot = std::sqrt ( etot*etot - ptot*ptot );
706
707 G4double pstt = std::sqrt ( ( stot*stot - ( mass_proj + mass_targ ) * ( mass_proj + mass_targ )
708 ) * ( stot*stot - ( mass_proj - mass_targ ) * ( mass_proj - mass_targ ) ) )
709 / ( 2.0 * stot );
710
711 G4double pzcc = pstt;
712 G4double eccm = stot - ( mass_proj + mass_targ );
713
714 G4int zp = 1;
715 G4int ap = 1;
716 if ( pd_proj->GetParticleType() == "nucleus" )
717 {
718 zp = pd_proj->GetAtomicNumber();
719 ap = pd_proj->GetAtomicMass();
720 }
721 else
722 {
723 // proton, neutron, mesons
724 zp = int ( pd_proj->GetPDGCharge()/eplus + 0.5 );
725 // ap = 1;
726 }
727
728
729 G4int zt = pd_targ->GetAtomicNumber();
730 G4int at = pd_targ->GetAtomicMass();
731
732
733 // Check the ramx0 value
734 //G4double rmax0 = 8.0; // T.K dicide parameter value // for low energy
735 G4double rmax0 = bmax + 4.0;
736 G4double rmax = std::sqrt( rmax0*rmax0 + b*b );
737
738 G4double ccoul = 0.001439767;
739 G4double pcca = 1.0 - double ( zp * zt ) * ccoul / eccm / rmax - ( b / rmax )*( b / rmax );
740
741 G4double pccf = std::sqrt( pcca );
742
743 //Fix for neutral particles
744 G4double aas1 = 0.0;
745 G4double bbs = 0.0;
746
747 if ( zp != 0 )
748 {
749 G4double aas = 2.0 * eccm * b / double ( zp * zt ) / ccoul;
750 bbs = 1.0 / std::sqrt ( 1.0 + aas*aas );
751 aas1 = ( 1.0 + aas * b / rmax ) * bbs;
752 }
753
754 G4double cost = 0.0;
755 G4double sint = 0.0;
756 G4double thet1 = 0.0;
757 G4double thet2 = 0.0;
758 if ( 1.0 - aas1*aas1 <= 0 || 1.0 - bbs*bbs <= 0.0 )
759 {
760 cost = 1.0;
761 sint = 0.0;
762 }
763 else
764 {
765 G4double aat1 = aas1 / std::sqrt ( 1.0 - aas1*aas1 );
766 G4double aat2 = bbs / std::sqrt ( 1.0 - bbs*bbs );
767
768 thet1 = std::atan ( aat1 );
769 thet2 = std::atan ( aat2 );
770
771// TK enter to else block
772 G4double theta = thet1 - thet2;
773 cost = std::cos( theta );
774 sint = std::sin( theta );
775 }
776
777 G4double rzpr = -rmax * cost * ( mass_targ ) / ( mass_proj + mass_targ );
778 G4double rzta = rmax * cost * ( mass_proj ) / ( mass_proj + mass_targ );
779
780 G4double rxpr = rmax / 2.0 * sint;
781
782 G4double rxta = -rxpr;
783
784
785 G4double pzpc = pzcc * ( cost * pccf + sint * b / rmax );
786 G4double pxpr = pzcc * ( -sint * pccf + cost * b / rmax );
787
788 G4double pztc = - pzpc;
789 G4double pxta = - pxpr;
790
791 G4double epc = std::sqrt ( pzpc*pzpc + pxpr*pxpr + mass_proj*mass_proj );
792 G4double etc = std::sqrt ( pztc*pztc + pxta*pxta + mass_targ*mass_targ );
793
794 G4double pzpr = pzpc;
795 G4double pzta = pztc;
796 G4double epr = epc;
797 G4double eta = etc;
798
799// CM -> NN
800 G4double gammacm = boostToCM.gamma();
801 //G4double betacm = -boostToCM.beta();
802 G4double betacm = boostToCM.z();
803 pzpr = pzpc + betacm * gammacm * ( gammacm / ( 1. + gammacm ) * pzpc * betacm + epc );
804 pzta = pztc + betacm * gammacm * ( gammacm / ( 1. + gammacm ) * pztc * betacm + etc );
805 epr = gammacm * ( epc + betacm * pzpc );
806 eta = gammacm * ( etc + betacm * pztc );
807
808 //G4double betpr = pzpr / epr;
809 //G4double betta = pzta / eta;
810
811 G4double gammpr = epr / ( mass_proj );
812 G4double gammta = eta / ( mass_targ );
813
814 pzta = pzta / double ( at );
815 pxta = pxta / double ( at );
816
817 pzpr = pzpr / double ( ap );
818 pxpr = pxpr / double ( ap );
819
820 G4double zeroz = 0.0;
821
822 rzpr = rzpr -zeroz;
823 rzta = rzta -zeroz;
824
825 // Set results
831
837
838}
double gamma() const
Definition: SpaceVectorP.cc:35

References G4InuclParticleNames::ap, coulomb_collision_gamma_proj, coulomb_collision_gamma_targ, coulomb_collision_px_proj, coulomb_collision_px_targ, coulomb_collision_pz_proj, coulomb_collision_pz_targ, coulomb_collision_rx_proj, coulomb_collision_rx_targ, coulomb_collision_rz_proj, coulomb_collision_rz_targ, eplus, CLHEP::Hep3Vector::gamma(), G4ParticleDefinition::GetAtomicMass(), G4ParticleDefinition::GetAtomicNumber(), G4ParticleDefinition::GetParticleType(), G4ParticleDefinition::GetPDGCharge(), G4ParticleDefinition::GetPDGMass(), GeV, and CLHEP::Hep3Vector::z().

Referenced by ApplyYourself().

◆ 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().

◆ doClusterJudgment()

std::vector< G4QMDSystem * > G4QMDReaction::doClusterJudgment ( )
private

◆ doCollision()

void G4QMDReaction::doCollision ( )
private

◆ GetEnergyMomentumCheckLevels()

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

◆ GetExcitationHandler()

G4ExcitationHandler * G4QMDReaction::GetExcitationHandler ( )
inline

Definition at line 70 of file G4QMDReaction.hh.

70{return excitationHandler;};

References excitationHandler.

◆ 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().

◆ GetFinalStates()

std::vector< G4QMDSystem * > G4QMDReaction::GetFinalStates ( )

◆ 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::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().

◆ GetRecoilEnergyThreshold()

G4double G4HadronicInteraction::GetRecoilEnergyThreshold ( ) const
inlineinherited

◆ GetVerboseLevel()

G4int G4HadronicInteraction::GetVerboseLevel ( ) const
inlineinherited

Definition at line 109 of file G4HadronicInteraction.hh.

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 G4QMDReaction::ModelDescription ( std::ostream &  outFile) const
virtual

Reimplemented from G4HadronicInteraction.

Definition at line 852 of file G4QMDReaction.cc.

853{
854 outFile << "Lorentz covarianted Quantum Molecular Dynamics model for nucleus (particle) vs nucleus reactions\n";
855}

◆ operator!=()

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

◆ operator=()

void G4QMDReaction::operator= ( const G4QMDReaction )
inlineprivate

Definition at line 83 of file G4QMDReaction.hh.

83{};

◆ operator==()

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

◆ SampleInvariantT()

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

◆ SetDT()

void G4QMDReaction::SetDT ( G4double  t)
inline

Definition at line 76 of file G4QMDReaction.hh.

76{ deltaT = t; };

References deltaT.

◆ SetEF()

void G4QMDReaction::SetEF ( G4double  x)
inline

Definition at line 77 of file G4QMDReaction.hh.

77{ envelopF = x; };

References envelopF.

◆ 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().

◆ setEvaporationCh()

void G4QMDReaction::setEvaporationCh ( )
private

Definition at line 842 of file G4QMDReaction.cc.

843{
844
845 if ( gem == true )
847 else
849
850}
void SetGEMChannel()
void SetDefaultChannel()

References evaporation, gem, G4Evaporation::SetDefaultChannel(), and G4Evaporation::SetGEMChannel().

Referenced by G4QMDReaction(), and UnUseGEM().

◆ setHighEnergyModel()

void G4QMDReaction::setHighEnergyModel ( )
private

◆ 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::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::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

◆ SetTMAX()

void G4QMDReaction::SetTMAX ( G4int  i)
inline

Definition at line 75 of file G4QMDReaction.hh.

75{ maxTime = i; };

References maxTime.

◆ SetVerboseLevel()

void G4HadronicInteraction::SetVerboseLevel ( G4int  value)
inlineinherited

◆ UnUseGEM()

void G4QMDReaction::UnUseGEM ( )
inline

Definition at line 72 of file G4QMDReaction.hh.

72{gem = false; setEvaporationCh();};

References gem, and setEvaporationCh().

◆ UseFRAG()

void G4QMDReaction::UseFRAG ( )
inline

Definition at line 73 of file G4QMDReaction.hh.

73{frag = true;};

References frag.

Field Documentation

◆ collision

G4QMDCollision* G4QMDReaction::collision
private

Definition at line 91 of file G4QMDReaction.hh.

Referenced by ApplyYourself(), G4QMDReaction(), and ~G4QMDReaction().

◆ coulomb_collision_gamma_proj

G4double G4QMDReaction::coulomb_collision_gamma_proj
private

Definition at line 112 of file G4QMDReaction.hh.

Referenced by ApplyYourself(), calcOffSetOfCollision(), and G4QMDReaction().

◆ coulomb_collision_gamma_targ

G4double G4QMDReaction::coulomb_collision_gamma_targ
private

Definition at line 118 of file G4QMDReaction.hh.

Referenced by ApplyYourself(), calcOffSetOfCollision(), and G4QMDReaction().

◆ coulomb_collision_px_proj

G4double G4QMDReaction::coulomb_collision_px_proj
private

Definition at line 115 of file G4QMDReaction.hh.

Referenced by ApplyYourself(), calcOffSetOfCollision(), and G4QMDReaction().

◆ coulomb_collision_px_targ

G4double G4QMDReaction::coulomb_collision_px_targ
private

Definition at line 121 of file G4QMDReaction.hh.

Referenced by ApplyYourself(), calcOffSetOfCollision(), and G4QMDReaction().

◆ coulomb_collision_pz_proj

G4double G4QMDReaction::coulomb_collision_pz_proj
private

Definition at line 116 of file G4QMDReaction.hh.

Referenced by ApplyYourself(), calcOffSetOfCollision(), and G4QMDReaction().

◆ coulomb_collision_pz_targ

G4double G4QMDReaction::coulomb_collision_pz_targ
private

Definition at line 122 of file G4QMDReaction.hh.

Referenced by ApplyYourself(), calcOffSetOfCollision(), and G4QMDReaction().

◆ coulomb_collision_rx_proj

G4double G4QMDReaction::coulomb_collision_rx_proj
private

Definition at line 113 of file G4QMDReaction.hh.

Referenced by ApplyYourself(), calcOffSetOfCollision(), and G4QMDReaction().

◆ coulomb_collision_rx_targ

G4double G4QMDReaction::coulomb_collision_rx_targ
private

Definition at line 119 of file G4QMDReaction.hh.

Referenced by ApplyYourself(), calcOffSetOfCollision(), and G4QMDReaction().

◆ coulomb_collision_rz_proj

G4double G4QMDReaction::coulomb_collision_rz_proj
private

Definition at line 114 of file G4QMDReaction.hh.

Referenced by ApplyYourself(), calcOffSetOfCollision(), and G4QMDReaction().

◆ coulomb_collision_rz_targ

G4double G4QMDReaction::coulomb_collision_rz_targ
private

Definition at line 120 of file G4QMDReaction.hh.

Referenced by ApplyYourself(), calcOffSetOfCollision(), and G4QMDReaction().

◆ deltaT

G4double G4QMDReaction::deltaT
private

Definition at line 97 of file G4QMDReaction.hh.

Referenced by ApplyYourself(), and SetDT().

◆ envelopF

G4double G4QMDReaction::envelopF
private

Definition at line 99 of file G4QMDReaction.hh.

Referenced by ApplyYourself(), and SetEF().

◆ epCheckLevels

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

◆ evaporation

G4Evaporation* G4QMDReaction::evaporation
private

Definition at line 101 of file G4QMDReaction.hh.

Referenced by G4QMDReaction(), setEvaporationCh(), and ~G4QMDReaction().

◆ excitationHandler

G4ExcitationHandler* G4QMDReaction::excitationHandler
private

◆ frag

G4bool G4QMDReaction::frag
private

Definition at line 132 of file G4QMDReaction.hh.

Referenced by ApplyYourself(), and UseFRAG().

◆ gem

G4bool G4QMDReaction::gem
private

Definition at line 131 of file G4QMDReaction.hh.

Referenced by setEvaporationCh(), and UnUseGEM().

◆ isBlocked

G4bool G4HadronicInteraction::isBlocked
protectedinherited

◆ maxTime

G4int G4QMDReaction::maxTime
private

Definition at line 98 of file G4QMDReaction.hh.

Referenced by ApplyYourself(), and SetTMAX().

◆ meanField

G4QMDMeanField* G4QMDReaction::meanField
private

Definition at line 89 of file G4QMDReaction.hh.

Referenced by ApplyYourself(), G4QMDReaction(), and ~G4QMDReaction().

◆ pimElNucXS

G4BGGPionElasticXS* G4QMDReaction::pimElNucXS
private

Definition at line 127 of file G4QMDReaction.hh.

Referenced by ApplyYourself(), and G4QMDReaction().

◆ pimInelNucXS

G4BGGPionInelasticXS* G4QMDReaction::pimInelNucXS
private

Definition at line 129 of file G4QMDReaction.hh.

Referenced by ApplyYourself(), and G4QMDReaction().

◆ pipElNucXS

G4BGGPionElasticXS* G4QMDReaction::pipElNucXS
private

Definition at line 126 of file G4QMDReaction.hh.

Referenced by ApplyYourself(), and G4QMDReaction().

◆ pipInelNucXS

G4BGGPionInelasticXS* G4QMDReaction::pipInelNucXS
private

Definition at line 128 of file G4QMDReaction.hh.

Referenced by ApplyYourself(), and G4QMDReaction().

◆ recoilEnergyThreshold

G4double G4HadronicInteraction::recoilEnergyThreshold
privateinherited

◆ registry

G4HadronicInteractionRegistry* G4HadronicInteraction::registry
privateinherited

◆ secID

G4int G4QMDReaction::secID
private

Definition at line 133 of file G4QMDReaction.hh.

Referenced by ApplyYourself(), and G4QMDReaction().

◆ system

G4QMDSystem* G4QMDReaction::system
private

Definition at line 96 of file G4QMDReaction.hh.

Referenced by ApplyYourself().

◆ theBlockedList

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

◆ theBlockedListElements

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

◆ 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 G4WilsonAbrasionModel::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(), 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(), G4WilsonAbrasionModel::GetAbradedNucleons(), G4CascadeInterface::NoInteraction(), G4CascadeInterface::Propagate(), G4NeutrinoNucleusModel::RecoilDeexcitation(), G4LEHadronProtonElastic::~G4LEHadronProtonElastic(), G4LEnp::~G4LEnp(), and G4LFission::~G4LFission().

◆ theXS

G4VCrossSectionDataSet* G4QMDReaction::theXS
private

Definition at line 124 of file G4QMDReaction.hh.

Referenced by ApplyYourself(), and G4QMDReaction().

◆ verboseLevel

G4int G4HadronicInteraction::verboseLevel
protectedinherited

Definition at line 177 of file G4HadronicInteraction.hh.

Referenced by G4WilsonAbrasionModel::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::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(), G4WilsonAbrasionModel::SetUseAblation(), G4HadronicInteraction::SetVerboseLevel(), G4WilsonAbrasionModel::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: