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

#include <G4ParticleHPElasticFS.hh>

Inheritance diagram for G4ParticleHPElasticFS:
G4ParticleHPFinalState

Public Member Functions

G4HadFinalStateApplyYourself (const G4HadProjectile &theTrack)
 
 G4ParticleHPElasticFS ()
 
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)
 
 ~G4ParticleHPElasticFS ()
 

Protected Member Functions

void adjust_final_state (G4LorentzVector)
 

Protected Attributes

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

Private Attributes

G4int frameFlag
 
G4int repFlag
 
G4double targetMass
 
G4double tE_of_repFlag3
 
G4ParticleHPLegendreStoretheCoefficients
 
G4ParticleHPInterpolator theInt
 
G4ParticleHPFastLegendre theLegend
 
G4ParticleHPPartialtheProbArray
 

Detailed Description

Definition at line 46 of file G4ParticleHPElasticFS.hh.

Constructor & Destructor Documentation

◆ G4ParticleHPElasticFS()

G4ParticleHPElasticFS::G4ParticleHPElasticFS ( )

◆ ~G4ParticleHPElasticFS()

G4ParticleHPElasticFS::~G4ParticleHPElasticFS ( )
inline

Definition at line 51 of file G4ParticleHPElasticFS.hh.

52 {
53 if(theCoefficients!=0) delete theCoefficients;
54 if(theProbArray!=0) delete theProbArray;
55 }

References theCoefficients, and theProbArray.

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 * G4ParticleHPElasticFS::ApplyYourself ( const G4HadProjectile theTrack)
virtual

Reimplemented from G4ParticleHPFinalState.

Definition at line 210 of file G4ParticleHPElasticFS.cc.

