Geant4 Cross Reference |
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 // 27 // ------------------------------------------------------------------- 28 // 29 // Author: E.Mendoza 30 // 31 // Creation date: May 2024 32 // 33 // Modifications: 34 // 35 // ------------------------------------------------------------------- 36 // 37 // NuDEX code (https://doi.org/10.1016/j.nima.2022.167894) 38 // 39 40 41 #ifndef NUDEXINTERNALCONVERSION_HH 42 #define NUDEXINTERNALCONVERSION_HH 1 43 44 45 #include <cstdlib> 46 #include <iostream> 47 #include <fstream> 48 #include <cmath> 49 #include <cstring> 50 51 #include "G4NuDEXRandom.hh" 52 53 #define ICC_MAXNSHELLS 40 54 #define ICC_NMULTIP 5 55 #define MINZINTABLES 10 //below this value, the alpha is always 0 56 57 /* 58 Class to manage the internal conversion factors and the generation of converted-e- 59 Still not included the fluorescence-auger effects, i.e., what happens with the hole 60 We read the occ factors from a file, and they are stored in a matrix 61 The total Icc are in index=0 (data from the libraries) and index=NShells (sum of the partials) 62 Data are taken from: https://doi.org/10.1006/adnd.2002.0884 63 */ 64 65 class G4NuDEXInternalConversion{ 66 67 public: 68 G4NuDEXInternalConversion(G4int Z); 69 ~G4NuDEXInternalConversion(); 70 void Init(const char* fname); 71 void PrintICC(std::ostream &out); 72 G4double GetICC(G4double Ene,G4int multipolarity,G4int i_shell=-1); 73 G4bool SampleInternalConversion(G4double Ene,G4int multipolarity,G4double alpha=-1,G4bool CalculateProducts=true); 74 void FillElectronHole(G4int i_shell); //Fluorescence/auger 75 void SetRandom4Seed(unsigned int seed){theRandom4->SetSeed(seed);} 76 77 78 private: 79 G4double Interpolate(G4double val,G4int npoints,G4double* x,G4double* y); 80 void MakeTotal(); 81 82 83 private: 84 G4int theZ,NShells; 85 G4double BindingEnergy[ICC_MAXNSHELLS]; 86 G4double *Eg[ICC_MAXNSHELLS],*Icc_E[ICC_NMULTIP][ICC_MAXNSHELLS],*Icc_M[ICC_NMULTIP][ICC_MAXNSHELLS]; 87 G4int np[ICC_MAXNSHELLS]; 88 std::string OrbitalName[ICC_MAXNSHELLS]; 89 G4NuDEXRandom* theRandom4; 90 91 public: 92 G4int Ne,Ng; 93 G4double Eele[100],Egam[100]; 94 }; 95 96 97 98 #endif 99 100