source: trunk/source/processes/hadronic/models/radioactive_decay/include/G4NuclearDecayChannel.hh @ 1315

Last change on this file since 1315 was 1315, checked in by garnier, 14 years ago

update geant4-09-04-beta-cand-01 interfaces-V09-03-09 vis-V09-03-08

File size: 6.5 KB
Line 
1//
2// ********************************************************************
3// * License and Disclaimer                                           *
4// *                                                                  *
5// * The  Geant4 software  is  copyright of the Copyright Holders  of *
6// * the Geant4 Collaboration.  It is provided  under  the terms  and *
7// * conditions of the Geant4 Software License,  included in the file *
8// * LICENSE and available at  http://cern.ch/geant4/license .  These *
9// * include a list of copyright holders.                             *
10// *                                                                  *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work  make  any representation or  warranty, express or implied, *
14// * regarding  this  software system or assume any liability for its *
15// * use.  Please see the license in the file  LICENSE  and URL above *
16// * for the full disclaimer and the limitation of liability.         *
17// *                                                                  *
18// * This  code  implementation is the result of  the  scientific and *
19// * technical work of the GEANT4 collaboration.                      *
20// * By using,  copying,  modifying or  distributing the software (or *
21// * any work based  on the software)  you  agree  to acknowledge its *
22// * use  in  resulting  scientific  publications,  and indicate your *
23// * acceptance of all terms of the Geant4 Software license.          *
24// ********************************************************************
25//
26#ifndef G4NuclearDecayChannel_h
27#define G4NuclearDecayChannel_h 1
28
29#include "globals.hh"
30#include "G4VDecayChannel.hh"
31#include "G4Ions.hh"
32#include "G4IonTable.hh"
33#include "G4DynamicParticle.hh"
34#include "G4ParticleTable.hh"
35#include "G4GeneralPhaseSpaceDecay.hh"
36#include "G4RadioactiveDecayMode.hh"
37
38#include <CLHEP/Random/RandGeneral.h>
39
40////////////////////////////////////////////////////////////////////////////////
41//
42class G4NuclearDecayChannel : public G4GeneralPhaseSpaceDecay
43{
44  // class description
45  //
46  //  G4NuclearDecayChannel is a derived class from G4GeneralPhaseSpaceDecay,
47  //  itself a derived class from G4VDecayChannel. It provides the required
48  //  decay channels for all nuclear decay modes and through the DecayIt()
49  //  member function returns the decay products.
50  //
51  // class description - end
52 
53public: // with description
54
55  G4NuclearDecayChannel (const G4RadioactiveDecayMode &, G4int Verbose) :
56    G4GeneralPhaseSpaceDecay (Verbose) {;}
57  // default constructor
58  //
59  G4NuclearDecayChannel (const G4RadioactiveDecayMode &theMode, G4int Verbose,
60                         const G4ParticleDefinition *theParentNucleus, 
61                         G4double theBR, G4double theQtransition, G4int A,
62                         G4int Z, G4double theDaughterExcitation);
63  // constructor decay channel with one decay product
64  //
65  G4NuclearDecayChannel (const G4RadioactiveDecayMode &theMode, G4int Verbose,
66                         const G4ParticleDefinition *theParentNucleus,
67                         G4double theBR, G4double theQtransition, G4int A,
68                         G4int Z, G4double theDaughterExcitation,
69                         const G4String theDaughterName1);
70  // constructor decay channel with two decay products
71  //
72  G4NuclearDecayChannel (const G4RadioactiveDecayMode &theMode, G4int Verbose,
73                         const G4ParticleDefinition *theParentNucleus,
74                         G4double theBR, G4double theFFN,
75                         G4bool betaS, CLHEP::RandGeneral* randBeta,
76                         G4double theQtransition, G4int A, G4int Z,
77                         G4double theDaughterExcitation,
78                         const G4String theDaughterName1,
79                         const G4String theDaughterName2);
80  // constructor decay channel with three decay product
81  //
82
83  ~G4NuclearDecayChannel (){;} 
84
85  // destructor
86  //
87  G4DecayProducts *DecayIt (G4double theParentMass);
88  // Returns the decay products
89  //
90  void SetHLThreshold (G4double hl) {halflifethreshold = hl;}
91  // Set the half-life threshold for isomer production
92  //
93  void SetICM (G4bool icm) {applyICM = icm;}
94  // Enable/disable ICM
95  //
96  void SetARM (G4bool arm) {applyARM = arm;}
97  // Enable/disable ARM
98  //
99  inline G4RadioactiveDecayMode GetDecayMode () {return decayMode;}
100  // Returns the decay mode
101  //
102  inline G4double GetDaughterExcitation () {return daughterExcitation;}
103  // Returns the excitaion energy of the daughter nuclide
104  //
105  inline G4ParticleDefinition* GetDaughterNucleus () {return daughterNucleus;}
106  // Returns the daughter nuclide.
107  //
108private:
109  G4NuclearDecayChannel (const G4String &theName, const G4String &theParentName,
110                         G4double theBR, G4int theNumberOfDaughters,
111                         const G4String theDaughterName1,
112                         const G4String theDaughterName2,
113                         const G4String theDaughterName3,
114                         const G4String theDaughterName4);
115
116  G4NuclearDecayChannel (const G4String &theParentName,
117                         G4double theBR, G4int theNumberOfDaughters,
118                         const G4String& theDaughterName1,
119                         const G4String& theDaughterName2 = "",
120                         const G4String& theDaughterName3 = "");
121
122  G4NuclearDecayChannel (const G4String &theParentName,
123                         G4double theParentMass, G4double theBR,
124                         G4int theNumberOfDaughters,
125                         const G4String& theDaughterName1,
126                         const G4String& theDaughterName2 = "",
127                         const G4String& theDaughterName3 = "");
128
129  void FillDaughterNucleus (G4int index, G4int A, G4int Z,
130                            G4double theDaughterExcitation);
131
132  G4DecayProducts* BetaDecayIt();
133  // to replace the ThreeBodyDecayIt() to generate the correct beta spectrum
134
135protected:
136  G4RadioactiveDecayMode decayMode;
137  static const G4double  pTolerance;
138  static const G4double  levelTolerance;
139  G4double               daughterExcitation;
140  G4int                  daughterA;
141  G4int                  daughterZ;
142  G4ParticleDefinition  *daughterNucleus;
143  G4DynamicParticle     *dynamicDaughter;
144  G4double               Qtransition;
145  G4double               FermiFN;
146  G4bool                 BetaSimple;
147  G4double               halflifethreshold;
148  G4bool                 applyICM;
149  G4bool                 applyARM;
150  CLHEP::RandGeneral*    RandomEnergy;   
151};
152#endif
153
154
Note: See TracBrowser for help on using the repository browser.