211{
212 if (theResult.Get() == NULL) theResult.Put(new G4HadFinalState);
213 theResult.Get()->Clear();
214 G4double eKinetic = theTrack.GetKineticEnergy();
215 const G4HadProjectile *incidentParticle = &theTrack;
216 G4ReactionProduct theNeutron(const_cast<G4ParticleDefinition*>(incidentParticle->GetDefinition() ));
217 theNeutron.SetMomentum(incidentParticle->Get4Momentum().vect() );
218 theNeutron.SetKineticEnergy(eKinetic);
219
220 G4ReactionProduct theTarget;
221 G4Nucleus aNucleus;
222 G4ThreeVector neuVelo =
223 (1./incidentParticle->GetDefinition()->GetPDGMass())*theNeutron.GetMomentum();
224 theTarget =
225 aNucleus.GetBiasedThermalNucleus(targetMass, neuVelo, theTrack.GetMaterial()->GetTemperature());
226
227 // Neutron and target defined as G4ReactionProducts
228 // Prepare Lorentz transformation to lab
229
230 G4ThreeVector the3Neutron = theNeutron.GetMomentum();
231 G4double nEnergy = theNeutron.GetTotalEnergy();
232 G4ThreeVector the3Target = theTarget.GetMomentum();
233 G4double tEnergy = theTarget.GetTotalEnergy();
234 G4ReactionProduct theCMS;
235 G4double totE = nEnergy+tEnergy;
236 G4ThreeVector the3CMS = the3Target+the3Neutron;
237 theCMS.SetMomentum(the3CMS);
238 G4double cmsMom = std::sqrt(the3CMS*the3CMS);
239 G4double sqrts = std::sqrt((totE-cmsMom)*(totE+cmsMom));
240 theCMS.SetMass(sqrts);
241 theCMS.SetTotalEnergy(totE);
242
243 // Data come as function of n-energy in nuclear rest frame
244 G4ReactionProduct boosted;
245 boosted.Lorentz(theNeutron, theTarget);
246 eKinetic = boosted.GetKineticEnergy(); // get kinetic energy for scattering
247 G4double cosTh = -2;
248
249 if (repFlag == 1) {
250 cosTh = theCoefficients->SampleElastic(eKinetic);
251
252 } else if (repFlag == 2) {
253 cosTh = theProbArray->Sample(eKinetic);
254
255 } else if (repFlag == 3) {
256 if (eKinetic <= tE_of_repFlag3) {
257 cosTh = theCoefficients->SampleElastic(eKinetic);
258 } else {
259 cosTh = theProbArray->Sample(eKinetic);
260 }
261
262 } else if (repFlag == 0) {
263 cosTh = 2.*G4UniformRand() - 1.;
264
265 } else {
266 G4cout << "Unusable number for repFlag: repFlag=" << repFlag << G4endl;
267 throw G4HadronicException(__FILE__, __LINE__,
268 "G4ParticleHPElasticFS::Init -- unusable number for repFlag");
269 }
270
271 if (cosTh < -1.1) { return 0; }
272
274 G4double cosPhi = std::cos(phi);
275 G4double sinPhi = std::sin(phi);
276 G4double theta = std::acos(cosTh);
277 G4double sinth = std::sin(theta);
278
279 if (frameFlag == 1) {
280 // Projectile scattering values cosTh are in target rest frame
281 // In this frame, do relativistic calculation of scattered projectile and
282 // target 4-momenta
283
284 theNeutron.Lorentz(theNeutron, theTarget);
285 G4double mN = theNeutron.GetMass();
286 G4double Pinit = theNeutron.GetTotalMomentum(); // Incident momentum
287 G4double Einit = theNeutron.GetTotalEnergy(); // Incident energy
288 G4double mT = theTarget.GetMass();
289
290 G4double ratio = mT/mN;
291 G4double sqt = std::sqrt(ratio*ratio - 1.0 + cosTh*cosTh);
292 G4double beta = Pinit/(mT + Einit); // CMS beta
293 G4double denom = 1. - beta*beta*cosTh*cosTh;
294 G4double term1 = cosTh*(Einit*ratio + mN)/(mN*ratio + Einit);
295 G4double pN = beta*mN*(term1 + sqt)/denom;
296
297 // Get the scattered momentum and rotate it in theta and phi
298 G4ThreeVector pDir = theNeutron.GetMomentum()/Pinit;
299 G4double px = pN*pDir.x();
300 G4double py = pN*pDir.y();
301 G4double pz = pN*pDir.z();
302
303 G4ThreeVector pcmRot;
304 pcmRot.setX(px*cosTh*cosPhi - py*sinPhi + pz*sinth*cosPhi);
305 pcmRot.setY(px*cosTh*sinPhi + py*cosPhi + pz*sinth*sinPhi);
306 pcmRot.setZ(-px*sinth + pz*cosTh);
307 theNeutron.SetMomentum(pcmRot);
308 G4double eN = std::sqrt(pN*pN + mN*mN); // Scattered neutron energy
309 theNeutron.SetTotalEnergy(eN);
310
311 // Get the scattered target momentum
312 G4ReactionProduct toLab(-1.*theTarget);
313 theTarget.SetMomentum(pDir*Pinit - pcmRot);
314 G4double eT = Einit - eN + mT;
315 theTarget.SetTotalEnergy(eT);
316
317 // Now back to lab frame
318 theNeutron.Lorentz(theNeutron, toLab);
319 theTarget.Lorentz(theTarget, toLab);
320
321 //111005 Protection for not producing 0 kinetic energy target
322 if (theNeutron.GetKineticEnergy() <= 0)
323 theNeutron.SetTotalEnergy(theNeutron.GetMass()*(1. + G4Pow::GetInstance()->powA(10, -15.65) ) );
324 if (theTarget.GetKineticEnergy() <= 0)
325 theTarget.SetTotalEnergy(theTarget.GetMass()*(1. + G4Pow::GetInstance()->powA(10, -15.65) ) );
326
327 } else if (frameFlag == 2) {
328 // Projectile scattering values cosTh taken from center of mass tabulation
329
330 G4LorentzVector proj(nEnergy, the3Neutron);
331 G4LorentzVector targ(tEnergy, the3Target);
332 G4ThreeVector boostToCM = proj.findBoostToCM(targ);
333 proj.boost(boostToCM);
334 targ.boost(boostToCM);
335
336 // Rotate projectile and target momenta by CM scattering angle
337 // Note: at this point collision axis is not along z axis, due to
338 // momentum given target nucleus by thermal process
339 G4double px = proj.px();
340 G4double py = proj.py();
341 G4double pz = proj.pz();
342
343 G4ThreeVector pcmRot;
344 pcmRot.setX(px*cosTh*cosPhi - py*sinPhi + pz*sinth*cosPhi);
345 pcmRot.setY(px*cosTh*sinPhi + py*cosPhi + pz*sinth*sinPhi);
346 pcmRot.setZ(-px*sinth + pz*cosTh);
347 proj.setVect(pcmRot);
348 targ.setVect(-pcmRot);
349
350 // Back to lab frame
351 proj.boost(-boostToCM);
352 targ.boost(-boostToCM);
353
354 theNeutron.SetMomentum(proj.vect() );
355 theNeutron.SetTotalEnergy(proj.e() );
356
357 theTarget.SetMomentum(targ.vect() );
358 theTarget.SetTotalEnergy(targ.e() );
359
360 //080904 Add Protection for very low energy (1e-6eV) scattering
361 if (theNeutron.GetKineticEnergy() <= 0) {
362 theNeutron.SetTotalEnergy(theNeutron.GetMass()*(1. + G4Pow::GetInstance()->powA(10, -15.65) ) );
363 }
364
365 //080904 Add Protection for very low energy (1e-6eV) scattering
366 if (theTarget.GetKineticEnergy() <= 0) {
367 theTarget.SetTotalEnergy(theTarget.GetMass()*(1. + G4Pow::GetInstance()->powA(10, -15.65) ) );
368 }
369
370 } else {
371 G4cout << "Value of frameFlag (1=LAB, 2=CMS): " << frameFlag;
372 throw G4HadronicException(__FILE__, __LINE__,
373 "G4ParticleHPElasticFS::ApplyYourSelf frameflag incorrect");
374 }
375
376 // Everything is now in the lab frame
377 // Set energy change and momentum change
378 theResult.Get()->SetEnergyChange(theNeutron.GetKineticEnergy());
379 theResult.Get()->SetMomentumChange(theNeutron.GetMomentum().unit());
380
381 // Make recoil a G4DynamicParticle
382 G4DynamicParticle* theRecoil = new G4DynamicParticle;
383 theRecoil->SetDefinition(G4IonTable::GetIonTable()->GetIon(static_cast<G4int>(theBaseZ),
384 static_cast<G4int>(theBaseA), 0) );
385 theRecoil->SetMomentum(theTarget.GetMomentum());
386 theResult.Get()->AddSecondary(theRecoil, secID);
387
388 // Postpone the tracking of the primary neutron
390 return theResult.Get();
391}
@ suspend
double x() const
void setY(double)
void setZ(double)
void setX(double)
Hep3Vector vect() const
void Put(const value_type &val) const
Definition: G4Cache.hh:321
void SetStatusChange(G4HadFinalStateStatus aS)
void SetEnergyChange(G4double anEnergy)
void SetMomentumChange(const G4ThreeVector &aV)
const G4Material * GetMaterial() const
const G4ParticleDefinition * GetDefinition() const
G4double GetKineticEnergy() const
const G4LorentzVector & Get4Momentum() const
G4double GetTemperature() const
Definition: G4Material.hh:178
G4ReactionProduct GetBiasedThermalNucleus(G4double aMass, G4ThreeVector aVelocity, G4double temp=-1) const
Definition: G4Nucleus.cc:118
G4double SampleElastic(G4double anEnergy)
G4double Sample(G4double x)
static G4Pow * GetInstance()
Definition: G4Pow.cc:41
G4double powA(G4double A, G4double y) const
Definition: G4Pow.hh:230
void SetMomentum(const G4double x, const G4double y, const G4double z)
void SetTotalEnergy(const G4double en)
G4double GetKineticEnergy() const
G4double GetTotalEnergy() const
G4ThreeVector GetMomentum() const
void Lorentz(const G4ReactionProduct &p1, const G4ReactionProduct &p2)
G4double GetMass() const
void SetMass(const G4double mas)

