Warning, file /include/Geant4/G4InuclNuclei.hh was not indexed
or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 
0002 
0003 
0004 
0005 
0006 
0007 
0008 
0009 
0010 
0011 
0012 
0013 
0014 
0015 
0016 
0017 
0018 
0019 
0020 
0021 
0022 
0023 
0024 
0025 
0026 
0027 
0028 
0029 
0030 
0031 
0032 
0033 
0034 
0035 
0036 
0037 
0038 
0039 
0040 
0041 
0042 
0043 
0044 
0045 
0046 
0047 
0048 
0049 
0050 
0051 
0052 
0053 #ifndef G4INUCL_NUCLEI_HH
0054 #define G4INUCL_NUCLEI_HH
0055 
0056 #include <CLHEP/Units/SystemOfUnits.h>
0057 
0058 #include "G4InuclParticle.hh"
0059 #include "G4LorentzVector.hh"
0060 #include "G4ExitonConfiguration.hh"
0061 
0062 class G4Fragment;
0063 class G4ParticleDefinition;
0064 class G4V3DNucleus;
0065 
0066 
0067 class G4InuclNuclei : public G4InuclParticle {
0068 public:
0069   G4InuclNuclei() : G4InuclParticle() {}
0070 
0071   G4InuclNuclei(const G4DynamicParticle& dynPart, Model model=DefaultModel)
0072     : G4InuclParticle(dynPart, model) {}
0073 
0074   G4InuclNuclei(G4int a, G4int z, G4double exc=0., Model model=DefaultModel)
0075     : G4InuclParticle(makeDefinition(a,z), model) {
0076     setExitationEnergy(exc);
0077   }
0078 
0079   G4InuclNuclei(const G4LorentzVector& mom, G4int a, G4int z,
0080         G4double exc=0., Model model=DefaultModel)
0081     : G4InuclParticle(makeDefinition(a,z), mom, model) {
0082     setExitationEnergy(exc);
0083   }
0084 
0085   G4InuclNuclei(G4double ekin, G4int a, G4int z, G4double exc,
0086         Model model=DefaultModel)
0087     : G4InuclParticle(makeDefinition(a,z), ekin, model) {
0088     setExitationEnergy(exc);
0089   }
0090 
0091   G4InuclNuclei(const G4Fragment& aFragment, Model model=DefaultModel);
0092 
0093   G4InuclNuclei(G4V3DNucleus* a3DNucleus, Model model=DefaultModel);
0094 
0095   virtual ~G4InuclNuclei() {}
0096 
0097   
0098   G4InuclNuclei(const G4InuclNuclei& right)
0099     : G4InuclParticle(right),
0100       theExitonConfiguration(right.theExitonConfiguration) {}
0101 
0102   G4InuclNuclei& operator=(const G4InuclNuclei& right);
0103 
0104   
0105   G4bool operator==(const G4InuclNuclei& right) {
0106     return ( G4InuclParticle::operator==(right) && 
0107          theExitonConfiguration == right.theExitonConfiguration );
0108   }
0109 
0110   
0111   void fill(G4int a, G4int z, G4double exc=0., Model model=DefaultModel) {
0112     fill(0., a, z, exc, model);
0113   }
0114 
0115   void fill(const G4LorentzVector& mom, G4int a, G4int z,
0116         G4double exc=0., Model model=DefaultModel);
0117 
0118   void fill(G4double ekin, G4int a, G4int z, G4double exc,
0119         Model model=DefaultModel);
0120 
0121   void copy(const G4Fragment& aFragment, Model model=DefaultModel);
0122 
0123   void copy(G4V3DNucleus* a3DNucleus, Model model=DefaultModel);
0124 
0125   void clear();         
0126 
0127   
0128   void setExitationEnergy(G4double e);
0129 
0130   void setExitonConfiguration(const G4ExitonConfiguration& config) { 
0131     theExitonConfiguration = config;
0132   }
0133 
0134   void clearExitonConfiguration() { theExitonConfiguration.clear(); }
0135 
0136   G4int getA() const { return getDefinition()->GetAtomicMass(); }
0137   G4int getZ() const { return getDefinition()->GetAtomicNumber(); }
0138 
0139   G4double getNucleiMass() const {
0140     return getDefinition()->GetPDGMass()*CLHEP::MeV/CLHEP::GeV; 
0141   }
0142 
0143   G4double getExitationEnergy() const {
0144     return (getMass()-getNucleiMass())*CLHEP::GeV/CLHEP::MeV; 
0145   }
0146 
0147   G4double getExitationEnergyInGeV() const { return getExitationEnergy()/CLHEP::GeV; }
0148 
0149   const G4ExitonConfiguration& getExitonConfiguration() const {
0150     return theExitonConfiguration;
0151   }
0152 
0153   static G4double getNucleiMass(G4int a, G4int z, G4double exc=0.);
0154 
0155   virtual void print(std::ostream& os) const;
0156 
0157   
0158   G4Fragment makeG4Fragment() const;
0159   operator G4Fragment() const;
0160 
0161 protected:
0162   
0163   static G4ParticleDefinition* makeDefinition(G4int a, G4int z);
0164   static G4ParticleDefinition* makeNuclearFragment(G4int a, G4int z);
0165 
0166 private: 
0167   G4ExitonConfiguration theExitonConfiguration;
0168 };        
0169 
0170 #endif