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

#include <G4ParticleHPCaptureFS.hh>

Inheritance diagram for G4ParticleHPCaptureFS:
G4ParticleHPFinalState

Public Member Functions

G4HadFinalStateApplyYourself (const G4HadProjectile &theTrack)
 
 G4ParticleHPCaptureFS ()
 
G4double GetA ()
 
G4int GetM ()
 
G4double GetN ()
 
virtual G4ParticleHPVectorGetXsec ()
 
virtual G4double GetXsec (G4double)
 
G4double GetZ ()
 
G4bool HasAnyData ()
 
G4bool HasFSData ()
 
G4bool HasXsec ()
 
void Init (G4double A, G4double Z, G4int M, G4String &dirName, G4String &aFSType, G4ParticleDefinition *)
 
void Init (G4double A, G4double Z, G4String &dirName, G4String &aFSType, G4ParticleDefinition *projectile)
 
G4ParticleHPFinalStateNew ()
 
void SetA_Z (G4double anA, G4double aZ, G4int aM=0)
 
void SetAZMs (G4double anA, G4double aZ, G4int aM, G4ParticleHPDataUsed used)
 
void SetProjectile (G4ParticleDefinition *projectile)
 
 ~G4ParticleHPCaptureFS ()
 

Protected Member Functions

void adjust_final_state (G4LorentzVector)
 

Protected Attributes

G4bool hasAnyData
 
G4bool hasFSData
 
G4bool hasXsec
 
G4int secID
 
G4double theBaseA
 
G4int theBaseM
 
G4double theBaseZ
 
G4int theNDLDataA
 
G4int theNDLDataM
 
G4int theNDLDataZ
 
G4ParticleDefinitiontheProjectile
 
G4Cache< G4HadFinalState * > theResult
 

Private Attributes

G4bool hasExactMF6
 
G4double targetMass
 
G4ParticleHPPhotonDist theFinalStatePhotons
 
G4ParticleHPEnAngCorrelation theMF6FinalState
 
G4ParticleHPNames theNames
 

Detailed Description

Definition at line 42 of file G4ParticleHPCaptureFS.hh.

Constructor & Destructor Documentation

◆ G4ParticleHPCaptureFS()

G4ParticleHPCaptureFS::G4ParticleHPCaptureFS ( )

◆ ~G4ParticleHPCaptureFS()

G4ParticleHPCaptureFS::~G4ParticleHPCaptureFS ( )
inline

Definition at line 48 of file G4ParticleHPCaptureFS.hh.

49 {
50 }

Member Function Documentation

◆ adjust_final_state()

void G4ParticleHPFinalState::adjust_final_state ( G4LorentzVector  init_4p_lab)
protectedinherited

Definition at line 47 of file G4ParticleHPFinalState.cc.

