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 // 29 // ClassName: 30 // 31 // Author: 2010 Tatsumi Koi, Gunter Folger 32 // 33 // created from FTFP_BERT 34 // 35 // Modified: 36 // 05.08.2014 K.L.Genser: added provision for 37 // 16.08.2010 H.Kurashige: Remove inclusion of 38 // 26.04.2011 T.Koi: Add G4RadioactiveDecayPhy 39 // 16.10.2012 A.Ribon: Use new default stoppin 40 // 07.11.2013 T.Koi: Add IonElasticPhysics, Se 41 // low energy recoils and ac 42 // fragments 43 // 06.08.2019 A.Ribon: Replacing explicit valu 44 // region with values from 45 // 46 //-------------------------------------------- 47 // 48 49 #include "Shielding.hh" 50 #include "globals.hh" 51 52 #include "G4DecayPhysics.hh" 53 #include "G4RadioactiveDecayPhysics.hh" 54 #include "G4EmStandardPhysics.hh" 55 #include "G4EmStandardPhysics_option4.hh" 56 #include "G4EmExtraPhysics.hh" 57 #include "G4IonQMDPhysics.hh" 58 #include "G4LightIonQMDPhysics.hh" 59 #include "G4IonElasticPhysics.hh" 60 #include "G4StoppingPhysics.hh" 61 #include "G4HadronElasticPhysicsHP.hh" 62 #include "G4HadronElasticPhysicsLEND.hh" 63 #include "G4ParticleHPManager.hh" 64 65 #include "G4HadronPhysicsShielding.hh" 66 #include "G4HadronPhysicsShieldingLEND.hh" 67 #include "G4HadronicParameters.hh" 68 #include <CLHEP/Units/SystemOfUnits.h> 69 70 Shielding::Shielding(G4int verbose, const G4St 71 const G4String& HadrPhysV 72 { 73 G4String LEN_model = n_model; 74 size_t find = LEN_model.find("LEND__"); 75 G4String evaluation; 76 if ( find != G4String::npos ) 77 { 78 evaluation=LEN_model; 79 evaluation.erase(0,find+6); 80 LEN_model="LEND"; 81 } 82 83 if(verbose > 0) { 84 G4cout << "<<< Geant4 Physics List simulat 85 << HadrPhysVariant << G4endl; 86 if ( LEN_model=="LEND" ) { 87 G4cout << "<<< LEND will be used for low 88 } else { 89 G4cout << "<<< (Note that Shielding" << 90 << HadrPhysVariant << "_HP are equivale 91 } 92 } 93 defaultCutValue = 0.7*CLHEP::mm; 94 SetCutValue(0, "proton"); 95 SetVerboseLevel(verbose); 96 97 // EM Physics 98 RegisterPhysics( new G4EmStandardPhysics(ver 99 100 // Synchroton Radiation & GN Physics 101 G4EmExtraPhysics* emExtraPhysics = new G4EmE 102 if ( LEN_model == "LEND" ) { 103 // Use LEND model for Gamma Nuclear 104 emExtraPhysics->LENDGammaNuclear(true); 105 } 106 RegisterPhysics( emExtraPhysics ); 107 108 // Decays 109 RegisterPhysics( new G4DecayPhysics(verbose) 110 RegisterPhysics( new G4RadioactiveDecayPhysi 111 112 // Hadron Elastic scattering 113 if ( LEN_model == "HP" ) 114 { 115 RegisterPhysics( new G4HadronElasticPhysi 116 } 117 else if ( LEN_model == "LEND" ) 118 { 119 RegisterPhysics( new G4HadronElasticPhysi 120 } 121 else 122 { 123 if(verbose > 0) { 124 G4cout << "Shielding Physics List: Warn 125 G4cout << "\"" << LEN_model 126 << "\" is not valid for the low 127 G4cout << "Neutron HP package will be u 128 } 129 RegisterPhysics( new G4HadronElasticPhysi 130 } 131 132 G4VPhysicsConstructor* hpc; 133 // Hadron Physics HP or LEND 134 if (HadrPhysVariant == "M") { 135 // The variant "M" has a special, dedicat 136 // between the string model and cascade m 137 // values from G4HadronicParameters are i 138 hpc = new G4HadronPhysicsShielding("hInel 139 9.5*CL 140 } else { 141 hpc = new G4HadronPhysicsShielding("hInel 142 G4Hadr 143 G4Hadr 144 } 145 146 if ( LEN_model == "LEND" ) { 147 delete hpc; 148 if (HadrPhysVariant == "M") { 149 // The variant "M" has a special, dedi 150 // between the string model and cascad 151 // values from G4HadronicParameters ar 152 hpc = new G4HadronPhysicsShieldingLEND 153 154 } else { 155 hpc = new G4HadronPhysicsShieldingLEND 156 157 158 } 159 } else { 160 //G4cout << "Shielding Physics List: Warn 161 //G4cout << "Name of Low Energy Neutron m 162 // << " is invalid." <<G4endl; 163 //G4cout << "Will use neutron HP package. 164 } 165 RegisterPhysics( hpc ); 166 167 if ( LEN_model == "HP" ) { 168 //Activate prodcuton of fission fragments 169 G4ParticleHPManager::GetInstance()->SetPr 170 } 171 172 // Stopping Physics 173 RegisterPhysics( new G4StoppingPhysics(verbo 174 175 // Ion Physics 176 RegisterPhysics( new G4IonElasticPhysics(ver 177 if (useLightIonQMD){ 178 RegisterPhysics( new G4LightIonQMDPhysics( 179 } else { 180 RegisterPhysics( new G4IonQMDPhysics(verbo 181 } 182 } 183