References G4HadFinalState::AddSecondary(), anonymous_namespace{G4PionRadiativeDecayChannel.cc}::beta, CLHEP::HepLorentzVector::boost(), G4HadFinalState::Clear(), CLHEP::HepLorentzVector::e(), CLHEP::HepLorentzVector::findBoostToCM(), frameFlag, G4cout, G4endl, G4UniformRand, G4Cache< VALTYPE >::Get(), G4HadProjectile::Get4Momentum(), G4Nucleus::GetBiasedThermalNucleus(), G4HadProjectile::GetDefinition(), G4Pow::GetInstance(), G4IonTable::GetIonTable(), G4HadProjectile::GetKineticEnergy(), G4ReactionProduct::GetKineticEnergy(), G4ReactionProduct::GetMass(), G4HadProjectile::GetMaterial(), G4ReactionProduct::GetMomentum(), G4ParticleDefinition::GetPDGMass(), G4Material::GetTemperature(), G4ReactionProduct::GetTotalEnergy(), G4ReactionProduct::GetTotalMomentum(), G4ReactionProduct::Lorentz(), G4Pow::powA(), G4Cache< VALTYPE >::Put(), CLHEP::HepLorentzVector::px(), CLHEP::HepLorentzVector::py(), CLHEP::HepLorentzVector::pz(), repFlag, G4ParticleHPPartial::Sample(), G4ParticleHPLegendreStore::SampleElastic(), G4ParticleHPFinalState::secID, G4DynamicParticle::SetDefinition(), G4HadFinalState::SetEnergyChange(), G4ReactionProduct::SetKineticEnergy(), G4ReactionProduct::SetMass(), G4ReactionProduct::SetMomentum(), G4DynamicParticle::SetMomentum(), G4HadFinalState::SetMomentumChange(), G4HadFinalState::SetStatusChange(), G4ReactionProduct::SetTotalEnergy(), CLHEP::HepLorentzVector::setVect(), CLHEP::Hep3Vector::setX(), CLHEP::Hep3Vector::setY(), CLHEP::Hep3Vector::setZ(), suspend, targetMass, tE_of_repFlag3, G4ParticleHPFinalState::theBaseA, G4ParticleHPFinalState::theBaseZ, theCoefficients, theProbArray, G4ParticleHPFinalState::theResult, twopi, CLHEP::Hep3Vector::unit(), CLHEP::HepLorentzVector::vect(), and CLHEP::Hep3Vector::x().