48{
49
50 G4double minimum_energy = 1*keV;
51
52 if ( G4ParticleHPManager::GetInstance()->GetDoNotAdjustFinalState() ) return;
53
54 G4int nSecondaries = theResult.Get()->GetNumberOfSecondaries();
55
56 G4int sum_Z = 0;
57 G4int sum_A = 0;
58 G4int max_SecZ = 0;
59 G4int max_SecA = 0;
60 G4int imaxA = -1;
61 for ( int i = 0 ; i < nSecondaries ; i++ )
62 {
63 //G4cout << "G4ParticleHPFinalState::adjust_final_state theResult.Get()->GetSecondary( i )->GetParticle()->GetDefinition()->GetParticleName() = " << theResult.Get()->GetSecondary( i )->GetParticle()->GetDefinition()->GetParticleName() << G4endl;
65 max_SecZ = std::max ( max_SecZ , theResult.Get()->GetSecondary( i )->GetParticle()->GetDefinition()->GetAtomicNumber() );
67 max_SecA = std::max ( max_SecA , theResult.Get()->GetSecondary( i )->GetParticle()->GetDefinition()->GetAtomicMass() );
68 if ( theResult.Get()->GetSecondary( i )->GetParticle()->GetDefinition()->GetAtomicMass() == max_SecA ) imaxA = i;
69#ifdef G4PHPDEBUG
70 if( std::getenv("G4ParticleHPDebug")) G4cout << "G4ParticleHPFinalState::adjust_final_stat SECO " << i << " " <<theResult.Get()->GetSecondary( i )->GetParticle()->GetDefinition()->GetParticleName() << G4endl;
71#endif
72
73 }
74
75 G4ParticleDefinition* resi_pd = 0;
76
77 G4double baseZNew = theBaseZ;
78 G4double baseANew = theBaseA;
80 baseANew ++;
81 } else if( theProjectile == G4Proton::Proton() ) {
82 baseZNew ++;
83 baseANew ++;
84 } else if( theProjectile == G4Deuteron::Deuteron() ) {
85 baseZNew ++;
86 baseANew += 2;
87 } else if( theProjectile == G4Triton::Triton() ) {
88 baseZNew ++;
89 baseANew += 3;
90 } else if( theProjectile == G4He3::He3() ) {
91 baseZNew += 2;
92 baseANew += 3;
93 } else if( theProjectile == G4Alpha::Alpha() ) {
94 baseZNew += 2;
95 baseANew += 4;
96 }
97
98#ifdef G4PHPDEBUG
99 if( std::getenv("G4ParticleHPDebug")) G4cout << "G4ParticleHPFinalState::adjust_final_stat BaseZ " << baseZNew << " BaseA " << baseANew << " sum_Z " << sum_Z << " sum_A " << sum_A << G4endl;
100#endif
101
102 G4bool needOneMoreSec = false;
103 G4ParticleDefinition* oneMoreSec_pd = 0;
104 if ( (int)(baseZNew - sum_Z) == 0 && (int)(baseANew - sum_A) == 0 )
105 {
106 //All secondaries are already created;
107 resi_pd = theResult.Get()->GetSecondary( imaxA )->GetParticle()->GetDefinition();
108 }
109 else
110 {
111 if ( max_SecA >= int(baseANew - sum_A) )
112 {
113 //Most heavy secondary is interpreted as residual
114 resi_pd = theResult.Get()->GetSecondary( imaxA )->GetParticle()->GetDefinition();
115 needOneMoreSec = true;
116 }
117 else
118 {
119 //creation of residual is requierd
120 resi_pd = G4IonTable::GetIonTable()->GetIon ( int(baseZNew - sum_Z) , (int)(baseANew - sum_A) , 0.0 );
121 }
122
123 if ( needOneMoreSec )
124 {
125 if ( int(baseZNew - sum_Z) == 0 && (int)(baseANew - sum_A) > 0 )
126 {
127 //In this case, one neutron is added to secondaries
128 if ( int(baseANew - sum_A) > 1 ) G4cout << "More than one neutron is required for the balance of baryon number!" << G4endl;
129 oneMoreSec_pd = G4Neutron::Neutron();
130 }
131 else
132 {
133#ifdef G4PHPDEBUG
134 if( std::getenv("G4ParticleHPDebug")) G4cout << this << "G4ParticleHPFinalState oneMoreSec_pd Z " << baseZNew << " - " << sum_Z << " A " << baseANew << " - " << sum_A << " projectile " << theProjectile->GetParticleName() << G4endl;
135#endif
136 oneMoreSec_pd = G4IonTable::GetIonTable()->GetIon ( int(baseZNew - sum_Z) , (int)(baseANew - sum_A) , 0.0 );
137 if( !oneMoreSec_pd ) {
138 G4cerr << this << "G4ParticleHPFinalState oneMoreSec_pd Z " << baseZNew << " - " << sum_Z << " A " << baseANew << " - " << sum_A << " projectile " << theProjectile->GetParticleName() << G4endl;
139 G4Exception("G4ParticleHPFinalState:adjust_final_state",
140 "Warning",
142 "No adjustment will be done!");
143 return;
144 }
145 }
146 }
147
148 if ( resi_pd == 0 )
149 {
150 // theNDLDataZ,A has the Z and A of used NDL file
151 G4double ndlZNew = theNDLDataZ;
152 G4double ndlANew = theNDLDataA;
154 ndlANew ++;
155 } else if( theProjectile == G4Proton::Proton() ) {
156 ndlZNew ++;
157 ndlANew ++;
158 } else if( theProjectile == G4Deuteron::Deuteron() ) {
159 ndlZNew ++;
160 ndlANew += 2;
161 } else if( theProjectile == G4Triton::Triton() ) {
162 ndlZNew ++;
163 ndlANew += 3;
164 } else if( theProjectile == G4He3::He3() ) {
165 ndlZNew += 2;
166 ndlANew += 3;
167 } else if( theProjectile == G4Alpha::Alpha() ) {
168 ndlZNew += 2;
169 ndlANew += 4;
170 }
171 // theNDLDataZ,A has the Z and A of used NDL file
172 if ( (int)(ndlZNew - sum_Z) == 0 && (int)(ndlANew - sum_A) == 0 )
173 {
174 G4int dif_Z = ( int ) ( theNDLDataZ - theBaseZ );
175 G4int dif_A = ( int ) ( theNDLDataA - theBaseA );
176 resi_pd = G4IonTable::GetIonTable()->GetIon ( max_SecZ - dif_Z , max_SecA - dif_A , 0.0 );
177 if( !resi_pd ) {
178 G4cerr << "G4ParticleHPFinalState resi_pd Z " << max_SecZ << " - " << dif_Z << " A " << max_SecA << " - " << dif_A << " projectile " << theProjectile->GetParticleName() << G4endl;
179 G4Exception("G4ParticleHPFinalState:adjust_final_state",
180 "Warning",
182 "No adjustment will be done!");
183 return;
184 }
185
186 for ( int i = 0 ; i < nSecondaries ; i++ )
187 {
188 if ( theResult.Get()->GetSecondary( i )->GetParticle()->GetDefinition()->GetAtomicNumber() == max_SecZ
189 && theResult.Get()->GetSecondary( i )->GetParticle()->GetDefinition()->GetAtomicMass() == max_SecA )
190 {
192 p = p * resi_pd->GetPDGMass()/ G4IonTable::GetIonTable()->GetIon ( max_SecZ , max_SecA , 0.0 )->GetPDGMass();
193 theResult.Get()->GetSecondary( i )->GetParticle()->SetDefinition( resi_pd );
195 }
196 }
197 }
198 }
199 }
200
201
202 G4LorentzVector secs_4p_lab( 0.0 );
203
205 G4double fast = 0;
206 G4double slow = 1;
207 G4int ifast = 0;
208 G4int islow = 0;
209 G4int ires = -1;
210
211 for ( G4int i = 0 ; i < n_sec ; i++ )
212 {
213
214 //G4cout << "HP_DB " << i
215 // << " " << theResult.GetSecondary( i )->GetParticle()->GetDefinition()->GetParticleName()
216 // << " 4p " << theResult.GetSecondary( i )->GetParticle()->Get4Momentum()
217 // << " ke " << theResult.GetSecondary( i )->GetParticle()->Get4Momentum().e() - theResult.GetSecondary( i )->GetParticle()->GetDefinition()->GetPDGMass()
218 // << G4endl;
219
220 secs_4p_lab += theResult.Get()->GetSecondary( i )->GetParticle()->Get4Momentum();
221
222 G4double beta = 0;
224 {
226 }
227 else
228 {
229 beta = 1;
230 }
231
232 if ( theResult.Get()->GetSecondary( i )->GetParticle()->GetDefinition() == resi_pd ) ires = i;
233
234 if ( slow > beta && beta != 0 )
235 {
236 slow = beta;
237 islow = i;
238 }
239
240 if ( fast <= beta )
241 {
242 if ( fast != 1 )
243 {
244 fast = beta;
245 ifast = i;
246 }
247 else
248 {
249// fast is already photon then check E
251 if ( e > theResult.Get()->GetSecondary( ifast )->GetParticle()->Get4Momentum().e() )
252 {
253// among photons, the highest E becomes the fastest
254 ifast = i;
255 }
256 }
257 }
258 }
259
260
261 G4LorentzVector dif_4p = init_4p_lab - secs_4p_lab;
262
263 //G4cout << "HP_DB dif_4p " << init_4p_lab - secs_4p_lab << G4endl;
264 //G4cout << "HP_DB dif_3p mag " << ( dif_4p.v() ).mag() << G4endl;
265 //G4cout << "HP_DB dif_e " << dif_4p.e() - ( dif_4p.v() ).mag()<< G4endl;
266
267 G4LorentzVector p4(0);
268 if ( ires == -1 )
269 {
270// Create and Add Residual Nucleus
271 ires = nSecondaries;
272 nSecondaries += 1;
273
274 G4DynamicParticle* res = new G4DynamicParticle ( resi_pd , dif_4p.v() );
275 theResult.Get()->AddSecondary ( res, secID );
276
277 p4 = res->Get4Momentum();
278 if ( slow > p4.beta() )
279 {
280 slow = p4.beta();
281 islow = ires;
282 }
283 dif_4p = init_4p_lab - ( secs_4p_lab + p4 );
284 }
285
286 if ( needOneMoreSec && oneMoreSec_pd)
287 //
288 // fca: this is not a fix, this is a crash avoidance...
289 // fca: the baryon number is still wrong, most probably because it
290 // fca: should have been decreased, but since we could not create a particle
291 // fca: we just do not add it
292 //
293 {
294 nSecondaries += 1;
295 G4DynamicParticle* one = new G4DynamicParticle ( oneMoreSec_pd , dif_4p.v() );
296 theResult.Get()->AddSecondary ( one, secID );
297 p4 = one->Get4Momentum();
298 if ( slow > p4.beta() )
299 {
300 slow = p4.beta();
301 islow = nSecondaries-1; //Because the first is 0th, so the last becomes "nSecondaries-1"
302 }
303 dif_4p = init_4p_lab - ( secs_4p_lab + p4 );
304 }
305
306 //Which is bigger dif_p or dif_e
307
308 if ( dif_4p.v().mag() < std::abs( dif_4p.e() ) )
309 {
310
311 // Adjust p
312 //if ( dif_4p.v().mag() < 1*MeV )
313 if ( minimum_energy < dif_4p.v().mag() && dif_4p.v().mag() < 1*MeV )
314 {
315
316 nSecondaries += 1;
317 theResult.Get()->AddSecondary ( new G4DynamicParticle ( G4Gamma::Gamma() , dif_4p.v() ), secID );
318
319 }
320 else
321 {
322 //G4cout << "HP_DB Difference in dif_p is too large (>1MeV) or too small(<1keV) to adjust, so that give up tuning" << G4endl;
323 }
324
325 }
326 else
327 {
328
329 // dif_p > dif_e
330 // at first momentum
331 // Move residual momentum
332
333 p4 = theResult.Get()->GetSecondary( ires )->GetParticle()->Get4Momentum();
334 theResult.Get()->GetSecondary( ires )->GetParticle()->SetMomentum( p4.v() + dif_4p.v() );
335 dif_4p = init_4p_lab - ( secs_4p_lab - p4 + theResult.Get()->GetSecondary( ires )->GetParticle()->Get4Momentum() );
336
337 //G4cout << "HP_DB new residual kinetic energy " << theResult.GetSecondary( ires )->GetParticle()->GetKineticEnergy() << G4endl;
338
339 }
340
341 G4double dif_e = dif_4p.e() - ( dif_4p.v() ).mag();
342 //G4cout << "HP_DB dif_e " << dif_e << G4endl;
343
344 if ( dif_e > 0 )
345 {
346
347// create 2 gamma
348
349 nSecondaries += 2;
350 G4double e1 = ( dif_4p.e() -dif_4p.v().mag() ) / 2;
351
352 if ( minimum_energy < e1 )
353 {
354 G4double costh = 2.*G4UniformRand()-1.;
356 G4ThreeVector dir( std::sin(std::acos(costh))*std::cos(phi),
357 std::sin(std::acos(costh))*std::sin(phi),
358 costh);
361 }
362 else
363 {
364 //G4cout << "HP_DB Difference is too small(<1keV) to adjust, so that neglect it" << G4endl;
365 }
366
367 }
368 else //dif_e < 0
369 {
370
371// At first reduce KE of the fastest secondary;
374 G4ThreeVector dir = ( theResult.Get()->GetSecondary( ifast )->GetParticle()->GetMomentum() ).unit();
375
376 //G4cout << "HP_DB ifast " << ifast << " ke0 " << ke0 << G4endl;
377
378 if ( ke0 + dif_e > 0 )
379 {
380 theResult.Get()->GetSecondary( ifast )->GetParticle()->SetKineticEnergy( ke0 + dif_e );
381 G4ThreeVector dp = p0 - theResult.Get()->GetSecondary( ifast )->GetParticle()->GetMomentum();
382
384 //theResult.GetSecondary( islow )->GetParticle()->SetMomentum( p - dif_e*dir );
385 theResult.Get()->GetSecondary( islow )->GetParticle()->SetMomentum( p + dp );
386 }
387 else
388 {
389 //G4cout << "HP_DB Difference in dif_e too large ( <0MeV ) to adjust, so that give up tuning" << G4endl;
390 }
391
392 }
393
394}
static const G4double e1[44]
@ JustWarning
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
Definition: G4Exception.cc:35
static constexpr double twopi
Definition: G4SIunits.hh:56
static constexpr double keV
Definition: G4SIunits.hh:202
static constexpr double MeV
Definition: G4SIunits.hh:200
double G4double
Definition: G4Types.hh:83
bool G4bool
Definition: G4Types.hh:86
int G4int
Definition: G4Types.hh:85
G4GLOB_DLL std::ostream G4cerr
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout
#define G4UniformRand()
Definition: Randomize.hh:52
double mag() const
Hep3Vector v() const
static G4Alpha * Alpha()
Definition: G4Alpha.cc:88
value_type & Get() const
Definition: G4Cache.hh:315
static G4Deuteron * Deuteron()
Definition: G4Deuteron.cc:93
void SetDefinition(const G4ParticleDefinition *aParticleDefinition)
G4ParticleDefinition * GetDefinition() const
G4LorentzVector Get4Momentum() const
G4double GetKineticEnergy() const
void SetMomentum(const G4ThreeVector &momentum)
G4ThreeVector GetMomentum() const
void SetKineticEnergy(G4double aEnergy)
static G4Gamma * Gamma()
Definition: G4Gamma.cc:85
void AddSecondary(G4DynamicParticle *aP, G4int mod=-1)
std::size_t GetNumberOfSecondaries() const
G4HadSecondary * GetSecondary(size_t i)
G4DynamicParticle * GetParticle()
static G4He3 * He3()
Definition: G4He3.cc:93
G4ParticleDefinition * GetIon(G4int Z, G4int A, G4int lvl=0)
Definition: G4IonTable.cc:522
static G4IonTable * GetIonTable()
Definition: G4IonTable.cc:170
static G4Neutron * Neutron()
Definition: G4Neutron.cc:103
G4int GetAtomicNumber() const
G4int GetAtomicMass() const
const G4String & GetParticleName() const
G4ParticleDefinition * theProjectile
G4Cache< G4HadFinalState * > theResult
static G4ParticleHPManager * GetInstance()
static G4Proton * Proton()
Definition: G4Proton.cc:92
static G4Triton * Triton()
Definition: G4Triton.cc:93
T max(const T t1, const T t2)
brief Return the largest of the two arguments

