Geant4 Cross Reference |
1 // 1 // 2 // ******************************************* 2 // ******************************************************************** 3 // * License and Disclaimer 3 // * License and Disclaimer * 4 // * 4 // * * 5 // * The Geant4 software is copyright of th 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/ 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. 9 // * include a list of copyright holders. * 10 // * 10 // * * 11 // * Neither the authors of this software syst 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing fin 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warran 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assum 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitatio 16 // * for the full disclaimer and the limitation of liability. * 17 // * 17 // * * 18 // * This code implementation is the result 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboratio 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distri 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you ag 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publicati 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Sof 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************* 24 // ******************************************************************** 25 // 25 // 26 /* 26 /* 27 Author: Susanna Guatelli 27 Author: Susanna Guatelli 28 */ 28 */ 29 // 29 // 30 // ********************************** 30 // ********************************** 31 // * * 31 // * * 32 // * BrachyPhysicsList.cc * 32 // * BrachyPhysicsList.cc * 33 // * * 33 // * * 34 // ********************************** 34 // ********************************** 35 // 35 // 36 #include "BrachyPhysicsList.hh" << 37 #include "BrachyPhysicsListMessenger.hh" << 38 #include "G4EmStandardPhysics_option4.hh" 36 #include "G4EmStandardPhysics_option4.hh" 39 #include "G4EmLivermorePhysics.hh" 37 #include "G4EmLivermorePhysics.hh" 40 #include "G4EmStandardPhysics.hh" 38 #include "G4EmStandardPhysics.hh" 41 #include "G4EmStandardPhysics_option1.hh" 39 #include "G4EmStandardPhysics_option1.hh" 42 #include "G4EmStandardPhysics_option2.hh" 40 #include "G4EmStandardPhysics_option2.hh" 43 #include "G4EmStandardPhysics_option3.hh" 41 #include "G4EmStandardPhysics_option3.hh" 44 #include "G4EmStandardPhysics_option4.hh" 42 #include "G4EmStandardPhysics_option4.hh" 45 #include "G4DecayPhysics.hh" 43 #include "G4DecayPhysics.hh" 46 #include "G4RadioactiveDecayPhysics.hh" 44 #include "G4RadioactiveDecayPhysics.hh" 47 #include "G4EmPenelopePhysics.hh" 45 #include "G4EmPenelopePhysics.hh" >> 46 #include "BrachyPhysicsList.hh" 48 #include "G4VPhysicsConstructor.hh" 47 #include "G4VPhysicsConstructor.hh" 49 #include "G4ParticleDefinition.hh" 48 #include "G4ParticleDefinition.hh" 50 #include "G4ProductionCutsTable.hh" 49 #include "G4ProductionCutsTable.hh" 51 #include "G4ProcessManager.hh" 50 #include "G4ProcessManager.hh" 52 #include "G4ParticleTypes.hh" 51 #include "G4ParticleTypes.hh" 53 #include "G4ios.hh" 52 #include "G4ios.hh" 54 #include "G4StepLimiter.hh" 53 #include "G4StepLimiter.hh" 55 #include "G4ParticleDefinition.hh" 54 #include "G4ParticleDefinition.hh" 56 #include "globals.hh" 55 #include "globals.hh" 57 #include "G4SystemOfUnits.hh" 56 #include "G4SystemOfUnits.hh" 58 #include "G4UAtomicDeexcitation.hh" << 57 #include "BrachyPhysicsListMessenger.hh" 59 #include "G4LossTableManager.hh" << 60 58 61 BrachyPhysicsList::BrachyPhysicsList(): G4VMo 59 BrachyPhysicsList::BrachyPhysicsList(): G4VModularPhysicsList() 62 { 60 { 63 SetVerboseLevel(1); 61 SetVerboseLevel(1); 64 << 62 65 G4ProductionCutsTable::GetProductionCutsTable( << 66 SetDefaultCutValue(0.05 *mm); << 67 DumpCutValuesTable(); << 68 << 69 // EM physics: default 63 // EM physics: default 70 fEmPhysicsList = new G4EmLivermorePhysics(); 64 fEmPhysicsList = new G4EmLivermorePhysics(); 71 fEmName="emlivermore"; 65 fEmName="emlivermore"; 72 66 73 // Add Decay 67 // Add Decay 74 fDecPhysicsList = new G4DecayPhysics(); 68 fDecPhysicsList = new G4DecayPhysics(); 75 fRadDecayPhysicsList = new G4RadioactiveDecayP 69 fRadDecayPhysicsList = new G4RadioactiveDecayPhysics(); 76 fMessenger = new BrachyPhysicsListMessenger(th 70 fMessenger = new BrachyPhysicsListMessenger(this); 77 } 71 } 78 72 79 BrachyPhysicsList::~BrachyPhysicsList() 73 BrachyPhysicsList::~BrachyPhysicsList() 80 { 74 { 81 delete fMessenger; 75 delete fMessenger; 82 delete fDecPhysicsList; 76 delete fDecPhysicsList; 83 delete fRadDecayPhysicsList; 77 delete fRadDecayPhysicsList; 84 delete fEmPhysicsList; 78 delete fEmPhysicsList; 85 } 79 } 86 80 87 void BrachyPhysicsList::ConstructParticle() 81 void BrachyPhysicsList::ConstructParticle() 88 { 82 { 89 fDecPhysicsList -> ConstructParticle(); 83 fDecPhysicsList -> ConstructParticle(); 90 } 84 } 91 85 92 void BrachyPhysicsList::ConstructProcess() 86 void BrachyPhysicsList::ConstructProcess() 93 { 87 { 94 AddTransportation(); 88 AddTransportation(); 95 fEmPhysicsList -> ConstructProcess(); 89 fEmPhysicsList -> ConstructProcess(); 96 90 97 // decay physics list 91 // decay physics list 98 fDecPhysicsList -> ConstructProcess(); 92 fDecPhysicsList -> ConstructProcess(); 99 fRadDecayPhysicsList -> ConstructProcess(); 93 fRadDecayPhysicsList -> ConstructProcess(); 100 << 101 // Deexcitation << 102 // Both Fluorescence and Auger e- emission act << 103 G4VAtomDeexcitation* de = new G4UAtomicDeexcit << 104 G4LossTableManager::Instance()->SetAtomDeexcit << 105 de -> SetFluo(true); << 106 de -> SetAuger(true); << 107 << 108 // To model full Auger cascade include in the << 109 // the following UI commands: << 110 // process/em/augerCascade true << 111 // process/em/deexcitationIgnoreCut true << 112 } 94 } 113 95 >> 96 114 void BrachyPhysicsList::AddPhysicsList(const G 97 void BrachyPhysicsList::AddPhysicsList(const G4String& name) 115 { 98 { 116 99 117 if (name == fEmName) return; 100 if (name == fEmName) return; 118 101 119 if (name == "emstandard_opt0"){ 102 if (name == "emstandard_opt0"){ 120 fEmName = name; 103 fEmName = name; 121 delete fEmPhysicsList; 104 delete fEmPhysicsList; 122 fEmPhysicsList = new G4EmStandardPhysics() 105 fEmPhysicsList = new G4EmStandardPhysics(); 123 G4cout << "PhysicsList::AddPhysicsList: <" 106 G4cout << "PhysicsList::AddPhysicsList: <" << name << ">" << G4endl; 124 107 125 } else if (name == "emstandard_opt1"){ 108 } else if (name == "emstandard_opt1"){ 126 fEmName = name; 109 fEmName = name; 127 delete fEmPhysicsList; 110 delete fEmPhysicsList; 128 fEmPhysicsList = new G4EmStandardPhysics_o 111 fEmPhysicsList = new G4EmStandardPhysics_option1(); 129 G4cout << "PhysicsList::AddPhysicsList: <" 112 G4cout << "PhysicsList::AddPhysicsList: <" << name << ">" << G4endl; 130 } else if (name == "emstandard_opt2"){ 113 } else if (name == "emstandard_opt2"){ 131 fEmName = name; 114 fEmName = name; 132 delete fEmPhysicsList; 115 delete fEmPhysicsList; 133 fEmPhysicsList = new G4EmStandardPhysics_o 116 fEmPhysicsList = new G4EmStandardPhysics_option2(); 134 G4cout << "PhysicsList::AddPhysicsList: <" 117 G4cout << "PhysicsList::AddPhysicsList: <" << name << ">" << G4endl; 135 } else if (name == "emstandard_opt3"){ 118 } else if (name == "emstandard_opt3"){ 136 fEmName = name; 119 fEmName = name; 137 delete fEmPhysicsList; 120 delete fEmPhysicsList; 138 fEmPhysicsList = new G4EmStandardPhysics_o 121 fEmPhysicsList = new G4EmStandardPhysics_option3(); 139 G4cout << "PhysicsList::AddPhysicsList: <" 122 G4cout << "PhysicsList::AddPhysicsList: <" << name << ">" << G4endl; 140 } else if (name == "emstandard_opt4"){ 123 } else if (name == "emstandard_opt4"){ 141 fEmName = name; 124 fEmName = name; 142 delete fEmPhysicsList; 125 delete fEmPhysicsList; 143 fEmPhysicsList = new G4EmStandardPhysics_o 126 fEmPhysicsList = new G4EmStandardPhysics_option4(); 144 G4cout << "PhysicsList::AddPhysicsList: <" 127 G4cout << "PhysicsList::AddPhysicsList: <" << name << ">" << G4endl; 145 } else if (name == "empenelope"){ 128 } else if (name == "empenelope"){ 146 fEmName = name; 129 fEmName = name; 147 delete fEmPhysicsList; 130 delete fEmPhysicsList; 148 fEmPhysicsList = new G4EmPenelopePhysics() 131 fEmPhysicsList = new G4EmPenelopePhysics(); 149 G4cout << "PhysicsList::AddPhysicsList: <" 132 G4cout << "PhysicsList::AddPhysicsList: <" << name << ">" << G4endl; 150 } else if (name == "emlivermore"){ 133 } else if (name == "emlivermore"){ 151 fEmName = name; 134 fEmName = name; 152 delete fEmPhysicsList; 135 delete fEmPhysicsList; 153 fEmPhysicsList = new G4EmLivermorePhysics( 136 fEmPhysicsList = new G4EmLivermorePhysics(); 154 G4cout << "PhysicsList::AddPhysicsList: <" 137 G4cout << "PhysicsList::AddPhysicsList: <" << name << ">" << G4endl; 155 } else { 138 } else { 156 139 157 G4cout << "PhysicsList::AddPhysicsList: <" 140 G4cout << "PhysicsList::AddPhysicsList: <" << name << ">" 158 << " is not defined" 141 << " is not defined" 159 << G4endl; 142 << G4endl; 160 } 143 } 161 G4cout << "PhysicsList::AddPhysicsList: <" < 144 G4cout << "PhysicsList::AddPhysicsList: <" << name << ">" 162 << " is activated" 145 << " is activated" 163 << G4endl; 146 << G4endl; 164 } 147 } 165 148 >> 149 void BrachyPhysicsList::SetCuts() >> 150 { >> 151 // Definition of threshold of production >> 152 // of secondary particles >> 153 // This is defined in range. >> 154 defaultCutValue = 0.05 * mm; >> 155 SetCutValue(defaultCutValue, "gamma"); >> 156 SetCutValue(defaultCutValue, "e-"); >> 157 SetCutValue(defaultCutValue, "e+"); >> 158 >> 159 // By default the low energy limit to produce >> 160 // secondary particles is 990 eV. >> 161 // This value is correct when using the EM Standard Physics. >> 162 // When using the Low Energy Livermore this value can be >> 163 // changed to 250 eV corresponding to the limit >> 164 // of validity of the physics models. >> 165 // Comment out following three lines if the >> 166 // Standard electromagnetic Package is adopted. >> 167 G4double lowLimit = 250. * eV; >> 168 G4double highLimit = 100. * GeV; >> 169 >> 170 G4ProductionCutsTable::GetProductionCutsTable()->SetEnergyRange(lowLimit, >> 171 highLimit); >> 172 >> 173 // Print the cuts >> 174 if (verboseLevel>0) DumpCutValuesTable(); >> 175 } 166 176