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 FlashPhysicsList.cc 28 /// \brief Implementation of the FlashPhysicsL 29 30 #include "FlashPhysicsList.hh" 31 #include "FlashPhysicsListMessenger.hh" 32 #include "G4DecayPhysics.hh" 33 #include "G4EmLivermorePhysics.hh" 34 #include "G4EmPenelopePhysics.hh" 35 #include "G4EmStandardPhysics.hh" 36 #include "G4EmStandardPhysics_option4.hh" 37 #include "G4EmStandardPhysics_option3.hh" 38 #include "G4PhysListFactory.hh" 39 #include "G4ProductionCuts.hh" 40 #include "G4RadioactiveDecayPhysics.hh" 41 #include "G4Region.hh" 42 #include "G4RegionStore.hh" 43 #include "G4SystemOfUnits.hh" 44 45 FlashPhysicsList::FlashPhysicsList() : G4VModu 46 47 48 49 pMessenger = new FlashPhysicsListMessenger 50 SetVerboseLevel(2); 51 52 // EM physics 53 emPhysicsList = new G4EmStandardPhysics_opti 54 emName = G4String("emstandard_opt4"); 55 56 // Decay physics and all particles 57 decPhysicsList = new G4DecayPhysics(); 58 59 // Radioactive physics and all particles 60 radPhysicsList=new G4RadioactiveDecayPhysics 61 62 63 } 64 65 FlashPhysicsList::~FlashPhysicsList() { 66 67 delete pMessenger; 68 delete emPhysicsList; 69 delete decPhysicsList; 70 delete radPhysicsList; 71 72 } 73 74 75 void FlashPhysicsList::AddPackage(const G4Stri 76 { 77 G4PhysListFactory factory; 78 G4VModularPhysicsList* phys =factory.GetRefe 79 G4int i=0; 80 const G4VPhysicsConstructor* elem= phys->Get 81 G4VPhysicsConstructor* tmp = const_cast<G4VP 82 while (elem !=0) 83 { 84 RegisterPhysics(tmp); 85 elem= phys->GetPhysics(++i) ; 86 tmp = const_cast<G4VPhysicsConstructor*> ( 87 } 88 } 89 90 91 92 93 void FlashPhysicsList::ConstructParticle() 94 { 95 decPhysicsList->ConstructParticle(); 96 } 97 98 void FlashPhysicsList::ConstructProcess() 99 { 100 // transportation 101 // 102 AddTransportation(); 103 104 // electromagnetic physics list 105 // 106 emPhysicsList->ConstructProcess(); 107 em_config.AddModels(); 108 109 decPhysicsList->ConstructProcess(); 110 radPhysicsList->ConstructProcess(); 111 112 } 113 114 void FlashPhysicsList::AddPhysicsList(const G4 115 { 116 117 if (verboseLevel>1) { 118 G4cout << "PhysicsList::AddPhysicsList: <" 119 } 120 if (name == emName) return; 121 122 //////////////////////////////////////////// 123 // ELECTROMAGNETIC MODELS 124 //////////////////////////////////////////// 125 126 if (name == "standard_opt3") { 127 emName = name; 128 delete emPhysicsList; 129 emPhysicsList = new G4EmStandardPhysics_op 130 G4cout << "THE FOLLOWING ELECTROMAGNETIC P 131 } 132 else if (name == "standard_opt4") { 133 emName = name; 134 delete emPhysicsList; 135 emPhysicsList = new G4EmStandardPhysics_op 136 G4cout << "THE FOLLOWING ELECTROMAGNETIC P 137 138 139 } else if (name == "Livermore") { 140 emName = name; 141 delete emPhysicsList; 142 emPhysicsList = new G4EmLivermorePhysics() 143 G4cout << "THE FOLLOWING ELECTROMAGNETIC P 144 145 } else if (name == "Penelope") { 146 emName = name; 147 delete emPhysicsList; 148 emPhysicsList = new G4EmPenelopePhysics(); 149 G4cout << "THE FOLLOWING ELECTROMAGNETIC P 150 151 } 152 153 } 154 void FlashPhysicsList::SetCuts() {//set cuts b 155 156 SetCutsWithDefault(); 157 G4Region *region; 158 G4String regName; 159 G4ProductionCuts *cuts; 160 161 162 163 regName = "Phantom_reg"; 164 region = G4RegionStore::GetInstance()->GetRe 165 cuts = new G4ProductionCuts; 166 cuts->SetProductionCut(0.1 * mm, G4Productio 167 cuts->SetProductionCut(0.1 * mm, G4Productio 168 cuts->SetProductionCut(0.1 * mm, G4Productio 169 region->SetProductionCuts(cuts); 170 171 172 } 173 174 175 176