References G4HadFinalState::AddSecondary(), G4Alpha::Alpha(), CLHEP::HepLorentzVector::beta(), anonymous_namespace{G4PionRadiativeDecayChannel.cc}::beta, G4Deuteron::Deuteron(), CLHEP::HepLorentzVector::e(), e1, G4cerr, G4cout, G4endl, G4Exception(), G4UniformRand, G4Gamma::Gamma(), G4Cache< VALTYPE >::Get(), G4DynamicParticle::Get4Momentum(), G4ParticleDefinition::GetAtomicMass(), G4ParticleDefinition::GetAtomicNumber(), G4DynamicParticle::GetDefinition(), G4ParticleHPManager::GetInstance(), G4IonTable::GetIon(), G4IonTable::GetIonTable(), G4DynamicParticle::GetKineticEnergy(), G4DynamicParticle::GetMomentum(), G4HadFinalState::GetNumberOfSecondaries(), G4HadSecondary::GetParticle(), G4ParticleDefinition::GetParticleName(), G4ParticleDefinition::GetPDGMass(), G4HadFinalState::GetSecondary(), G4He3::He3(), JustWarning, keV, CLHEP::Hep3Vector::mag(), G4INCL::Math::max(), MeV, G4Neutron::Neutron(), G4Proton::Proton(), G4ParticleHPFinalState::secID, G4DynamicParticle::SetDefinition(), G4DynamicParticle::SetKineticEnergy(), G4DynamicParticle::SetMomentum(), G4ParticleHPFinalState::theBaseA, G4ParticleHPFinalState::theBaseZ, G4ParticleHPFinalState::theNDLDataA, G4ParticleHPFinalState::theNDLDataZ, G4ParticleHPFinalState::theProjectile, G4ParticleHPFinalState::theResult, G4Triton::Triton(), twopi, and CLHEP::HepLorentzVector::v().

