G4NuclearDecayChannel.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 #ifndef G4NuclearDecayChannel_h
00027 #define G4NuclearDecayChannel_h 1
00028 
00029 #include "globals.hh"
00030 #include "G4VDecayChannel.hh"
00031 #include "G4Ions.hh"
00032 #include "G4IonTable.hh"
00033 #include "G4DynamicParticle.hh"
00034 #include "G4ParticleTable.hh"
00035 #include "G4GeneralPhaseSpaceDecay.hh"
00036 #include "G4RadioactiveDecayMode.hh"
00037 
00038 #include <CLHEP/Random/RandGeneral.h>
00039 
00041 //
00042 class G4NuclearDecayChannel : public G4GeneralPhaseSpaceDecay
00043 {
00044   // class description 
00045   //
00046   //  G4NuclearDecayChannel is a derived class from G4GeneralPhaseSpaceDecay,
00047   //  itself a derived class from G4VDecayChannel. It provides the required
00048   //  decay channels for all nuclear decay modes and through the DecayIt()
00049   //  member function returns the decay products. 
00050   // 
00051   // class description - end
00052   
00053 public: // with description
00054 
00055   G4NuclearDecayChannel(const G4RadioactiveDecayMode&, G4int Verbose) :
00056     G4GeneralPhaseSpaceDecay(Verbose) {;}
00057   // default constructor
00058   //
00059   G4NuclearDecayChannel(const G4RadioactiveDecayMode& theMode, G4int Verbose,
00060                         const G4ParticleDefinition* theParentNucleus, 
00061                         G4double theBR, G4double theQtransition, G4int A,
00062                         G4int Z, G4double theDaughterExcitation);
00063   // constructor decay channel with one decay product
00064   //
00065   G4NuclearDecayChannel(const G4RadioactiveDecayMode& theMode, G4int Verbose,
00066                         const G4ParticleDefinition* theParentNucleus,
00067                         G4double theBR, G4double theQtransition, G4int A,
00068                         G4int Z, G4double theDaughterExcitation,
00069                         const G4String theDaughterName1);
00070   // constructor decay channel with two decay products
00071   //
00072   G4NuclearDecayChannel(const G4RadioactiveDecayMode& theMode, G4int Verbose,
00073                         const G4ParticleDefinition* theParentNucleus,
00074                         G4double theBR, G4double /* theFFN */,
00075                         G4bool /* betaS */, CLHEP::RandGeneral* randBeta,
00076                         G4double theQtransition, G4int A, G4int Z,
00077                         G4double theDaughterExcitation,
00078                         const G4String theDaughterName1,
00079                         const G4String theDaughterName2);
00080   // constructor decay channel with three decay product
00081   //
00082 
00083   ~G4NuclearDecayChannel(){;} 
00084 
00085   // destructor
00086   //
00087   G4DecayProducts* DecayIt(G4double theParentMass);
00088   // Returns the decay products
00089   //
00090   void SetHLThreshold(G4double hl) {halflifethreshold = hl;}
00091   // Set the half-life threshold for isomer production
00092   //
00093   void SetICM(G4bool icm) {applyICM = icm;}
00094   // Enable/disable ICM 
00095   //
00096   void SetARM (G4bool arm) {applyARM = arm;}
00097   // Enable/disable ARM
00098   // 
00099   inline G4RadioactiveDecayMode GetDecayMode () {return decayMode;}
00100   // Returns the decay mode
00101   //
00102   inline G4double GetDaughterExcitation () {return daughterExcitation;}
00103   // Returns the excitaion energy of the daughter nuclide
00104   //
00105   inline G4ParticleDefinition* GetDaughterNucleus () {return daughterNucleus;}
00106   // Returns the daughter nuclide.
00107   //
00108 private:
00109   G4NuclearDecayChannel(const G4String& theName, const G4String& theParentName,
00110                         G4double theBR, G4int theNumberOfDaughters,
00111                         const G4String theDaughterName1,
00112                         const G4String theDaughterName2,
00113                         const G4String theDaughterName3,
00114                         const G4String theDaughterName4);
00115 
00116   G4NuclearDecayChannel(const G4String& theParentName,
00117                         G4double theBR, G4int theNumberOfDaughters,
00118                         const G4String& theDaughterName1,
00119                         const G4String& theDaughterName2 = "",
00120                         const G4String& theDaughterName3 = "");
00121 
00122   G4NuclearDecayChannel(const G4String& theParentName,
00123                         G4double theParentMass, G4double theBR,
00124                         G4int theNumberOfDaughters,
00125                         const G4String& theDaughterName1,
00126                         const G4String& theDaughterName2 = "",
00127                         const G4String& theDaughterName3 = "");
00128 
00129   void FillDaughterNucleus(G4int index, G4int A, G4int Z,
00130                            G4double theDaughterExcitation);
00131 
00132   G4DecayProducts* BetaDecayIt();
00133   // to replace the ThreeBodyDecayIt() to generate the correct beta spectrum
00134 
00135 protected:
00136   G4RadioactiveDecayMode decayMode;
00137   static const G4double  pTolerance;
00138   static const G4double  levelTolerance;
00139   G4double               daughterExcitation;
00140   G4int                  daughterA;
00141   G4int                  daughterZ;
00142   G4ParticleDefinition  *daughterNucleus;
00143   G4DynamicParticle* dynamicDaughter;
00144   G4double               Qtransition;
00145   G4double               halflifethreshold;
00146   G4bool                 applyICM;
00147   G4bool                 applyARM;
00148   CLHEP::RandGeneral* RandomEnergy;    
00149 };
00150 #endif
00151 
00152 

Generated on Mon May 27 17:49:06 2013 for Geant4 by  doxygen 1.4.7