◆ 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 G4ParticleHPElasticFS::Init ( G4double  A,
G4double  Z,
G4int  M,
G4String dirName,
G4String aFSType,
G4ParticleDefinition  
)
virtual

Implements G4ParticleHPFinalState.

Definition at line 70 of file G4ParticleHPElasticFS.cc.

73{
74 G4String tString = "/FS";
75 G4bool dbool;
77 theNames.GetName(static_cast<G4int>(A), static_cast<G4int>(Z), M, dirName, tString, dbool);
78 G4String filename = aFile.GetName();
79 SetAZMs( A, Z, M, aFile );
80 //theBaseA = aFile.GetA();
81 //theBaseZ = aFile.GetZ();
82 if (!dbool) {
83 hasAnyData = false;
84 hasFSData = false;
85 hasXsec = false;
86 return;
87 }
88
89 //130205 For compressed data files
90 std::istringstream theData(std::ios::in);
92 //130205 END
93 theData >> repFlag >> targetMass >> frameFlag;
94
95 if (repFlag == 1) {
96 G4int nEnergy;
97 theData >> nEnergy;
100 G4double temp, energy;
101 G4int tempdep, nLegendre;
102 G4int i, ii;
103 for (i=0; i < nEnergy; i++) {
104 theData >> temp >> energy >> tempdep >> nLegendre;
105 energy *=eV;
106 theCoefficients->Init(i, energy, nLegendre);
108 G4double coeff = 0;
109 for (ii = 0; ii < nLegendre; ii++) {
110 // load legendre coefficients.
111 theData >> coeff;
112 theCoefficients->SetCoeff(i, ii+1, coeff); // @@@HPW@@@
113 }
114 }
115
116 } else if (repFlag == 2) {
117 G4int nEnergy;
118 theData >> nEnergy;
119 theProbArray = new G4ParticleHPPartial(nEnergy, nEnergy);
121 G4double temp, energy;
122 G4int tempdep, nPoints;
123 for (G4int i = 0; i < nEnergy; i++) {
124 theData >> temp >> energy >> tempdep >> nPoints;
125 energy *= eV;
126 theProbArray->InitInterpolation(i, theData);
127 theProbArray->SetT(i, temp);
129 G4double prob, costh;
130 for (G4int ii = 0; ii < nPoints; ii++) {
131 // fill probability arrays.
132 theData >> costh >> prob;
133 theProbArray->SetX(i, ii, costh);
134 theProbArray->SetY(i, ii, prob);
135 }
137 }
138
139 } else if (repFlag == 3) {
140 G4int nEnergy_Legendre;
141 theData >> nEnergy_Legendre;
142 if (nEnergy_Legendre <= 0 ) {
143 std::stringstream iss;
144 iss << "G4ParticleHPElasticFS::Init Data Error repFlag is 3 but nEnergy_Legendre <= 0";
145 iss << "Z, A and M of problematic file is " << theNDLDataZ << ", "
146 << theNDLDataA << " and " << theNDLDataM << " respectively.";
147 throw G4HadronicException(__FILE__, __LINE__, iss.str() );
148 }
149 theCoefficients = new G4ParticleHPLegendreStore( nEnergy_Legendre );
151 G4double temp, energy;
152 G4int tempdep, nLegendre;
153
154 for (G4int i = 0; i < nEnergy_Legendre; i++) {
155 theData >> temp >> energy >> tempdep >> nLegendre;
156 energy *=eV;
157 theCoefficients->Init( i , energy , nLegendre );
158 theCoefficients->SetTemperature( i , temp );
159 G4double coeff = 0;
160 for (G4int ii = 0; ii < nLegendre; ii++) {
161 // load legendre coefficients.
162 theData >> coeff;
163 theCoefficients->SetCoeff(i, ii+1, coeff); // @@@HPW@@@
164 }
165 }
166
168
169 G4int nEnergy_Prob;
170 theData >> nEnergy_Prob;
171 theProbArray = new G4ParticleHPPartial( nEnergy_Prob , nEnergy_Prob );
173 G4int nPoints;
174 for (G4int i = 0; i < nEnergy_Prob; i++) {
175 theData >> temp >> energy >> tempdep >> nPoints;
176 energy *= eV;
177
178 // consistency check
179 if (i == 0)
180 //if ( energy != tE_of_repFlag3 ) //110620TK This is too tight for 32bit machines
181 if (std::abs(energy - tE_of_repFlag3) / tE_of_repFlag3 > 1.0e-15)
182 G4cout << "Warning Transition Energy of repFlag3 is not consistent." << G4endl;
183
184 theProbArray->InitInterpolation( i , theData );
185 theProbArray->SetT( i , temp );
186 theProbArray->SetX( i , energy );
187 G4double prob, costh;
188 for (G4int ii = 0; ii < nPoints; ii++) {
189 // fill probability arrays.
190 theData >> costh >> prob;
191 theProbArray->SetX( i , ii , costh );
192 theProbArray->SetY( i , ii , prob );
193 }
195 }
196
197 } else if (repFlag==0) {
198 theData >> frameFlag;
199
200 } else {
201 G4cout << "unusable number for repFlag: repFlag="<<repFlag<<G4endl;
202 throw G4HadronicException(__FILE__, __LINE__, "G4ParticleHPElasticFS::Init -- unusable number for repFlag");
203 }
204 //130205 For compressed data files(theData changed from ifstream to istringstream)
205 //theData.close();
206}
#define M(row, col)
static constexpr double eV
Definition: G4SIunits.hh:201
const G4int Z[17]
const G4double A[17]
void SetAZMs(G4double anA, G4double aZ, G4int aM, G4ParticleHPDataUsed used)
void SetCoeff(G4int i, G4int l, G4double coeff)
void Init(G4int i, G4double e, G4int n)
void SetTemperature(G4int i, G4double temp)
void InitInterpolation(std::istream &aDataFile)
void GetDataStream(G4String, std::istringstream &iss)
G4ParticleHPDataUsed GetName(G4int A, G4int Z, G4String base, G4String rest, G4bool &active)
void SetT(G4int i, G4double x)
void SetX(G4int i, G4double x)
void SetY(G4int i, G4int j, G4double y)
void InitInterpolation(G4int i, std::istream &aDataFile)
G4double energy(const ThreeVector &p, const G4double m)

