G4GEMChannel Class Reference

#include <G4GEMChannel.hh>

Inheritance diagram for G4GEMChannel:

G4VEvaporationChannel G4AlphaGEMChannel G4B10GEMChannel G4B11GEMChannel G4B12GEMChannel G4B13GEMChannel G4B8GEMChannel G4Be10GEMChannel G4Be11GEMChannel G4Be12GEMChannel G4Be7GEMChannel G4Be9GEMChannel G4C10GEMChannel G4C11GEMChannel G4C12GEMChannel G4C13GEMChannel G4C14GEMChannel G4C15GEMChannel G4C16GEMChannel G4DeuteronGEMChannel G4F17GEMChannel G4F18GEMChannel G4F19GEMChannel G4F20GEMChannel G4F21GEMChannel G4He3GEMChannel G4He6GEMChannel G4He8GEMChannel G4Li6GEMChannel G4Li7GEMChannel G4Li8GEMChannel G4Li9GEMChannel G4Mg22GEMChannel G4Mg23GEMChannel G4Mg24GEMChannel G4Mg25GEMChannel G4Mg26GEMChannel G4Mg27GEMChannel G4Mg28GEMChannel G4N12GEMChannel G4N13GEMChannel G4N14GEMChannel G4N15GEMChannel G4N16GEMChannel G4N17GEMChannel G4Na21GEMChannel G4Na22GEMChannel G4Na23GEMChannel G4Na24GEMChannel G4Na25GEMChannel G4Ne18GEMChannel G4Ne19GEMChannel G4Ne20GEMChannel G4Ne21GEMChannel G4Ne22GEMChannel G4Ne23GEMChannel G4Ne24GEMChannel G4NeutronGEMChannel G4O14GEMChannel G4O15GEMChannel G4O16GEMChannel G4O17GEMChannel G4O18GEMChannel G4O19GEMChannel G4O20GEMChannel G4ProtonGEMChannel G4TritonGEMChannel

Public Member Functions

 G4GEMChannel (const G4int theA, const G4int theZ, const G4String &aName, G4GEMProbability *aEmissionStrategy, G4VCoulombBarrier *aCoulombBarrier)
virtual ~G4GEMChannel ()
virtual G4double GetEmissionProbability (G4Fragment *theNucleus)
virtual G4FragmentVectorBreakUp (const G4Fragment &theNucleus)
void SetLevelDensityParameter (G4VLevelDensityParameter *aLevelDensity)
G4double GetMaximalKineticEnergy (void) const

Detailed Description

Definition at line 49 of file G4GEMChannel.hh.


Constructor & Destructor Documentation

G4GEMChannel::G4GEMChannel ( const G4int  theA,
const G4int  theZ,
const G4String aName,
G4GEMProbability aEmissionStrategy,
G4VCoulombBarrier aCoulombBarrier 
)

Definition at line 44 of file G4GEMChannel.cc.

References G4Pow::GetInstance(), and G4NucleiProperties::GetNuclearMass().

00046                                                                 :
00047   G4VEvaporationChannel(aName),
00048   A(theA),
00049   Z(theZ),
00050   theEvaporationProbabilityPtr(aEmissionStrategy),
00051   theCoulombBarrierPtr(aCoulombBarrier),
00052   EmissionProbability(0.0),
00053   MaximalKineticEnergy(-CLHEP::GeV)
00054 { 
00055   theLevelDensityPtr = new G4EvaporationLevelDensityParameter;
00056   MyOwnLevelDensity = true;
00057   EvaporatedMass = G4NucleiProperties::GetNuclearMass(A, Z);
00058   ResidualMass = CoulombBarrier = 0.0;
00059   fG4pow = G4Pow::GetInstance(); 
00060   ResidualZ = ResidualA = 0;
00061 }

G4GEMChannel::~G4GEMChannel (  )  [virtual]

Definition at line 63 of file G4GEMChannel.cc.

00064 {
00065   if (MyOwnLevelDensity) { delete theLevelDensityPtr; }
00066 }


Member Function Documentation

G4FragmentVector * G4GEMChannel::BreakUp ( const G4Fragment theNucleus  )  [virtual]

Implements G4VEvaporationChannel.

Definition at line 135 of file G4GEMChannel.cc.

References G4Fragment::GetExcitationEnergy(), G4Fragment::GetGroundStateMass(), and G4Fragment::GetMomentum().

00136 {
00137   G4double EvaporatedKineticEnergy = CalcKineticEnergy(theNucleus);
00138   G4double EvaporatedEnergy = EvaporatedKineticEnergy + EvaporatedMass;
00139   
00140   G4ThreeVector momentum(IsotropicVector(std::sqrt(EvaporatedKineticEnergy*
00141                                                    (EvaporatedKineticEnergy+2.0*EvaporatedMass))));
00142     
00143   momentum.rotateUz(theNucleus.GetMomentum().vect().unit());
00144 
00145   G4LorentzVector EvaporatedMomentum(momentum,EvaporatedEnergy);
00146   EvaporatedMomentum.boost(theNucleus.GetMomentum().boostVector());
00147   G4Fragment * EvaporatedFragment = new G4Fragment(A,Z,EvaporatedMomentum);
00148   // ** And now the residual nucleus ** 
00149   G4double theExEnergy = theNucleus.GetExcitationEnergy();
00150   G4double theMass = theNucleus.GetGroundStateMass();
00151   G4double ResidualEnergy = 
00152     theMass + (theExEnergy - EvaporatedKineticEnergy) - EvaporatedMass;
00153         
00154   G4LorentzVector ResidualMomentum(-momentum,ResidualEnergy);
00155   ResidualMomentum.boost(theNucleus.GetMomentum().boostVector());
00156         
00157   G4Fragment * ResidualFragment = new G4Fragment( ResidualA, ResidualZ, ResidualMomentum );
00158     
00159   G4FragmentVector * theResult = new G4FragmentVector;
00160     
00161   theResult->push_back(EvaporatedFragment);
00162   theResult->push_back(ResidualFragment);
00163   return theResult; 
00164 } 

G4double G4GEMChannel::GetEmissionProbability ( G4Fragment theNucleus  )  [virtual]

Implements G4VEvaporationChannel.

Definition at line 68 of file G4GEMChannel.cc.

References G4GEMProbability::EmissionProbability(), G4Fragment::GetA_asInt(), G4VCoulombBarrier::GetCoulombBarrier(), G4Fragment::GetExcitationEnergy(), G4Fragment::GetGroundStateMass(), G4PairingCorrection::GetInstance(), G4NucleiProperties::GetNuclearMass(), G4PairingCorrection::GetPairingCorrection(), and G4Fragment::GetZ_asInt().

00069 {
00070   G4int anA = fragment->GetA_asInt();
00071   G4int aZ  = fragment->GetZ_asInt();
00072   ResidualA = anA - A;
00073   ResidualZ = aZ - Z;
00074   //G4cout << "G4GEMChannel::Initialize: Z= " << aZ << " A= " << anA
00075   //       << " Zres= " << ResidualZ << " Ares= " << ResidualA << G4endl; 
00076 
00077   // We only take into account channels which are physically allowed
00078   if (ResidualA <= 0 || ResidualZ <= 0 || ResidualA < ResidualZ ||
00079       (ResidualA == ResidualZ && ResidualA > 1)) 
00080     {
00081       CoulombBarrier = 0.0;
00082       MaximalKineticEnergy = -CLHEP::GeV;
00083       EmissionProbability = 0.0;
00084     } 
00085   else 
00086     {
00087       // Effective excitation energy
00088       // JMQ 071009: pairing in ExEnergy should be the one of parent compound nucleus 
00089       // FIXED the bug causing reported crash by VI (negative Probabilities 
00090       // due to inconsistency in Coulomb barrier calculation (CoulombBarrier and -Beta 
00091       // param for protons must be the same)   
00092       //    G4double ExEnergy = fragment.GetExcitationEnergy() -
00093       //    G4PairingCorrection::GetInstance()->GetPairingCorrection(ResidualA,ResidualZ);
00094       G4double ExEnergy = fragment->GetExcitationEnergy() -
00095         G4PairingCorrection::GetInstance()->GetPairingCorrection(anA,aZ);
00096 
00097       //G4cout << "Eexc(MeV)= " << ExEnergy/MeV << G4endl;
00098 
00099       if( ExEnergy <= 0.0) {
00100         CoulombBarrier = 0.0;
00101         MaximalKineticEnergy = -1000.0*MeV;
00102         EmissionProbability = 0.0;
00103 
00104       } else {
00105 
00106         ResidualMass = G4NucleiProperties::GetNuclearMass(ResidualA, ResidualZ);
00107 
00108         // Coulomb Barrier calculation
00109         CoulombBarrier = theCoulombBarrierPtr->GetCoulombBarrier(ResidualA,ResidualZ,ExEnergy);
00110         //G4cout << "CBarrier(MeV)= " << CoulombBarrier/MeV << G4endl;
00111 
00112         //Maximal kinetic energy (JMQ : at the Coulomb barrier)
00113         MaximalKineticEnergy = 
00114           CalcMaximalKineticEnergy(fragment->GetGroundStateMass()+ExEnergy);
00115         //G4cout << "MaxE(MeV)= " << MaximalKineticEnergy/MeV << G4endl;
00116                 
00117         // Emission probability
00118         if (MaximalKineticEnergy <= 0.0) 
00119           {
00120             EmissionProbability = 0.0;
00121           }
00122         else 
00123           { 
00124             // Total emission probability for this channel
00125             EmissionProbability = 
00126               theEvaporationProbabilityPtr->EmissionProbability(*fragment,
00127                                                                 MaximalKineticEnergy);
00128           }
00129       }
00130     }   
00131   //G4cout << "Prob= " << EmissionProbability << G4endl;
00132   return EmissionProbability;
00133 }

G4double G4GEMChannel::GetMaximalKineticEnergy ( void   )  const [inline]

Definition at line 71 of file G4GEMChannel.hh.

00072   { return MaximalKineticEnergy; }

void G4GEMChannel::SetLevelDensityParameter ( G4VLevelDensityParameter aLevelDensity  )  [inline]

Definition at line 64 of file G4GEMChannel.hh.

00065   {
00066     if (MyOwnLevelDensity) { delete theLevelDensityPtr; }
00067     theLevelDensityPtr = aLevelDensity;
00068     MyOwnLevelDensity = false;
00069   }


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