Referenced by G4ParticleHPInelasticBaseFS::BaseApply(), and G4ParticleHPInelasticCompFS::CompositeApply().

◆ ApplyYourself()

G4HadFinalState * G4ParticleHPCaptureFS::ApplyYourself ( const G4HadProjectile theTrack)
virtual

Reimplemented from G4ParticleHPFinalState.

Definition at line 61 of file G4ParticleHPCaptureFS.cc.

62 {
63
64 if ( theResult.Get() == NULL ) theResult.Put( new G4HadFinalState );
65 theResult.Get()->Clear();
66
67 G4int i;
68
69// prepare neutron
70 G4double eKinetic = theTrack.GetKineticEnergy();
71 const G4HadProjectile *incidentParticle = &theTrack;
72 G4ReactionProduct theNeutron( const_cast<G4ParticleDefinition *>(incidentParticle->GetDefinition() ) );
73 theNeutron.SetMomentum( incidentParticle->Get4Momentum().vect() );
74 theNeutron.SetKineticEnergy( eKinetic );
75
76 // Prepare target
77 G4ReactionProduct theTarget;
78 G4Nucleus aNucleus;
79 G4double eps = 0.0001;
80 if (targetMass < 500*MeV) targetMass =
81 (G4NucleiProperties::GetNuclearMass(static_cast<G4int>(theBaseA+eps), static_cast<G4int>(theBaseZ+eps) )) /
83 G4ThreeVector neutronVelocity = 1./G4Neutron::Neutron()->GetPDGMass()*theNeutron.GetMomentum();
84 G4double temperature = theTrack.GetMaterial()->GetTemperature();
85 theTarget = aNucleus.GetBiasedThermalNucleus(targetMass, neutronVelocity, temperature);
87
88 // Put neutron in nucleus rest system
89 theNeutron.Lorentz(theNeutron, theTarget);
90 eKinetic = theNeutron.GetKineticEnergy();
91
92 // Sample the photons
93 G4ReactionProductVector * thePhotons = 0;
94 if ( HasFSData() && !G4ParticleHPManager::GetInstance()->GetUseOnlyPhotoEvaporation() )
95 {
96 //NDL has final state data
97 if ( hasExactMF6 ) {
98 theMF6FinalState.SetTarget(theTarget);
100 thePhotons = theMF6FinalState.Sample( eKinetic );
101 } else {
102 thePhotons = theFinalStatePhotons.GetPhotons(eKinetic);
103 }
104 if ( thePhotons == NULL ) {
105 throw G4HadronicException(__FILE__, __LINE__, "Final state data for photon is not properly allocated");
106 }
107 }
108 else
109 {
110 //NDL does not have final state data or forced to use PhotoEvaporation model
111 G4ThreeVector aCMSMomentum = theNeutron.GetMomentum()+theTarget.GetMomentum();
112 G4LorentzVector p4(aCMSMomentum, theTarget.GetTotalEnergy() + theNeutron.GetTotalEnergy());
113 G4Fragment nucleus(static_cast<G4int>(theBaseA+1), static_cast<G4int>(theBaseZ) ,p4);
114 G4PhotonEvaporation photonEvaporation;
115 // T. K. add
116 photonEvaporation.SetICM( TRUE );
117 G4FragmentVector* products = photonEvaporation.BreakItUp(nucleus);
118 G4FragmentVector::iterator it;
119 thePhotons = new G4ReactionProductVector;
120 for(it=products->begin(); it!=products->end(); it++)
121 {
123 // T. K. add
124 if ( (*it)->GetParticleDefinition() != 0 )
125 theOne->SetDefinition( (*it)->GetParticleDefinition() );
126 else
127 theOne->SetDefinition( G4Gamma::Gamma() ); // this definiion will be over writen
128
129 // T. K. comment out below line
130 //theOne->SetDefinition( G4Gamma::Gamma() );
132 if ( (*it)->GetMomentum().mag() > 10*MeV)
133 theOne->SetDefinition(theTable->GetIon(static_cast<G4int>(theBaseZ), static_cast<G4int>(theBaseA+1), 0) );
134
135 if ( (*it)->GetExcitationEnergy() > 1.0e-2*eV) {
136 G4double ex = (*it)->GetExcitationEnergy();
138 aPhoton->SetDefinition( G4Gamma::Gamma() );
139 aPhoton->SetMomentum( (*it)->GetMomentum().vect().unit() * ex );
140 //aPhoton->SetTotalEnergy( ex ); //will be calculated from momentum
141 thePhotons->push_back(aPhoton);
142 }
143
144 theOne->SetMomentum( (*it)->GetMomentum().vect() * ( (*it)->GetMomentum().t() - (*it)->GetExcitationEnergy() ) / (*it)->GetMomentum().t() ) ;
145 thePhotons->push_back(theOne);
146 delete *it;
147 }
148 delete products;
149 }
150
151 // Add them to the final state
152 G4int nPhotons = 0;
153 nPhotons=thePhotons->size();
154
156 if ( ! G4ParticleHPManager::GetInstance()->GetDoNotAdjustFinalState() ) {
157//Make at least one photon
158//101203 TK
159 if ( nPhotons == 0 )
160 {
162 theOne->SetDefinition( G4Gamma::Gamma() );
163 // Bug #1745 DHW G4double theta = pi*G4UniformRand();
164 G4double costheta = 2.*G4UniformRand()-1.;
165 G4double theta = std::acos(costheta);
167 G4double sinth = std::sin(theta);
168 G4ThreeVector direction(sinth*std::cos(phi), sinth*std::sin(phi), costheta);
169 theOne->SetMomentum(direction);
170 thePhotons->push_back(theOne);
171 nPhotons++; // 0 -> 1
172 }
173//One photon case: energy set to Q-value
174//101203 TK
175 //if ( nPhotons == 1 )
176 if ( nPhotons == 1 && thePhotons->operator[](0)->GetDefinition()->GetBaryonNumber() == 0 )
177 {
178 G4ThreeVector direction = thePhotons->operator[](0)->GetMomentum().unit();
179
181 - G4IonTable::GetIonTable()->GetIonMass(static_cast<G4int>(theBaseZ), static_cast<G4int>(theBaseA+1), 0);
182
183 thePhotons->operator[](0)->SetMomentum( Q*direction );
184 }
185//
186 }
187
188 // back to lab system
189 for(i=0; i<nPhotons; i++)
190 {
191 thePhotons->operator[](i)->Lorentz(*(thePhotons->operator[](i)), -1*theTarget);
192 }
193
194 // Recoil, if only one gamma
195 //if (1==nPhotons)
196 if ( nPhotons == 1 && thePhotons->operator[](0)->GetDefinition()->GetBaryonNumber() == 0 )
197 {
200 ->GetIon(static_cast<G4int>(theBaseZ), static_cast<G4int>(theBaseA+1), 0);
201 theOne->SetDefinition(aRecoil);
202 // Now energy;
203 // Can be done slightly better @
204 G4ThreeVector aMomentum = theTrack.Get4Momentum().vect()
205 +theTarget.GetMomentum()
206 -thePhotons->operator[](0)->GetMomentum();
207
208 //TKDB 140520
209 //G4ThreeVector theMomUnit = aMomentum.unit();
210 //G4double aKinEnergy = theTrack.GetKineticEnergy()
211 // +theTarget.GetKineticEnergy(); // gammas come from Q-value
212 //G4double theResMass = aRecoil->GetPDGMass();
213 //G4double theResE = aRecoil->GetPDGMass()+aKinEnergy;
214 //G4double theAbsMom = std::sqrt(theResE*theResE - theResMass*theResMass);
215 //G4ThreeVector theMomentum = theAbsMom*theMomUnit;
216 //theOne->SetMomentum(theMomentum);
217
218 theOne->SetMomentum(aMomentum);
219 theResult.Get()->AddSecondary(theOne, secID);
220 }
221
222 // Now fill in the gammas.
223 for(i=0; i<nPhotons; i++)
224 {
225 // back to lab system
227 theOne->SetDefinition(thePhotons->operator[](i)->GetDefinition());
228 theOne->SetMomentum(thePhotons->operator[](i)->GetMomentum());
229 theResult.Get()->AddSecondary(theOne, secID);
230 delete thePhotons->operator[](i);
231 }
232 delete thePhotons;
233
234//101203TK
235 G4bool residual = false;
237 ->GetIon(static_cast<G4int>(theBaseZ), static_cast<G4int>(theBaseA+1), 0);
238 for ( std::size_t j = 0 ; j != theResult.Get()->GetNumberOfSecondaries() ; j++ )
239 {
240 if ( theResult.Get()->GetSecondary(j)->GetParticle()->GetDefinition() == aRecoil ) residual = true;
241 }
242
243 if ( residual == false )
244 {
245 G4int nNonZero = 0;
246 G4LorentzVector p_photons(0,0,0,0);
247 for ( std::size_t j = 0 ; j != theResult.Get()->GetNumberOfSecondaries() ; j++ )
248 {
249 p_photons += theResult.Get()->GetSecondary(j)->GetParticle()->Get4Momentum();
250 // To many 0 momentum photons -> Check PhotonDist
251 if ( theResult.Get()->GetSecondary(j)->GetParticle()->Get4Momentum().e() > 0 ) nNonZero++;
252 }
253
254 // Can we include kinetic energy here?
255 G4double deltaE = ( theTrack.Get4Momentum().e() + theTarget.GetTotalEnergy() )
256 - ( p_photons.e() + aRecoil->GetPDGMass() );
257
258//Add photons
259 if ( nPhotons - nNonZero > 0 )
260 {
261 //G4cout << "TKDB G4ParticleHPCaptureFS::ApplyYourself we will create additional " << nPhotons - nNonZero << " photons" << G4endl;
262 std::vector<G4double> vRand;
263 vRand.push_back( 0.0 );
264 for ( G4int j = 0 ; j != nPhotons - nNonZero - 1 ; j++ )
265 {
266 vRand.push_back( G4UniformRand() );
267 }
268 vRand.push_back( 1.0 );
269 std::sort( vRand.begin(), vRand.end() );
270
271 std::vector<G4double> vEPhoton;
272 for ( G4int j = 0 ; j < (G4int)vRand.size() - 1 ; j++ )
273 {
274 vEPhoton.push_back( deltaE * ( vRand[j+1] - vRand[j] ) );
275 }
276 std::sort( vEPhoton.begin(), vEPhoton.end() );
277
278 for ( G4int j = 0 ; j < nPhotons - nNonZero - 1 ; j++ )
279 {
280 //Isotopic in LAB OK?
281 // Bug # 1745 DHW G4double theta = pi*G4UniformRand();
282 G4double costheta = 2.*G4UniformRand()-1.;
283 G4double theta = std::acos(costheta);
285 G4double sinth = std::sin(theta);
286 G4double en = vEPhoton[j];
287 G4ThreeVector tempVector(en*sinth*std::cos(phi), en*sinth*std::sin(phi), en*costheta);
288
289 p_photons += G4LorentzVector ( tempVector, tempVector.mag() );
291 theOne->SetDefinition( G4Gamma::Gamma() );
292 theOne->SetMomentum( tempVector );
293 theResult.Get()->AddSecondary(theOne, secID);
294 }
295
296// Add last photon
298 theOne->SetDefinition( G4Gamma::Gamma() );
299// For better momentum conservation
300 G4ThreeVector lastPhoton = -p_photons.vect().unit()*vEPhoton.back();
301 p_photons += G4LorentzVector( lastPhoton , lastPhoton.mag() );
302 theOne->SetMomentum( lastPhoton );
303 theResult.Get()->AddSecondary(theOne, secID);
304 }
305
306//Add residual
308 G4ThreeVector aMomentum = theTrack.Get4Momentum().vect() + theTarget.GetMomentum()
309 - p_photons.vect();
310 theOne->SetDefinition(aRecoil);
311 theOne->SetMomentum( aMomentum );
312 theResult.Get()->AddSecondary(theOne, secID);
313
314 }
315//101203TK END
316
317// clean up the primary neutron
319 return theResult.Get();
320 }
static const G4double eps
std::vector< G4Fragment * > G4FragmentVector
Definition: G4Fragment.hh:64
@ stopAndKill
CLHEP::HepLorentzVector G4LorentzVector
std::vector< G4ReactionProduct * > G4ReactionProductVector
static constexpr double eV
Definition: G4SIunits.hh:201
#define TRUE
Definition: Globals.hh:27
Hep3Vector unit() const
Hep3Vector vect() const
void Put(const value_type &val) const
Definition: G4Cache.hh:321
void SetStatusChange(G4HadFinalStateStatus aS)
const G4Material * GetMaterial() const
const G4ParticleDefinition * GetDefinition() const
G4double GetKineticEnergy() const
const G4LorentzVector & Get4Momentum() const
G4double GetIonMass(G4int Z, G4int A, G4int nL=0, G4int lvl=0) const
Definition: G4IonTable.cc:1517
G4double GetTemperature() const
Definition: G4Material.hh:178
static G4double GetNuclearMass(const G4double A, const G4double Z)
G4ReactionProduct GetBiasedThermalNucleus(G4double aMass, G4ThreeVector aVelocity, G4double temp=-1) const
Definition: G4Nucleus.cc:118
G4ParticleHPPhotonDist theFinalStatePhotons
G4ParticleHPEnAngCorrelation theMF6FinalState
void SetProjectileRP(G4ReactionProduct &aIncidentPart)
void SetTarget(G4ReactionProduct &aTarget)
G4ReactionProductVector * Sample(G4double anEnergy)
G4ReactionProductVector * GetPhotons(G4double anEnergy)
virtual void SetICM(G4bool)
G4FragmentVector * BreakItUp(const G4Fragment &theNucleus)
void SetMomentum(const G4double x, const G4double y, const G4double z)
G4double GetTotalEnergy() const
G4ThreeVector GetMomentum() const
void SetDefinitionAndUpdateE(const G4ParticleDefinition *aParticleDefinition)
void SetDefinition(const G4ParticleDefinition *aParticleDefinition)
static double Q[]

References G4HadFinalState::AddSecondary(), G4PhotonEvaporation::BreakItUp(), G4HadFinalState::Clear(), CLHEP::HepLorentzVector::e(), eps, eV, G4UniformRand, G4Gamma::Gamma(), G4Cache< VALTYPE >::Get(), G4DynamicParticle::Get4Momentum(), G4HadProjectile::Get4Momentum(), G4Nucleus::GetBiasedThermalNucleus(), G4DynamicParticle::GetDefinition(), G4HadProjectile::GetDefinition(), G4ParticleHPManager::GetInstance(), G4IonTable::GetIon(), G4IonTable::GetIonMass(), G4IonTable::GetIonTable(), G4HadProjectile::GetKineticEnergy(), G4ReactionProduct::GetKineticEnergy(), G4HadProjectile::GetMaterial(), G4ReactionProduct::GetMomentum(), G4NucleiProperties::GetNuclearMass(), G4HadSecondary::GetParticle(), G4ParticleDefinition::GetPDGMass(), G4ParticleHPPhotonDist::GetPhotons(), G4HadFinalState::GetSecondary(), G4Material::GetTemperature(), G4ReactionProduct::GetTotalEnergy(), hasExactMF6, G4ParticleHPFinalState::HasFSData(), G4ReactionProduct::Lorentz(), CLHEP::Hep3Vector::mag(), MeV, G4Neutron::Neutron(), G4Cache< VALTYPE >::Put(), Q, G4ParticleHPEnAngCorrelation::Sample(), G4ParticleHPFinalState::secID, G4DynamicParticle::SetDefinition(), G4ReactionProduct::SetDefinition(), G4ReactionProduct::SetDefinitionAndUpdateE(), G4PhotonEvaporation::SetICM(), G4ReactionProduct::SetKineticEnergy(), G4ReactionProduct::SetMomentum(), G4DynamicParticle::SetMomentum(), G4ParticleHPEnAngCorrelation::SetProjectileRP(), G4HadFinalState::SetStatusChange(), G4ParticleHPEnAngCorrelation::SetTarget(), stopAndKill, targetMass, G4ParticleHPFinalState::theBaseA, G4ParticleHPFinalState::theBaseZ, theFinalStatePhotons, theMF6FinalState, G4ParticleHPFinalState::theResult, TRUE, twopi, CLHEP::Hep3Vector::unit(), and CLHEP::HepLorentzVector::vect().

