G4PreCompoundEmission Class Reference

#include <G4PreCompoundEmission.hh>


Public Member Functions

 G4PreCompoundEmission ()
 ~G4PreCompoundEmission ()
void SetDefaultModel ()
void SetHETCModel ()
G4ReactionProductPerformEmission (G4Fragment &aFragment)
G4double GetTotalProbability (const G4Fragment &aFragment)
void Initialize (const G4Fragment &aFragment)
void SetOPTxs (G4int)
void UseSICB (G4bool)


Detailed Description

Definition at line 52 of file G4PreCompoundEmission.hh.


Constructor & Destructor Documentation

G4PreCompoundEmission::G4PreCompoundEmission (  ) 

Definition at line 55 of file G4PreCompoundEmission.cc.

References G4PreCompoundParameters::GetAddress(), G4VPreCompoundEmissionFactory::GetFragmentVector(), and G4Pow::GetInstance().

00056 {
00057   theFragmentsFactory = new G4PreCompoundEmissionFactory();
00058   theFragmentsVector = 
00059     new G4PreCompoundFragmentVector(theFragmentsFactory->GetFragmentVector());
00060   g4pow = G4Pow::GetInstance();
00061   theParameters = G4PreCompoundParameters::GetAddress();
00062 }

G4PreCompoundEmission::~G4PreCompoundEmission (  ) 

Definition at line 64 of file G4PreCompoundEmission.cc.

00065 {
00066   if (theFragmentsFactory) { delete theFragmentsFactory; }
00067   if (theFragmentsVector)  { delete theFragmentsVector; }
00068 }


Member Function Documentation

G4double G4PreCompoundEmission::GetTotalProbability ( const G4Fragment aFragment  )  [inline]

Definition at line 104 of file G4PreCompoundEmission.hh.

References G4PreCompoundFragmentVector::CalculateProbabilities().

Referenced by G4PreCompoundModel::DeExcite().

00105 {
00106   return theFragmentsVector->CalculateProbabilities(aFragment);
00107 }

void G4PreCompoundEmission::Initialize ( const G4Fragment aFragment  )  [inline]

Definition at line 110 of file G4PreCompoundEmission.hh.

References G4PreCompoundFragmentVector::Initialize().

Referenced by G4PreCompoundModel::DeExcite().

00111 {
00112   theFragmentsVector->Initialize(aFragment);
00113 }

G4ReactionProduct * G4PreCompoundEmission::PerformEmission ( G4Fragment aFragment  ) 

Definition at line 102 of file G4PreCompoundEmission.cc.

References G4PreCompoundFragmentVector::ChooseFragment(), G4cout, G4endl, G4VPreCompoundFragment::GetA(), G4VPreCompoundFragment::GetKineticEnergy(), G4Fragment::GetMomentum(), G4VPreCompoundFragment::GetNuclearMass(), G4Fragment::GetNumberOfCharged(), G4Fragment::GetNumberOfParticles(), G4VPreCompoundFragment::GetReactionProduct(), G4VPreCompoundFragment::GetRestA(), G4VPreCompoundFragment::GetRestZ(), G4VPreCompoundFragment::GetZ(), G4Fragment::SetMomentum(), G4VPreCompoundFragment::SetMomentum(), G4Fragment::SetNumberOfCharged(), G4Fragment::SetNumberOfParticles(), and G4Fragment::SetZandA_asInt().

Referenced by G4PreCompoundModel::DeExcite().

