G4VPreCompoundFragment.hh

Go to the documentation of this file.
00001 //
00002 // ********************************************************************
00003 // * License and Disclaimer                                           *
00004 // *                                                                  *
00005 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
00006 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
00007 // * conditions of the Geant4 Software License,  included in the file *
00008 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
00009 // * include a list of copyright holders.                             *
00010 // *                                                                  *
00011 // * Neither the authors of this software system, nor their employing *
00012 // * institutes,nor the agencies providing financial support for this *
00013 // * work  make  any representation or  warranty, express or implied, *
00014 // * regarding  this  software system or assume any liability for its *
00015 // * use.  Please see the license in the file  LICENSE  and URL above *
00016 // * for the full disclaimer and the limitation of liability.         *
00017 // *                                                                  *
00018 // * This  code  implementation is the result of  the  scientific and *
00019 // * technical work of the GEANT4 collaboration.                      *
00020 // * By using,  copying,  modifying or  distributing the software (or *
00021 // * any work based  on the software)  you  agree  to acknowledge its *
00022 // * use  in  resulting  scientific  publications,  and indicate your *
00023 // * acceptance of all terms of the Geant4 Software license.          *
00024 // ********************************************************************
00025 //
00026 // $Id$
00027 //
00028 // J. M. Quesada (August 2008).  
00029 // Based  on previous work by V. Lara
00030 //
00031 // Modif (03 September 2008) by J. M. Quesada for external choice of inverse 
00032 // cross section option 
00033 // JMQ (06 September 2008) Also external choice has been added for:
00034 //                      - superimposed Coulomb barrier (if useSICB=true) 
00035 // 20.08.2010 V.Ivanchenko added int Z and A and cleanup; added 
00036 //                        G4ParticleDefinition to constructor, 
00037 //                        inline method to build G4ReactionProduct; 
00038 //                        remove string name
00039 //                        
00040 
00041 #ifndef G4VPreCompoundFragment_h
00042 #define G4VPreCompoundFragment_h 1
00043 
00044 #include "G4ios.hh"
00045 #include <iomanip>
00046 #include "G4ParticleDefinition.hh"
00047 #include "G4IonTable.hh"
00048 #include "G4Fragment.hh"
00049 #include "G4VCoulombBarrier.hh"
00050 #include "G4ReactionProduct.hh"
00051 #include "G4PreCompoundParameters.hh"
00052 #include "G4Pow.hh"
00053 
00054 class G4VPreCompoundFragment
00055 {
00056 public:  
00057 
00058   // ============================
00059   // Constructors and destructor
00060   // ============================
00061     
00062   G4VPreCompoundFragment(const G4ParticleDefinition*,
00063                          G4VCoulombBarrier * aCoulombBarrier);
00064   
00065   virtual ~G4VPreCompoundFragment();
00066   
00067   // ==========
00068   // operators 
00069   // ========== 
00070   
00071   friend std::ostream& 
00072   operator<<(std::ostream&, const G4VPreCompoundFragment*);
00073   friend std::ostream& 
00074   operator<<(std::ostream&, const G4VPreCompoundFragment&);
00075   
00076   // =====================
00077   // Pure Virtual methods
00078   // =====================
00079   
00080   // Initialization method
00081   void Initialize(const G4Fragment & aFragment);
00082     
00083   // Methods for calculating the emission probability
00084   // ------------------------------------------------
00085   
00086   // Calculates the total (integrated over kinetic energy) emission
00087   // probability of a fragment
00088   virtual G4double CalcEmissionProbability(const G4Fragment & aFragment) = 0;
00089   
00090   virtual G4double GetKineticEnergy(const G4Fragment & aFragment) = 0;
00091 
00092   inline G4ReactionProduct * GetReactionProduct() const;        
00093 
00094   inline G4int GetA() const;
00095   
00096   inline G4int GetZ() const;
00097   
00098   inline G4int GetRestA() const;
00099   
00100   inline G4int GetRestZ() const;
00101 
00102   inline G4double ResidualA13() const;
00103   
00104   inline G4double GetCoulombBarrier() const;
00105   
00106   inline G4double GetBindingEnergy() const;
00107   
00108   inline G4double GetMaximalKineticEnergy() const;
00109   
00110   inline G4double GetEnergyThreshold() const;
00111 
00112   inline G4double GetEmissionProbability() const;
00113   
00114   inline G4double GetNuclearMass() const;
00115   
00116   inline G4double GetRestNuclearMass() const;
00117   
00118   inline G4double GetReducedMass() const;
00119   
00120   inline const G4LorentzVector& GetMomentum() const;
00121   
00122   inline void  SetMomentum(const G4LorentzVector & value);
00123   
00124   inline const G4String GetName() const;
00125 
00126   //for inverse cross section choice
00127   inline void SetOPTxs(G4int);
00128   //for superimposed Coulomb Barrier for inverse cross sections
00129   inline void UseSICB(G4bool);
00130 
00131 protected:
00132 
00133   inline G4bool IsItPossible(const G4Fragment & aFragment) const;
00134 
00135 private:
00136 
00137   // default constructor
00138   G4VPreCompoundFragment();
00139   // copy constructor
00140   G4VPreCompoundFragment(const G4VPreCompoundFragment &right);
00141   const G4VPreCompoundFragment& 
00142   operator= (const G4VPreCompoundFragment &right);  
00143   G4int operator==(const G4VPreCompoundFragment &right) const;
00144   G4int operator!=(const G4VPreCompoundFragment &right) const;
00145 
00146   // =============
00147   // Data members
00148   // =============
00149 
00150   const G4ParticleDefinition* particle;
00151   G4VCoulombBarrier * theCoulombBarrierPtr;
00152   
00153   G4int theA;
00154   G4int theZ;
00155   G4int theRestNucleusA;
00156   G4int theRestNucleusZ;
00157 
00158   G4double theRestNucleusA13;
00159   G4double theBindingEnergy;
00160   G4double theMaximalKineticEnergy;
00161   G4double theRestNucleusMass;
00162   G4double theReducedMass;
00163   G4double theMass;
00164 
00165   G4LorentzVector theMomentum;
00166   
00167 protected:
00168 
00169   G4PreCompoundParameters* theParameters;
00170   G4Pow* g4pow;
00171 
00172   G4double theEmissionProbability;
00173   G4double theCoulombBarrier;
00174 
00175   //for inverse cross section choice
00176   G4int OPTxs;
00177   //for superimposed Coulomb Barrier for inverse cross sections
00178   G4bool useSICB;
00179 };
00180 
00181 #include "G4VPreCompoundFragment.icc"
00182 
00183 #endif

Generated on Mon May 27 17:50:19 2013 for Geant4 by  doxygen 1.4.7