◆ GetA()

G4double G4ParticleHPFinalState::GetA ( void  )
inlineinherited

Definition at line 104 of file G4ParticleHPFinalState.hh.

104{ return theBaseA; }

References G4ParticleHPFinalState::theBaseA.

◆ GetM()

G4int G4ParticleHPFinalState::GetM ( )
inlineinherited

◆ GetN()

G4double G4ParticleHPFinalState::GetN ( )
inlineinherited

◆ GetXsec() [1/2]

virtual G4ParticleHPVector * G4ParticleHPFinalState::GetXsec ( )
inlinevirtualinherited

Reimplemented in G4ParticleHPFissionBaseFS, G4ParticleHPInelasticBaseFS, and G4ParticleHPInelasticCompFS.

Definition at line 99 of file G4ParticleHPFinalState.hh.

99{ return 0; }

◆ GetXsec() [2/2]

virtual G4double G4ParticleHPFinalState::GetXsec ( G4double  )
inlinevirtualinherited

◆ GetZ()

G4double G4ParticleHPFinalState::GetZ ( void  )
inlineinherited

◆ HasAnyData()

G4bool G4ParticleHPFinalState::HasAnyData ( )
inlineinherited

◆ HasFSData()

G4bool G4ParticleHPFinalState::HasFSData ( )
inlineinherited

◆ HasXsec()

G4bool G4ParticleHPFinalState::HasXsec ( )
inlineinherited

Definition at line 94 of file G4ParticleHPFinalState.hh.

94{ return hasXsec; }

References G4ParticleHPFinalState::hasXsec.

Referenced by G4ParticleHPChannel::DumpInfo().

◆ Init() [1/2]

void G4ParticleHPCaptureFS::Init ( G4double  A,
G4double  Z,
G4int  M,
G4String dirName,
G4String aFSType,
G4ParticleDefinition  
)
virtual

Implements G4ParticleHPFinalState.

Definition at line 323 of file G4ParticleHPCaptureFS.cc.