00103 {
00104   // Choose a Fragment for emission
00105   G4VPreCompoundFragment * thePreFragment = theFragmentsVector->ChooseFragment();
00106   if (thePreFragment == 0)
00107     {
00108       G4cout <<  "G4PreCompoundEmission::PerformEmission : I couldn't choose a fragment\n"
00109              << "while trying to de-excite\n" 
00110              << aFragment << G4endl;
00111       throw G4HadronicException(__FILE__, __LINE__, "");
00112     }
00113 
00114   //G4cout << "Chosen fragment: " << G4endl;
00115   //G4cout << *thePreFragment << G4endl;
00116 
00117   // Kinetic Energy of emitted fragment
00118   G4double kinEnergyOfEmittedFragment = thePreFragment->GetKineticEnergy(aFragment);
00119   //  if(kinEnergyOfEmittedFragment < MeV) {
00120   //  G4cout << "Chosen fragment: " << G4endl;
00121   //  G4cout << *thePreFragment << G4endl;
00122   //  G4cout << "Ekin= " << kinEnergyOfEmittedFragment << G4endl;
00123     // }
00124   if(kinEnergyOfEmittedFragment < 0.0) { kinEnergyOfEmittedFragment = 0.0; }
00125   
00126   // Calculate the fragment momentum (three vector)
00127   AngularDistribution(thePreFragment,aFragment,kinEnergyOfEmittedFragment);
00128   
00129   // Mass of emittef fragment
00130   G4double EmittedMass = thePreFragment->GetNuclearMass();
00131   // Now we can calculate the four momentum 
00132   // both options are valid and give the same result but 2nd one is faster
00133   G4LorentzVector Emitted4Momentum(theFinalMomentum,
00134                                    EmittedMass + kinEnergyOfEmittedFragment);
00135     
00136   // Perform Lorentz boost
00137   G4LorentzVector Rest4Momentum = aFragment.GetMomentum();
00138   Emitted4Momentum.boost(Rest4Momentum.boostVector());  
00139 
00140   // Set emitted fragment momentum
00141   thePreFragment->SetMomentum(Emitted4Momentum);        
00142 
00143   // NOW THE RESIDUAL NUCLEUS
00144   // ------------------------
00145 
00146   Rest4Momentum -= Emitted4Momentum;
00147     
00148   // Update nucleus parameters:
00149   // --------------------------
00150 
00151   // Z and A
00152   aFragment.SetZandA_asInt(thePreFragment->GetRestZ(),
00153                            thePreFragment->GetRestA());
00154     
00155   // Number of excitons
00156   aFragment.SetNumberOfParticles(aFragment.GetNumberOfParticles()-
00157                                  thePreFragment->GetA());
00158   // Number of charges
00159   aFragment.SetNumberOfCharged(aFragment.GetNumberOfCharged()-
00160                                thePreFragment->GetZ());
00161     
00162   // Update nucleus momentum 
00163   // A check on consistence of Z, A, and mass will be performed
00164   aFragment.SetMomentum(Rest4Momentum);
00165         
00166   // Create a G4ReactionProduct 
00167   G4ReactionProduct * MyRP = thePreFragment->GetReactionProduct();
00168 
00169   //  if(kinEnergyOfEmittedFragment < MeV) {
00170   //  G4cout << "G4PreCompoundEmission::Fragment emitted" << G4endl;
00171   //  G4cout << thePreFragment << G4endl;
00172     // }
00173   return MyRP;
00174 }

void G4PreCompoundEmission::SetDefaultModel (  ) 

Definition at line 70 of file G4PreCompoundEmission.cc.

References G4VPreCompoundEmissionFactory::GetFragmentVector(), and G4PreCompoundFragmentVector::SetVector().

Referenced by G4PreCompoundModel::G4PreCompoundModel(), and G4PreCompoundModel::UseDefaultEmission().

00071 {
00072   if (theFragmentsFactory) { delete theFragmentsFactory; }
00073   theFragmentsFactory = new G4PreCompoundEmissionFactory();
00074   if (theFragmentsVector) 
00075     {
00076       theFragmentsVector->SetVector(theFragmentsFactory->GetFragmentVector());
00077     }
00078   else 
00079     {
00080       theFragmentsVector = 
00081         new G4PreCompoundFragmentVector(theFragmentsFactory->GetFragmentVector());
00082     }
00083   return;
00084 }

void G4PreCompoundEmission::SetHETCModel (  ) 

Definition at line 86 of file G4PreCompoundEmission.cc.

References G4VPreCompoundEmissionFactory::GetFragmentVector(), and G4PreCompoundFragmentVector::SetVector().

Referenced by G4PreCompoundModel::G4PreCompoundModel(), and G4PreCompoundModel::UseHETCEmission().

00087 {
00088   if (theFragmentsFactory) delete theFragmentsFactory;
00089   theFragmentsFactory = new G4HETCEmissionFactory();
00090   if (theFragmentsVector) 
00091     {
00092       theFragmentsVector->SetVector(theFragmentsFactory->GetFragmentVector());
00093     }
00094   else 
00095     {
00096       theFragmentsVector = 
00097         new G4PreCompoundFragmentVector(theFragmentsFactory->GetFragmentVector());
00098     }
00099   return;
00100 }

void G4PreCompoundEmission::SetOPTxs ( G4int   )  [inline]

Definition at line 115 of file G4PreCompoundEmission.hh.

References G4PreCompoundFragmentVector::SetOPTxs().

Referenced by G4PreCompoundModel::G4PreCompoundModel(), and G4PreCompoundModel::SetOPTxs().

00116 {
00117   theFragmentsVector->SetOPTxs(opt);
00118 }

void G4PreCompoundEmission::UseSICB ( G4bool   )  [inline]

Definition at line 120 of file G4PreCompoundEmission.hh.

References G4PreCompoundFragmentVector::UseSICB().

Referenced by G4PreCompoundModel::G4PreCompoundModel(), and G4PreCompoundModel::UseSICB().

00121 {
00122   theFragmentsVector->UseSICB(use);
00123 }


The documentation for this class was generated from the following files:
Generated on Mon May 27 17:52:58 2013 for Geant4 by  doxygen 1.4.7