Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4Radioactivation.hh
Go to the documentation of this file.
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 G4Radioactivation_h
27#define G4Radioactivation_h 1
28
29#include "G4RadioactiveDecay.hh"
30
31#include <vector>
32#include <map>
34
35#include "G4ios.hh"
36#include "globals.hh"
39
40#include "G4NucleusLimits.hh"
44#include "G4ThreeVector.hh"
45#include "G4Threading.hh"
46
47class G4Fragment;
49
50typedef std::vector<G4RadioactiveDecayChainsFromParent> G4RadioactiveDecayParentChainTable;
51typedef std::vector<G4RadioactiveDecayRatesToDaughter> G4RadioactiveDecayRates;
52typedef std::map<G4String, G4DecayTable*> DecayTableMap;
53
54
56{
57 public: // with description
58
59 G4Radioactivation(const G4String& processName="Radioactivation");
61
62 virtual void ProcessDescription(std::ostream& outFile) const;
63
64 // Return decay table if it exists, if not, load it from file
66
67 // Set the decay biasing scheme using the data in "filename"
68 void SetDecayBias(G4String filename);
69
70 // Set the half-life threshold for isomer production
71 void SetHLThreshold(G4double hl) {halflifethreshold = hl;}
72
73 void SetSourceTimeProfile(G4String filename);
74 // Set source exposure function using histograms in "filename"
75
77 // Returns true if the coefficient and decay time table for all the
78 // descendants of the specified isotope are ready.
79 // used in VR decay mode only
80
82 // Calculates the coefficient and decay time table for all the descendents
83 // of the specified isotope. Adds the calculated table to the private data
84 // member "theParentChainTable".
85 // used in VR decay mode only
86
88 // Used to retrieve the coefficient and decay time table for all the
89 // descendants of the specified isotope from "theParentChainTable"
90 // and place it in "chainsFromParent".
91 // used in VR decay mode only
92
93 void SetDecayRate(G4int,G4int,G4double, G4int, std::vector<G4double>,
94 std::vector<G4double>);
95 // Sets "theDecayRate" with data supplied in the arguements.
96 // used in VR decay mode only
97
98 std::vector<G4RadioactivityTable*> GetTheRadioactivityTables()
99 {return theRadioactivityTables;}
100 // Return vector of G4Radioactivity map - should be used in VR mode only
101
102
103 // Controls whether G4Radioactivation runs in analogue mode or
104 // variance reduction mode. SetBRBias, SetSplitNuclei and
105 // SetSourceTimeProfile all turn off analogue mode and use VR mode
106 inline void SetAnalogueMonteCarlo (G4bool r ) {
107 AnalogueMC = r;
108 if (!AnalogueMC) halflifethreshold = 1e-6*CLHEP::s;
109 }
110
111 // Returns true if the simulation is an analogue Monte Carlo, and false if
112 // any of the biassing schemes have been selected.
113 inline G4bool IsAnalogueMonteCarlo () {return AnalogueMC;}
114
115 // Sets whether branching ration bias scheme applies.
116 inline void SetBRBias(G4bool r) {
117 BRBias = r;
118 AnalogueMC = false;
119 }
120
121 // Sets the number of times a nucleus will decay when biased
122 inline void SetSplitNuclei(G4int r) {
123 NSplit = r;
124 AnalogueMC = false;
125 }
126
127 // Returns the nuclear splitting number
128 inline G4int GetSplitNuclei () {return NSplit;}
129
130 G4VParticleChange* DecayIt(const G4Track& theTrack,
131 const G4Step& theStep);
132
133 protected:
134
137 G4int GetDecayTimeBin(const G4double aDecayTime);
138
139 G4double GetMeanLifeTime(const G4Track& theTrack,
141
142 //Add gamma,Xray,conversion,and auger electrons for bias mode
144 G4double weight,
145 G4double currenTime,
146 std::vector<double>& weights_v,
147 std::vector<double>& times_v,
148 std::vector<G4DynamicParticle*>& secondaries_v);
149
151
152 private:
153
154 G4bool AnalogueMC;
155 G4bool BRBias;
156 G4int NSplit;
157
158 G4double halflifethreshold;
159
160 G4int NSourceBin;
161 G4double SBin[100];
162 G4double SProfile[100];
163 G4int NDecayBin;
164 G4double DBin[100];
165 G4double DProfile[100];
166
167 G4RadioactiveDecayRatesToDaughter ratesToDaughter;
168 G4RadioactiveDecayRates theDecayRateVector;
169 G4RadioactiveDecayChainsFromParent chainsFromParent;
170 G4RadioactiveDecayParentChainTable theParentChainTable;
171
172 // for the radioactivity tables
173 std::vector<G4RadioactivityTable*> theRadioactivityTables;
174 G4int decayWindows[100];
175
176 inline
177 G4VParticleChange* AtRestDoIt(const G4Track& theTrack, const G4Step& theStep)
178 {return DecayIt(theTrack, theStep);}
179
180 inline
181 G4VParticleChange* PostStepDoIt(const G4Track& theTrack, const G4Step& theStep)
182 {return DecayIt(theTrack, theStep);}
183};
184
185#endif
186
G4double condition(const G4ErrorSymMatrix &m)
G4ForceCondition
std::vector< G4RadioactiveDecayRatesToDaughter > G4RadioactiveDecayRates
std::map< G4String, G4DecayTable * > DecayTableMap
std::vector< G4RadioactiveDecayChainsFromParent > G4RadioactiveDecayParentChainTable
double G4double
Definition: G4Types.hh:83
bool G4bool
Definition: G4Types.hh:86
int G4int
Definition: G4Types.hh:85
void SetAnalogueMonteCarlo(G4bool r)
G4int GetDecayTimeBin(const G4double aDecayTime)
std::vector< G4RadioactivityTable * > GetTheRadioactivityTables()
void AddDeexcitationSpectrumForBiasMode(G4ParticleDefinition *apartDef, G4double weight, G4double currenTime, std::vector< double > &weights_v, std::vector< double > &times_v, std::vector< G4DynamicParticle * > &secondaries_v)
void SetDecayBias(G4String filename)
G4bool IsRateTableReady(const G4ParticleDefinition &)
virtual void ProcessDescription(std::ostream &outFile) const
G4VParticleChange * DecayIt(const G4Track &theTrack, const G4Step &theStep)
G4double ConvolveSourceTimeProfile(const G4double, const G4double)
void CalculateChainsFromParent(const G4ParticleDefinition &)
void SetDecayRate(G4int, G4int, G4double, G4int, std::vector< G4double >, std::vector< G4double >)
G4DecayTable * GetDecayTable1(const G4ParticleDefinition *)
void SetSplitNuclei(G4int r)
void SetSourceTimeProfile(G4String filename)
void GetChainsFromParent(const G4ParticleDefinition &)
void SetHLThreshold(G4double hl)
G4double GetMeanLifeTime(const G4Track &theTrack, G4ForceCondition *condition)
void SetBRBias(G4bool r)
G4RadioactivationMessenger * theRadioactivationMessenger
Definition: G4Step.hh:62