Geant4 Cross Reference |
1 // 1 2 // ******************************************* 3 // * License and Disclaimer 4 // * 5 // * The Geant4 software is copyright of th 6 // * the Geant4 Collaboration. It is provided 7 // * conditions of the Geant4 Software License 8 // * LICENSE and available at http://cern.ch/ 9 // * include a list of copyright holders. 10 // * 11 // * Neither the authors of this software syst 12 // * institutes,nor the agencies providing fin 13 // * work make any representation or warran 14 // * regarding this software system or assum 15 // * use. Please see the license in the file 16 // * for the full disclaimer and the limitatio 17 // * 18 // * This code implementation is the result 19 // * technical work of the GEANT4 collaboratio 20 // * By using, copying, modifying or distri 21 // * any work based on the software) you ag 22 // * use in resulting scientific publicati 23 // * acceptance of all terms of the Geant4 Sof 24 // ******************************************* 25 // 26 ////////////////////////////////////////////// 27 // 28 // File: G4LENDGammaCrossSection.cc 29 // Date: 30 March 2020 30 // Author: Dennis H. Wright 31 // 32 // Description: cross sections for inelastic 33 // nuclei including gamma-induce 34 // is very similar to G4LENDComb 35 // does not sample elastic or ca 36 // no such data for gammas in GN 37 // 38 ////////////////////////////////////////////// 39 40 #include "G4LENDGammaCrossSection.hh" 41 #include "G4LENDInelasticCrossSection.hh" 42 #include "G4LENDFissionCrossSection.hh" 43 #include "Randomize.hh" 44 45 46 G4LENDGammaCrossSection::G4LENDGammaCrossSecti 47 :G4LENDCrossSection("LENDGammaCrossSection") 48 { 49 proj = pd; 50 inelasticXS = new G4LENDInelasticCrossSectio 51 fissionXS = new G4LENDFissionCrossSection(pd 52 } 53 54 void G4LENDGammaCrossSection::BuildPhysicsTabl 55 { 56 inelasticXS->BuildPhysicsTable(pd); 57 fissionXS->BuildPhysicsTable(pd); 58 create_used_target_map(); 59 } 60 61 G4double 62 G4LENDGammaCrossSection::GetIsoCrossSection(co 63 G4 64 co 65 co 66 co 67 { 68 G4double XS = 0.0; 69 XS += inelasticXS->GetIsoCrossSection(dp, iZ 70 XS += fissionXS->GetIsoCrossSection(dp, iZ, 71 //G4cout << "G4LENDGammaCrossSection::GetIso 72 // << XS/CLHEP::barn << " [barn]" << G 73 return XS; 74 } 75 76 G4int G4LENDGammaCrossSection::SelectChannel(c 77 G 78 c 79 c 80 c 81 { 82 G4int ichannel = 1; 83 G4double XSs[2]; 84 XSs[0] = inelasticXS->GetIsoCrossSection(dp, 85 XSs[1] = XSs[0] + fissionXS->GetIsoCrossSect 86 87 G4double total = XSs[1]; 88 89 G4double random = G4UniformRand(); 90 for (G4int i = 0; i < 2; i++) { 91 if (random*total < XSs[i]) { 92 ichannel = i; 93 break; 94 } 95 } 96 97 return ichannel; 98 } 99 100