ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4Radioactivation.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4Radioactivation.hh
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 
30 
31 #include <vector>
32 #include <map>
34 
35 #include "G4ios.hh"
36 #include "globals.hh"
39 
40 #include "G4NucleusLimits.hh"
43 #include "G4RadioactivityTable.hh"
44 #include "G4ThreeVector.hh"
45 #include "G4Threading.hh"
46 
47 class G4Fragment;
49 
50 typedef std::vector<G4RadioactiveDecayChainsFromParent> G4RadioactiveDecayParentChainTable;
51 typedef std::vector<G4RadioactiveDecayRatesToDaughter> G4RadioactiveDecayRates;
52 typedef 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"
69 
70  // Set the half-life threshold for isomer production
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;
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.
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
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 
157 
159 
166 
171 
172  // for the radioactivity tables
173  std::vector<G4RadioactivityTable*> theRadioactivityTables;
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