Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions
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
 
- Public Member Functions inherited from G4VEvaporationChannel
 G4VEvaporationChannel (const G4String &aName="Anonymous", G4EvaporationChannelType timeType=fDelayedEmission)
 
virtual ~G4VEvaporationChannel ()
 
virtual G4double GetLifeTime (G4Fragment *theNucleus)
 
virtual G4FragmentEmittedFragment (G4Fragment *theNucleus)
 
virtual G4FragmentVectorBreakUpFragment (G4Fragment *theNucleus)
 
G4String GetName () const
 
void SetName (const G4String &aName)
 
void SetOPTxs (G4int opt)
 
void UseSICB (G4bool use)
 

Additional Inherited Members

- Protected Attributes inherited from G4VEvaporationChannel
G4EvaporationChannelType sampleDecayTime
 
G4int OPTxs
 
G4bool useSICB
 

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 46 of file G4GEMChannel.cc.

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

48  :
49  G4VEvaporationChannel(aName),
50  A(theA),
51  Z(theZ),
52  theEvaporationProbabilityPtr(aEmissionStrategy),
53  theCoulombBarrierPtr(aCoulombBarrier),
54  EmissionProbability(0.0),
55  MaximalKineticEnergy(-CLHEP::GeV)
56 {
57  theLevelDensityPtr = new G4EvaporationLevelDensityParameter;
58  MyOwnLevelDensity = true;
59  EvaporatedMass = G4NucleiProperties::GetNuclearMass(A, Z);
60  ResidualMass = CoulombBarrier = 0.0;
61  fG4pow = G4Pow::GetInstance();
62  ResidualZ = ResidualA = 0;
63 }
static G4Pow * GetInstance()
Definition: G4Pow.cc:53
static G4double GetNuclearMass(const G4double A, const G4double Z)
G4VEvaporationChannel(const G4String &aName="Anonymous", G4EvaporationChannelType timeType=fDelayedEmission)
G4GEMChannel::~G4GEMChannel ( )
virtual

Definition at line 65 of file G4GEMChannel.cc.

66 {
67  if (MyOwnLevelDensity) { delete theLevelDensityPtr; }
68 }

Member Function Documentation

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

Implements G4VEvaporationChannel.

Definition at line 137 of file G4GEMChannel.cc.

References CLHEP::HepLorentzVector::boost(), CLHEP::HepLorentzVector::boostVector(), G4Fragment::GetExcitationEnergy(), G4Fragment::GetGroundStateMass(), G4Fragment::GetMomentum(), CLHEP::Hep3Vector::rotateUz(), CLHEP::Hep3Vector::unit(), and CLHEP::HepLorentzVector::vect().

138 {
139  G4double EvaporatedKineticEnergy = CalcKineticEnergy(theNucleus);
140  G4double EvaporatedEnergy = EvaporatedKineticEnergy + EvaporatedMass;
141 
142  G4ThreeVector momentum(IsotropicVector(std::sqrt(EvaporatedKineticEnergy*
143  (EvaporatedKineticEnergy+2.0*EvaporatedMass))));
144 
145  momentum.rotateUz(theNucleus.GetMomentum().vect().unit());
146 
147  G4LorentzVector EvaporatedMomentum(momentum,EvaporatedEnergy);
148  EvaporatedMomentum.boost(theNucleus.GetMomentum().boostVector());
149  G4Fragment * EvaporatedFragment = new G4Fragment(A,Z,EvaporatedMomentum);
150  // ** And now the residual nucleus **
151  G4double theExEnergy = theNucleus.GetExcitationEnergy();
152  G4double theMass = theNucleus.GetGroundStateMass();
153  G4double ResidualEnergy =
154  theMass + (theExEnergy - EvaporatedKineticEnergy) - EvaporatedMass;
155 
156  G4LorentzVector ResidualMomentum(-momentum,ResidualEnergy);
157  ResidualMomentum.boost(theNucleus.GetMomentum().boostVector());
158 
159  G4Fragment * ResidualFragment = new G4Fragment( ResidualA, ResidualZ, ResidualMomentum );
160 
161  G4FragmentVector * theResult = new G4FragmentVector;
162 
163  theResult->push_back(EvaporatedFragment);
164  theResult->push_back(ResidualFragment);
165  return theResult;
166 }
Hep3Vector boostVector() const
Hep3Vector vect() const
const G4LorentzVector & GetMomentum() const
Definition: G4Fragment.hh:271
std::vector< G4Fragment * > G4FragmentVector
Definition: G4Fragment.hh:65
G4double GetGroundStateMass() const
Definition: G4Fragment.hh:260
Hep3Vector unit() const
double G4double
Definition: G4Types.hh:76
G4double GetExcitationEnergy() const
Definition: G4Fragment.hh:255
G4double G4GEMChannel::GetEmissionProbability ( G4Fragment theNucleus)
virtual