References A, G4ParticleHPPartial::DoneSetXY(), G4INCL::KinematicsUtils::energy(), eV, frameFlag, G4cout, G4endl, G4ParticleHPManager::GetDataStream(), G4ParticleHPManager::GetInstance(), G4ParticleHPDataUsed::GetName(), G4ParticleHPNames::GetName(), G4ParticleHPFinalState::hasAnyData, G4ParticleHPFinalState::hasFSData, G4ParticleHPFinalState::hasXsec, G4ParticleHPLegendreStore::Init(), G4ParticleHPPartial::InitInterpolation(), G4ParticleHPLegendreStore::InitInterpolation(), M, repFlag, G4ParticleHPFinalState::SetAZMs(), G4ParticleHPLegendreStore::SetCoeff(), G4ParticleHPPartial::SetT(), G4ParticleHPLegendreStore::SetTemperature(), G4ParticleHPPartial::SetX(), G4ParticleHPPartial::SetY(), targetMass, tE_of_repFlag3, theCoefficients, G4ParticleHPFinalState::theNames, G4ParticleHPFinalState::theNDLDataA, G4ParticleHPFinalState::theNDLDataM, G4ParticleHPFinalState::theNDLDataZ, theProbArray, 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 * G4ParticleHPElasticFS::New ( )
inlinevirtual