324 {
325
326 //TK110430 BEGIN
327 std::stringstream ss;
328 ss << static_cast<G4int>(Z);
329 G4String sZ;
330 ss >> sZ;
331 ss.clear();
332 ss << static_cast<G4int>(A);
333 G4String sA;
334 ss >> sA;
335
336 ss.clear();
337 G4String sM;
338 if ( M > 0 )
339 {
340 ss << "m";
341 ss << M;
342 ss >> sM;
343 ss.clear();
344 }
345
346 G4String element_name = theNames.GetName( static_cast<G4int>(Z)-1 );
347 G4String filenameMF6 = dirName+"/FSMF6/"+sZ+"_"+sA+sM+"_"+element_name;
348 //std::ifstream dummyIFS(filenameMF6, std::ios::in);
349 //if ( dummyIFS.good() == true ) hasExactMF6=true;
350 std::istringstream theData(std::ios::in);
351 G4ParticleHPManager::GetInstance()->GetDataStream(filenameMF6,theData);
352
353 //TK110430 Only use MF6MT102 which has exactly same A and Z
354 //Even _nat_ do not select and there is no _nat_ case in ENDF-VII.0
355 if ( theData.good() == true ) {
356 hasExactMF6=true;
357 theMF6FinalState.Init(theData);
358 //theData.close();
359 return;
360 }
361 //TK110430 END
362
363
364 G4String tString = "/FS";
365 G4bool dbool;
366 G4ParticleHPDataUsed aFile = theNames.GetName(static_cast<G4int>(A), static_cast<G4int>(Z), M, dirName, tString, dbool);
367
368 G4String filename = aFile.GetName();
369 SetAZMs( A, Z, M, aFile );
370 //theBaseA = A;
371 //theBaseZ = G4int(Z+.5);
372 if(!dbool || ( Z<2.5 && ( std::abs(theBaseZ - Z)>0.0001 || std::abs(theBaseA - A)>0.0001)))
373 {
374 hasAnyData = false;
375 hasFSData = false;
376 hasXsec = false;
377 return;
378 }
379 //std::ifstream theData(filename, std::ios::in);
380 //std::istringstream theData(std::ios::in);
381 theData.clear();
384 if(hasFSData)
385 {
389 }
390 //theData.close();
391 }
#define M(row, col)
const G4int Z[17]
const G4double A[17]
void Init(std::istream &aDataFile)
void SetAZMs(G4double anA, G4double aZ, G4int aM, G4ParticleHPDataUsed used)
void GetDataStream(G4String, std::istringstream &iss)
G4ParticleHPDataUsed GetName(G4int A, G4int Z, G4String base, G4String rest, G4bool &active)
void InitEnergies(std::istream &aDataFile)
void InitAngular(std::istream &aDataFile)
G4bool InitMean(std::istream &aDataFile)

References A, G4ParticleHPManager::GetDataStream(), G4ParticleHPManager::GetInstance(), G4ParticleHPDataUsed::GetName(), G4ParticleHPNames::GetName(), G4ParticleHPPhotonDist::GetTargetMass(), G4ParticleHPFinalState::hasAnyData, hasExactMF6, G4ParticleHPFinalState::hasFSData, G4ParticleHPFinalState::hasXsec, G4ParticleHPEnAngCorrelation::Init(), G4ParticleHPPhotonDist::InitAngular(), G4ParticleHPPhotonDist::InitEnergies(), G4ParticleHPPhotonDist::InitMean(), M, G4ParticleHPFinalState::SetAZMs(), targetMass, G4ParticleHPFinalState::theBaseA, G4ParticleHPFinalState::theBaseZ, theFinalStatePhotons, theMF6FinalState, theNames, and Z.

◆ Init() [2/2]

void G4ParticleHPFinalState::Init ( G4double  A,
G4double  Z,
G4String dirName,
G4String aFSType,
G4ParticleDefinition projectile 
)
inlineinherited

Definition at line 76 of file G4ParticleHPFinalState.hh.

78 {
79 G4int M = 0;
80 Init ( A, Z, M, dirName, aFSType,const_cast<G4ParticleDefinition*>(projectile));
81 }
void Init(G4double A, G4double Z, G4String &dirName, G4String &aFSType, G4ParticleDefinition *projectile)

References A, G4ParticleHPFinalState::Init(), M, and Z.

Referenced by G4ParticleHPFinalState::Init(), and G4ParticleHPChannel::UpdateData().

◆ New()

G4ParticleHPFinalState * G4ParticleHPCaptureFS::New ( )
inlinevirtual

Implements G4ParticleHPFinalState.

Definition at line 54 of file G4ParticleHPCaptureFS.hh.

References G4ParticleHPCaptureFS().

◆ SetA_Z()

void G4ParticleHPFinalState::SetA_Z ( G4double  anA,
G4double  aZ,
G4int  aM = 0 
)
inlineinherited

◆ SetAZMs()

void G4ParticleHPFinalState::SetAZMs ( G4double  anA,
G4double  aZ,
G4int  aM,
G4ParticleHPDataUsed  used 
)
inlineinherited

◆ SetProjectile()

void G4ParticleHPFinalState::SetProjectile ( G4ParticleDefinition projectile)
inlineinherited

Definition at line 115 of file G4ParticleHPFinalState.hh.

116 {
117 theProjectile = projectile;
118 }

References G4ParticleHPFinalState::theProjectile.

Referenced by G4ParticleHPChannel::Register().

Field Documentation

◆ hasAnyData

G4bool G4ParticleHPFinalState::hasAnyData
protectedinherited

◆ hasExactMF6

G4bool G4ParticleHPCaptureFS::hasExactMF6
private

Definition at line 67 of file G4ParticleHPCaptureFS.hh.

Referenced by ApplyYourself(), G4ParticleHPCaptureFS(), and Init().

◆ hasFSData

G4bool G4ParticleHPFinalState::hasFSData
protectedinherited

◆ hasXsec

G4bool G4ParticleHPFinalState::hasXsec
protectedinherited

◆ secID

G4int G4ParticleHPFinalState::secID
protectedinherited

Definition at line 140 of file G4ParticleHPFinalState.hh.

Referenced by G4ParticleHPFinalState::adjust_final_state(), ApplyYourself(), G4ParticleHPElasticFS::ApplyYourself(), G4ParticleHPFissionFS::ApplyYourself(), G4ParticleHPInelasticBaseFS::BaseApply(), G4ParticleHPInelasticCompFS::CompositeApply(), G4ParticleHP2AInelasticFS::G4ParticleHP2AInelasticFS(), G4ParticleHP2N2AInelasticFS::G4ParticleHP2N2AInelasticFS(), G4ParticleHP2NAInelasticFS::G4ParticleHP2NAInelasticFS(), G4ParticleHP2NDInelasticFS::G4ParticleHP2NDInelasticFS(), G4ParticleHP2NInelasticFS::G4ParticleHP2NInelasticFS(), G4ParticleHP2NPInelasticFS::G4ParticleHP2NPInelasticFS(), G4ParticleHP2PInelasticFS::G4ParticleHP2PInelasticFS(), G4ParticleHP3AInelasticFS::G4ParticleHP3AInelasticFS(), G4ParticleHP3NAInelasticFS::G4ParticleHP3NAInelasticFS(), G4ParticleHP3NInelasticFS::G4ParticleHP3NInelasticFS(), G4ParticleHP3NPInelasticFS::G4ParticleHP3NPInelasticFS(), G4ParticleHP4NInelasticFS::G4ParticleHP4NInelasticFS(), G4ParticleHPAInelasticFS::G4ParticleHPAInelasticFS(), G4ParticleHPCaptureFS(), G4ParticleHPD2AInelasticFS::G4ParticleHPD2AInelasticFS(), G4ParticleHPDAInelasticFS::G4ParticleHPDAInelasticFS(), G4ParticleHPDInelasticFS::G4ParticleHPDInelasticFS(), G4ParticleHPElasticFS::G4ParticleHPElasticFS(), G4ParticleHPFinalState::G4ParticleHPFinalState(), G4ParticleHPFissionFS::G4ParticleHPFissionFS(), G4ParticleHPHe3InelasticFS::G4ParticleHPHe3InelasticFS(), G4ParticleHPN2AInelasticFS::G4ParticleHPN2AInelasticFS(), G4ParticleHPN2PInelasticFS::G4ParticleHPN2PInelasticFS(), G4ParticleHPN3AInelasticFS::G4ParticleHPN3AInelasticFS(), G4ParticleHPNAInelasticFS::G4ParticleHPNAInelasticFS(), G4ParticleHPND2AInelasticFS::G4ParticleHPND2AInelasticFS(), G4ParticleHPNDInelasticFS::G4ParticleHPNDInelasticFS(), G4ParticleHPNHe3InelasticFS::G4ParticleHPNHe3InelasticFS(), G4ParticleHPNInelasticFS::G4ParticleHPNInelasticFS(), G4ParticleHPNPAInelasticFS::G4ParticleHPNPAInelasticFS(), G4ParticleHPNPInelasticFS::G4ParticleHPNPInelasticFS(), G4ParticleHPNT2AInelasticFS::G4ParticleHPNT2AInelasticFS(), G4ParticleHPNTInelasticFS::G4ParticleHPNTInelasticFS(), G4ParticleHPNXInelasticFS::G4ParticleHPNXInelasticFS(), G4ParticleHPPAInelasticFS::G4ParticleHPPAInelasticFS(), G4ParticleHPPDInelasticFS::G4ParticleHPPDInelasticFS(), G4ParticleHPPInelasticFS::G4ParticleHPPInelasticFS(), G4ParticleHPPTInelasticFS::G4ParticleHPPTInelasticFS(), G4ParticleHPT2AInelasticFS::G4ParticleHPT2AInelasticFS(), G4ParticleHPTInelasticFS::G4ParticleHPTInelasticFS(), and G4ParticleHPInelasticCompFS::use_nresp71_model().

◆ targetMass

G4double G4ParticleHPCaptureFS::targetMass
private

Definition at line 62 of file G4ParticleHPCaptureFS.hh.

Referenced by ApplyYourself(), G4ParticleHPCaptureFS(), and Init().

◆ theBaseA

G4double G4ParticleHPFinalState::theBaseA
protectedinherited

◆ theBaseM

G4int G4ParticleHPFinalState::theBaseM
protectedinherited

◆ theBaseZ

G4double G4ParticleHPFinalState::theBaseZ
protectedinherited

◆ theFinalStatePhotons

G4ParticleHPPhotonDist G4ParticleHPCaptureFS::theFinalStatePhotons
private

Definition at line 64 of file G4ParticleHPCaptureFS.hh.

Referenced by ApplyYourself(), and Init().

◆ theMF6FinalState

G4ParticleHPEnAngCorrelation G4ParticleHPCaptureFS::theMF6FinalState
private

Definition at line 66 of file G4ParticleHPCaptureFS.hh.

Referenced by ApplyYourself(), and Init().

◆ theNames

G4ParticleHPNames G4ParticleHPCaptureFS::theNames
private

Definition at line 69 of file G4ParticleHPCaptureFS.hh.

Referenced by Init().

◆ theNDLDataA

G4int G4ParticleHPFinalState::theNDLDataA
protectedinherited

◆ theNDLDataM

G4int G4ParticleHPFinalState::theNDLDataM
protectedinherited

◆ theNDLDataZ

G4int G4ParticleHPFinalState::theNDLDataZ
protectedinherited

◆ theProjectile

G4ParticleDefinition* G4ParticleHPFinalState::theProjectile
protectedinherited

◆ theResult

G4Cache< G4HadFinalState* > G4ParticleHPFinalState::theResult
protectedinherited

Definition at line 129 of file G4ParticleHPFinalState.hh.

Referenced by G4ParticleHPFinalState::adjust_final_state(), G4FissionLibrary::ApplyYourself(), G4ParticleHP2AInelasticFS::ApplyYourself(), G4ParticleHP2N2AInelasticFS::ApplyYourself(), G4ParticleHP2NAInelasticFS::ApplyYourself(), G4ParticleHP2NDInelasticFS::ApplyYourself(), G4ParticleHP2NInelasticFS::ApplyYourself(), G4ParticleHP2NPInelasticFS::ApplyYourself(), G4ParticleHP2PInelasticFS::ApplyYourself(), G4ParticleHP3AInelasticFS::ApplyYourself(), G4ParticleHP3NAInelasticFS::ApplyYourself(), G4ParticleHP3NInelasticFS::ApplyYourself(), G4ParticleHP3NPInelasticFS::ApplyYourself(), G4ParticleHP4NInelasticFS::ApplyYourself(), G4ParticleHPAInelasticFS::ApplyYourself(), ApplyYourself(), G4ParticleHPD2AInelasticFS::ApplyYourself(), G4ParticleHPDAInelasticFS::ApplyYourself(), G4ParticleHPDInelasticFS::ApplyYourself(), G4ParticleHPElasticFS::ApplyYourself(), G4ParticleHPFissionFS::ApplyYourself(), G4ParticleHPHe3InelasticFS::ApplyYourself(), G4ParticleHPN2AInelasticFS::ApplyYourself(), G4ParticleHPN2PInelasticFS::ApplyYourself(), G4ParticleHPN3AInelasticFS::ApplyYourself(), G4ParticleHPNAInelasticFS::ApplyYourself(), G4ParticleHPND2AInelasticFS::ApplyYourself(), G4ParticleHPNDInelasticFS::ApplyYourself(), G4ParticleHPNHe3InelasticFS::ApplyYourself(), G4ParticleHPNInelasticFS::ApplyYourself(), G4ParticleHPNPAInelasticFS::ApplyYourself(), G4ParticleHPNPInelasticFS::ApplyYourself(), G4ParticleHPNT2AInelasticFS::ApplyYourself(), G4ParticleHPNTInelasticFS::ApplyYourself(), G4ParticleHPNXInelasticFS::ApplyYourself(), G4ParticleHPPAInelasticFS::ApplyYourself(), G4ParticleHPPDInelasticFS::ApplyYourself(), G4ParticleHPPInelasticFS::ApplyYourself(), G4ParticleHPPTInelasticFS::ApplyYourself(), G4ParticleHPT2AInelasticFS::ApplyYourself(), G4ParticleHPTInelasticFS::ApplyYourself(), G4ParticleHPInelasticBaseFS::BaseApply(), G4ParticleHPInelasticCompFS::CompositeApply(), G4ParticleHPFinalState::G4ParticleHPFinalState(), G4ParticleHPInelasticCompFS::use_nresp71_model(), and G4ParticleHPFinalState::~G4ParticleHPFinalState().


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