Implements G4VEvaporationChannel.

Definition at line 70 of file G4GEMChannel.cc.

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

71 {
72  G4int anA = fragment->GetA_asInt();
73  G4int aZ = fragment->GetZ_asInt();
74  ResidualA = anA - A;
75  ResidualZ = aZ - Z;
76  //G4cout << "G4GEMChannel::Initialize: Z= " << aZ << " A= " << anA
77  // << " Zres= " << ResidualZ << " Ares= " << ResidualA << G4endl;
78 
79  // We only take into account channels which are physically allowed
80  if (ResidualA <= 0 || ResidualZ <= 0 || ResidualA < ResidualZ ||
81  (ResidualA == ResidualZ && ResidualA > 1))
82  {
83  CoulombBarrier = 0.0;
84  MaximalKineticEnergy = -CLHEP::GeV;
85  EmissionProbability = 0.0;
86  }
87  else
88  {
89  // Effective excitation energy
90  // JMQ 071009: pairing in ExEnergy should be the one of parent compound nucleus
91  // FIXED the bug causing reported crash by VI (negative Probabilities
92  // due to inconsistency in Coulomb barrier calculation (CoulombBarrier and -Beta
93  // param for protons must be the same)
94  // G4double ExEnergy = fragment.GetExcitationEnergy() -
95  // G4PairingCorrection::GetInstance()->GetPairingCorrection(ResidualA,ResidualZ);
96  G4double ExEnergy = fragment->GetExcitationEnergy() -
98 
99  //G4cout << "Eexc(MeV)= " << ExEnergy/MeV << G4endl;
100 
101  if( ExEnergy <= 0.0) {
102  CoulombBarrier = 0.0;
103  MaximalKineticEnergy = -1000.0*MeV;
104  EmissionProbability = 0.0;
105 
106  } else {
107 
108  ResidualMass = G4NucleiProperties::GetNuclearMass(ResidualA, ResidualZ);
109 
110  // Coulomb Barrier calculation
111  CoulombBarrier = theCoulombBarrierPtr->GetCoulombBarrier(ResidualA,ResidualZ,ExEnergy);
112  //G4cout << "CBarrier(MeV)= " << CoulombBarrier/MeV << G4endl;
113 
114  //Maximal kinetic energy (JMQ : at the Coulomb barrier)
115  MaximalKineticEnergy =
116  CalcMaximalKineticEnergy(fragment->GetGroundStateMass()+ExEnergy);
117  //G4cout << "MaxE(MeV)= " << MaximalKineticEnergy/MeV << G4endl;
118 
119  // Emission probability
120  if (MaximalKineticEnergy <= 0.0)
121  {
122  EmissionProbability = 0.0;
123  }
124  else
125  {
126  // Total emission probability for this channel
127  EmissionProbability =
128  theEvaporationProbabilityPtr->EmissionProbability(*fragment,
129  MaximalKineticEnergy);
130  }
131  }
132  }
133  //G4cout << "Prob= " << EmissionProbability << G4endl;
134  return EmissionProbability;
135 }
static G4double GetNuclearMass(const G4double A, const G4double Z)
G4double EmissionProbability(const G4Fragment &fragment, G4double anEnergy)
int G4int
Definition: G4Types.hh:78
G4double GetPairingCorrection(G4int A, G4int Z) const
static G4PairingCorrection * GetInstance()
virtual G4double GetCoulombBarrier(G4int ARes, G4int ZRes, G4double U) const =0
double G4double
Definition: G4Types.hh:76
G4double G4GEMChannel::GetMaximalKineticEnergy ( void  ) const
inline

Definition at line 71 of file G4GEMChannel.hh.

72  { return MaximalKineticEnergy; }
void G4GEMChannel::SetLevelDensityParameter ( G4VLevelDensityParameter aLevelDensity)
inline

Definition at line 64 of file G4GEMChannel.hh.

65  {
66  if (MyOwnLevelDensity) { delete theLevelDensityPtr; }
67  theLevelDensityPtr = aLevelDensity;
68  MyOwnLevelDensity = false;
69  }

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