Implements G4ParticleHPFinalState.

Definition at line 58 of file G4ParticleHPElasticFS.hh.

References G4ParticleHPElasticFS().

◆ 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

◆ frameFlag

G4int G4ParticleHPElasticFS::frameFlag
private

Definition at line 69 of file G4ParticleHPElasticFS.hh.

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

◆ hasAnyData

G4bool G4ParticleHPFinalState::hasAnyData
protectedinherited

◆ hasFSData

G4bool G4ParticleHPFinalState::hasFSData
protectedinherited

◆ hasXsec

G4bool G4ParticleHPFinalState::hasXsec
protectedinherited

◆ repFlag

G4int G4ParticleHPElasticFS::repFlag
private

Definition at line 65 of file G4ParticleHPElasticFS.hh.

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

◆ secID

G4int G4ParticleHPFinalState::secID
protectedinherited

Definition at line 140 of file G4ParticleHPFinalState.hh.

Referenced by G4ParticleHPFinalState::adjust_final_state(), G4ParticleHPCaptureFS::ApplyYourself(), 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::G4ParticleHPCaptureFS(), G4ParticleHPD2AInelasticFS::G4ParticleHPD2AInelasticFS(), G4ParticleHPDAInelasticFS::G4ParticleHPDAInelasticFS(), G4ParticleHPDInelasticFS::G4ParticleHPDInelasticFS(), 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 G4ParticleHPElasticFS::targetMass
private

Definition at line 68 of file G4ParticleHPElasticFS.hh.

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

◆ tE_of_repFlag3

G4double G4ParticleHPElasticFS::tE_of_repFlag3
private

Definition at line 67 of file G4ParticleHPElasticFS.hh.

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

◆ theBaseA

G4double G4ParticleHPFinalState::theBaseA
protectedinherited

◆ theBaseM

G4int G4ParticleHPFinalState::theBaseM
protectedinherited

◆ theBaseZ

G4double G4ParticleHPFinalState::theBaseZ
protectedinherited

◆ theCoefficients

G4ParticleHPLegendreStore* G4ParticleHPElasticFS::theCoefficients
private

◆ theInt

G4ParticleHPInterpolator G4ParticleHPElasticFS::theInt
private

Definition at line 73 of file G4ParticleHPElasticFS.hh.

◆ theLegend

G4ParticleHPFastLegendre G4ParticleHPElasticFS::theLegend
private

Definition at line 75 of file G4ParticleHPElasticFS.hh.

◆ theNames

G4ParticleHPNames G4ParticleHPFinalState::theNames
protectedinherited

◆ theNDLDataA

G4int G4ParticleHPFinalState::theNDLDataA
protectedinherited

◆ theNDLDataM

G4int G4ParticleHPFinalState::theNDLDataM
protectedinherited

◆ theNDLDataZ

G4int G4ParticleHPFinalState::theNDLDataZ
protectedinherited

◆ theProbArray

G4ParticleHPPartial* G4ParticleHPElasticFS::theProbArray
private

◆ 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(), G4ParticleHPCaptureFS::ApplyYourself(), G4ParticleHPD2AInelasticFS::ApplyYourself(), G4ParticleHPDAInelasticFS::ApplyYourself(), G4ParticleHPDInelasticFS::ApplyYourself(), 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: