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 /// \file radiobiology/src/PhysicsList.cc 28 /// \brief Implementation of the RadioBio::Phy 29 // 30 // 31 // 'HADRONTHERAPY_1' and 'HADRONTHERAPY_2' are 32 // It can be activated inside any macro file u 33 // /Physics/addPhysics HADRONTHERAPY_1 (HADRON 34 35 #include "PhysicsList.hh" 36 37 #include "G4DecayPhysics.hh" 38 #include "G4EmExtraPhysics.hh" 39 #include "G4EmStandardPhysics.hh" 40 #include "G4EmStandardPhysics_option4.hh" 41 #include "G4HadronElasticPhysics.hh" 42 #include "G4HadronElasticPhysicsHP.hh" 43 #include "G4HadronPhysicsQGSP_BIC.hh" 44 #include "G4HadronPhysicsQGSP_BIC_AllHP.hh" 45 #include "G4HadronPhysicsQGSP_BIC_HP.hh" 46 #include "G4IonBinaryCascadePhysics.hh" 47 #include "G4LossTableManager.hh" 48 #include "G4NeutronTrackingCut.hh" 49 #include "G4RadioactiveDecayPhysics.hh" 50 #include "G4RunManager.hh" 51 #include "G4StoppingPhysics.hh" 52 #include "G4SystemOfUnits.hh" 53 #include "G4VPhysicsConstructor.hh" 54 55 #include "PhysicsListMessenger.hh" 56 57 namespace RadioBio 58 { 59 60 //....oooOO0OOooo........oooOO0OOooo........oo 61 62 PhysicsList::PhysicsList() : G4VModularPhysics 63 { 64 // Set default cut values 65 G4LossTableManager::Instance(); 66 defaultCutValue = 1. * mm; 67 fCutForGamma = defaultCutValue; 68 fCutForElectron = defaultCutValue; 69 fCutForPositron = defaultCutValue; 70 71 fPhysMessenger = new PhysicsListMessenger(th 72 SetVerboseLevel(1); 73 74 // Create default decay physics 75 fDecayPhysicsList = new G4DecayPhysics(); 76 77 // Create default electromagnetic physics 78 fEmPhysicsList = new G4EmStandardPhysics_opt 79 } 80 81 //....oooOO0OOooo........oooOO0OOooo........oo 82 83 PhysicsList::~PhysicsList() 84 { 85 delete fPhysMessenger; 86 delete fEmPhysicsList; 87 delete fDecayPhysicsList; 88 89 // Destroy hadronic physics 90 for (size_t i = 0; i < fHadronPhys.size(); i 91 delete fHadronPhys[i]; 92 } 93 94 // Clear pointers 95 fHadronPhys.clear(); 96 } 97 98 //....oooOO0OOooo........oooOO0OOooo........oo 99 100 void PhysicsList::ConstructParticle() 101 { 102 fDecayPhysicsList->ConstructParticle(); 103 } 104 105 //....oooOO0OOooo........oooOO0OOooo........oo 106 107 void PhysicsList::ConstructProcess() 108 { 109 // Transportation 110 AddTransportation(); 111 112 // Construct default decay and EM processes 113 fDecayPhysicsList->ConstructProcess(); 114 fEmPhysicsList->ConstructProcess(); 115 116 // Construct hadronic processes 117 for (size_t i = 0; i < fHadronPhys.size(); i 118 fHadronPhys[i]->ConstructProcess(); 119 } 120 } 121 122 //....oooOO0OOooo........oooOO0OOooo........oo 123 124 void PhysicsList::AddPhysicsList(const G4Strin 125 { 126 if (verboseLevel > 1) { 127 G4cout << "PhysicsList::AddPhysicsList: <" 128 } 129 if (name == fEmName) return; 130 131 /////////////////////////////////// 132 // ELECTROMAGNETIC MODELS 133 /////////////////////////////////// 134 if (name == "standard_opt4") { 135 fEmName = name; 136 delete fEmPhysicsList; 137 fHadronPhys.clear(); 138 fEmPhysicsList = new G4EmStandardPhysics_o 139 G4RunManager::GetRunManager()->PhysicsHasB 140 if (verboseLevel > 1) { 141 G4cout << "THE FOLLOWING ELECTROMAGNETIC 142 << "G4EmStandardPhysics_option4" 143 } 144 145 //////////////////////////////////////// 146 // ELECTROMAGNETIC + HADRONIC MODELS 147 //////////////////////////////////////// 148 } 149 else if (name == "HADRONTHERAPY_1") { 150 AddPhysicsList("standard_opt4"); 151 fHadronPhys.push_back(new G4RadioactiveDec 152 fHadronPhys.push_back(new G4IonBinaryCasca 153 fHadronPhys.push_back(new G4EmExtraPhysics 154 fHadronPhys.push_back(new G4HadronElasticP 155 fHadronPhys.push_back(new G4StoppingPhysic 156 fHadronPhys.push_back(new G4HadronPhysicsQ 157 fHadronPhys.push_back(new G4NeutronTrackin 158 159 G4cout << "HADRONTHERAPY_1 PHYSICS LIST ha 160 } 161 162 else if (name == "HADRONTHERAPY_2") { 163 // HP models are switched off 164 AddPhysicsList("standard_opt4"); 165 fHadronPhys.push_back(new G4RadioactiveDec 166 fHadronPhys.push_back(new G4IonBinaryCasca 167 fHadronPhys.push_back(new G4EmExtraPhysics 168 fHadronPhys.push_back(new G4HadronElasticP 169 fHadronPhys.push_back(new G4StoppingPhysic 170 fHadronPhys.push_back(new G4HadronPhysicsQ 171 fHadronPhys.push_back(new G4NeutronTrackin 172 173 G4cout << "HADRONTHERAPY_2 PHYSICS LIST ha 174 } 175 else { 176 G4Exception("PhysicsList::AddPhysicsList", 177 (name + " is not a defined phy 178 } 179 } 180 181 //....oooOO0OOooo........oooOO0OOooo........oo 182 183 } // namespace RadioBio