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 /// \file electromagnetic/TestEm1/src/PhysicsL << 26 // 27 /// \brief Implementation of the PhysicsList c << 27 // $Id: PhysicsList.cc,v 1.11 2008/11/16 21:56:11 maire Exp $ 28 // << 28 // GEANT4 tag $Name: geant4-09-02-patch-04 $ 29 // 29 // 30 //....oooOO0OOooo........oooOO0OOooo........oo 30 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 31 //....oooOO0OOooo........oooOO0OOooo........oo 31 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 32 32 33 #include "PhysicsList.hh" 33 #include "PhysicsList.hh" >> 34 #include "PhysicsListMessenger.hh" >> 35 >> 36 #include "PhysListEmStandard.hh" >> 37 #include "PhysListEmLivermore.hh" >> 38 #include "PhysListEmPenelope.hh" 34 39 35 #include "DetectorConstruction.hh" 40 #include "DetectorConstruction.hh" 36 #include "PhysListEmStandard.hh" << 37 #include "PhysicsListMessenger.hh" << 38 41 39 #include "G4EmLivermorePhysics.hh" << 40 #include "G4EmLowEPPhysics.hh" << 41 #include "G4EmParameters.hh" << 42 #include "G4EmPenelopePhysics.hh" << 43 #include "G4EmStandardPhysics.hh" << 44 #include "G4EmStandardPhysicsGS.hh" << 45 #include "G4EmStandardPhysicsSS.hh" << 46 #include "G4EmStandardPhysicsWVI.hh" << 47 #include "G4EmStandardPhysics_option1.hh" << 48 #include "G4EmStandardPhysics_option2.hh" << 49 #include "G4EmStandardPhysics_option3.hh" << 50 #include "G4EmStandardPhysics_option4.hh" << 51 #include "G4LossTableManager.hh" 42 #include "G4LossTableManager.hh" 52 #include "G4SystemOfUnits.hh" << 53 #include "G4UnitsTable.hh" 43 #include "G4UnitsTable.hh" 54 44 55 // particles << 56 << 57 #include "StepMax.hh" << 58 << 59 #include "G4BaryonConstructor.hh" << 60 #include "G4BosonConstructor.hh" << 61 #include "G4Decay.hh" << 62 #include "G4Electron.hh" << 63 #include "G4Gamma.hh" << 64 #include "G4GenericIon.hh" << 65 #include "G4IonConstructor.hh" << 66 #include "G4LeptonConstructor.hh" << 67 #include "G4Material.hh" << 68 #include "G4MesonConstructor.hh" << 69 #include "G4NuclideTable.hh" << 70 #include "G4PhysicsListHelper.hh" << 71 #include "G4ProcessManager.hh" << 72 #include "G4Proton.hh" << 73 #include "G4RadioactiveDecay.hh" << 74 #include "G4ShortLivedConstructor.hh" << 75 << 76 //....oooOO0OOooo........oooOO0OOooo........oo 45 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 77 46 78 PhysicsList::PhysicsList(DetectorConstruction* << 47 PhysicsList::PhysicsList(DetectorConstruction* p) >> 48 : G4VModularPhysicsList() 79 { 49 { 80 fMessenger = new PhysicsListMessenger(this); << 50 G4LossTableManager::Instance(); >> 51 pDet = p; >> 52 >> 53 currentDefaultCut = 1.0*mm; >> 54 cutForGamma = currentDefaultCut; >> 55 cutForElectron = currentDefaultCut; >> 56 cutForPositron = currentDefaultCut; >> 57 >> 58 pMessenger = new PhysicsListMessenger(this); >> 59 81 SetVerboseLevel(1); 60 SetVerboseLevel(1); 82 61 83 // EM physics 62 // EM physics 84 AddPhysicsList("emstandard_opt3"); << 63 emName = G4String("standard"); >> 64 emPhysicsList = new PhysListEmStandard(emName); 85 65 86 // fix lower limit for cut << 87 G4ProductionCutsTable::GetProductionCutsTabl << 88 SetDefaultCutValue(1 * mm); << 89 } 66 } 90 67 91 //....oooOO0OOooo........oooOO0OOooo........oo 68 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 92 69 93 PhysicsList::~PhysicsList() 70 PhysicsList::~PhysicsList() 94 { 71 { 95 delete fMessenger; << 72 delete pMessenger; 96 } 73 } 97 74 98 //....oooOO0OOooo........oooOO0OOooo........oo 75 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 99 76 100 void PhysicsList::ConstructParticle() << 77 // Bosons 101 { << 78 #include "G4ChargedGeantino.hh" 102 G4BosonConstructor pBosonConstructor; << 79 #include "G4Geantino.hh" 103 pBosonConstructor.ConstructParticle(); << 80 #include "G4Gamma.hh" >> 81 #include "G4OpticalPhoton.hh" 104 82 105 G4LeptonConstructor pLeptonConstructor; << 83 // leptons 106 pLeptonConstructor.ConstructParticle(); << 84 #include "G4MuonPlus.hh" >> 85 #include "G4MuonMinus.hh" >> 86 #include "G4NeutrinoMu.hh" >> 87 #include "G4AntiNeutrinoMu.hh" 107 88 108 G4MesonConstructor pMesonConstructor; << 89 #include "G4Electron.hh" 109 pMesonConstructor.ConstructParticle(); << 90 #include "G4Positron.hh" >> 91 #include "G4NeutrinoE.hh" >> 92 #include "G4AntiNeutrinoE.hh" >> 93 >> 94 // Mesons >> 95 #include "G4PionPlus.hh" >> 96 #include "G4PionMinus.hh" >> 97 #include "G4PionZero.hh" >> 98 #include "G4Eta.hh" >> 99 #include "G4EtaPrime.hh" >> 100 >> 101 #include "G4KaonPlus.hh" >> 102 #include "G4KaonMinus.hh" >> 103 #include "G4KaonZero.hh" >> 104 #include "G4AntiKaonZero.hh" >> 105 #include "G4KaonZeroLong.hh" >> 106 #include "G4KaonZeroShort.hh" 110 107 111 G4BaryonConstructor pBaryonConstructor; << 108 // Baryons 112 pBaryonConstructor.ConstructParticle(); << 109 #include "G4Proton.hh" >> 110 #include "G4AntiProton.hh" >> 111 #include "G4Neutron.hh" >> 112 #include "G4AntiNeutron.hh" >> 113 >> 114 // Nuclei >> 115 #include "G4Deuteron.hh" >> 116 #include "G4Triton.hh" >> 117 #include "G4Alpha.hh" >> 118 #include "G4GenericIon.hh" 113 119 114 G4IonConstructor pIonConstructor; << 120 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 115 pIonConstructor.ConstructParticle(); << 116 121 117 G4ShortLivedConstructor pShortLivedConstruct << 122 void PhysicsList::ConstructParticle() 118 pShortLivedConstructor.ConstructParticle(); << 123 { >> 124 // pseudo-particles >> 125 G4Geantino::GeantinoDefinition(); >> 126 G4ChargedGeantino::ChargedGeantinoDefinition(); >> 127 >> 128 // gamma >> 129 G4Gamma::GammaDefinition(); >> 130 >> 131 // optical photon >> 132 G4OpticalPhoton::OpticalPhotonDefinition(); >> 133 >> 134 // leptons >> 135 G4Electron::ElectronDefinition(); >> 136 G4Positron::PositronDefinition(); >> 137 G4MuonPlus::MuonPlusDefinition(); >> 138 G4MuonMinus::MuonMinusDefinition(); >> 139 >> 140 G4NeutrinoE::NeutrinoEDefinition(); >> 141 G4AntiNeutrinoE::AntiNeutrinoEDefinition(); >> 142 G4NeutrinoMu::NeutrinoMuDefinition(); >> 143 G4AntiNeutrinoMu::AntiNeutrinoMuDefinition(); >> 144 >> 145 // mesons >> 146 G4PionPlus::PionPlusDefinition(); >> 147 G4PionMinus::PionMinusDefinition(); >> 148 G4PionZero::PionZeroDefinition(); >> 149 G4Eta::EtaDefinition(); >> 150 G4EtaPrime::EtaPrimeDefinition(); >> 151 G4KaonPlus::KaonPlusDefinition(); >> 152 G4KaonMinus::KaonMinusDefinition(); >> 153 G4KaonZero::KaonZeroDefinition(); >> 154 G4AntiKaonZero::AntiKaonZeroDefinition(); >> 155 G4KaonZeroLong::KaonZeroLongDefinition(); >> 156 G4KaonZeroShort::KaonZeroShortDefinition(); >> 157 >> 158 // barions >> 159 G4Proton::ProtonDefinition(); >> 160 G4AntiProton::AntiProtonDefinition(); >> 161 G4Neutron::NeutronDefinition(); >> 162 G4AntiNeutron::AntiNeutronDefinition(); >> 163 >> 164 // ions >> 165 G4Deuteron::DeuteronDefinition(); >> 166 G4Triton::TritonDefinition(); >> 167 G4Alpha::AlphaDefinition(); >> 168 G4GenericIon::GenericIonDefinition(); 119 } 169 } 120 170 121 //....oooOO0OOooo........oooOO0OOooo........oo 171 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 122 172 >> 173 #include "G4EmProcessOptions.hh" >> 174 #include "G4Decay.hh" >> 175 #include "G4ProcessManager.hh" >> 176 123 void PhysicsList::ConstructProcess() 177 void PhysicsList::ConstructProcess() 124 { 178 { 125 // Transportation 179 // Transportation 126 // 180 // 127 AddTransportation(); 181 AddTransportation(); 128 182 129 // Electromagnetic physics list 183 // Electromagnetic physics list 130 // 184 // 131 fEmPhysicsList->ConstructProcess(); << 185 emPhysicsList->ConstructProcess(); 132 << 186 133 // Decay Process << 187 // Em options 134 // 188 // 135 AddDecay(); << 189 G4EmProcessOptions emOptions; 136 << 190 emOptions.SetBuildCSDARange(true); >> 191 emOptions.SetDEDXBinningForCSDARange(8*20); >> 192 137 // Decay Process 193 // Decay Process 138 // 194 // 139 AddRadioactiveDecay(); << 195 AddDecay(); 140 196 141 // step limitation (as a full process) 197 // step limitation (as a full process) 142 // << 198 // 143 AddStepMax(); << 199 AddStepMax(); 144 << 145 // example of Get process << 146 auto process = GetProcess("RadioactiveDecay" << 147 if (process != nullptr) { << 148 G4cout << "\n GetProcess : " << process-> << 149 } << 150 } 200 } 151 201 152 //....oooOO0OOooo........oooOO0OOooo........oo 202 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 153 203 154 void PhysicsList::AddPhysicsList(const G4Strin 204 void PhysicsList::AddPhysicsList(const G4String& name) 155 { 205 { 156 if (verboseLevel > 0) { << 206 if (verboseLevel>1) { 157 G4cout << "PhysicsList::AddPhysicsList: <" 207 G4cout << "PhysicsList::AddPhysicsList: <" << name << ">" << G4endl; 158 } 208 } >> 209 >> 210 if (name == emName) return; 159 211 160 if (name == fEmName) return; << 212 if (name == "standard") { >> 213 >> 214 emName = name; >> 215 delete emPhysicsList; >> 216 emPhysicsList = new PhysListEmStandard(name); >> 217 >> 218 } else if (name == "livermore") { >> 219 >> 220 emName = name; >> 221 delete emPhysicsList; >> 222 emPhysicsList = new PhysListEmLivermore(name); >> 223 >> 224 } else if (name == "penelope") { >> 225 >> 226 emName = name; >> 227 delete emPhysicsList; >> 228 emPhysicsList = new PhysListEmPenelope(name); >> 229 >> 230 } else { 161 231 162 if (name == "local") { << 163 fEmName = name; << 164 delete fEmPhysicsList; << 165 fEmPhysicsList = new PhysListEmStandard(na << 166 } << 167 else if (name == "emstandard_opt0") { << 168 fEmName = name; << 169 delete fEmPhysicsList; << 170 fEmPhysicsList = new G4EmStandardPhysics() << 171 } << 172 else if (name == "emstandard_opt1") { << 173 fEmName = name; << 174 delete fEmPhysicsList; << 175 fEmPhysicsList = new G4EmStandardPhysics_o << 176 } << 177 else if (name == "emstandard_opt2") { << 178 fEmName = name; << 179 delete fEmPhysicsList; << 180 fEmPhysicsList = new G4EmStandardPhysics_o << 181 } << 182 else if (name == "emstandard_opt3") { << 183 fEmName = name; << 184 delete fEmPhysicsList; << 185 fEmPhysicsList = new G4EmStandardPhysics_o << 186 } << 187 else if (name == "emstandard_opt4") { << 188 fEmName = name; << 189 delete fEmPhysicsList; << 190 fEmPhysicsList = new G4EmStandardPhysics_o << 191 } << 192 else if (name == "emstandardSS") { << 193 fEmName = name; << 194 delete fEmPhysicsList; << 195 fEmPhysicsList = new G4EmStandardPhysicsSS << 196 } << 197 else if (name == "emstandardGS") { << 198 fEmName = name; << 199 delete fEmPhysicsList; << 200 fEmPhysicsList = new G4EmStandardPhysicsGS << 201 } << 202 else if (name == "emstandardWVI") { << 203 fEmName = name; << 204 delete fEmPhysicsList; << 205 fEmPhysicsList = new G4EmStandardPhysicsWV << 206 } << 207 else if (name == "emlivermore") { << 208 fEmName = name; << 209 delete fEmPhysicsList; << 210 fEmPhysicsList = new G4EmLivermorePhysics( << 211 } << 212 else if (name == "empenelope") { << 213 fEmName = name; << 214 delete fEmPhysicsList; << 215 fEmPhysicsList = new G4EmPenelopePhysics() << 216 } << 217 else if (name == "emlowenergy") { << 218 fEmName = name; << 219 delete fEmPhysicsList; << 220 fEmPhysicsList = new G4EmLowEPPhysics(); << 221 } << 222 else { << 223 G4cout << "PhysicsList::AddPhysicsList: <" 232 G4cout << "PhysicsList::AddPhysicsList: <" << name << ">" 224 << " is not defined" << G4endl; << 233 << " is not defined" >> 234 << G4endl; 225 } 235 } 226 << 227 // Em options << 228 // << 229 G4EmParameters::Instance()->SetBuildCSDARang << 230 G4EmParameters::Instance()->SetGeneralProces << 231 } 236 } 232 << 233 //....oooOO0OOooo........oooOO0OOooo........oo 237 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 234 238 235 void PhysicsList::AddDecay() << 239 #include "G4Decay.hh" 236 { << 237 G4PhysicsListHelper* ph = G4PhysicsListHelpe << 238 240 >> 241 void PhysicsList::AddDecay() >> 242 { 239 // Decay Process 243 // Decay Process 240 // 244 // 241 G4Decay* fDecayProcess = new G4Decay(); 245 G4Decay* fDecayProcess = new G4Decay(); 242 246 243 auto particleIterator = GetParticleIterator( << 247 theParticleIterator->reset(); 244 particleIterator->reset(); << 248 while( (*theParticleIterator)() ){ 245 while ((*particleIterator)()) { << 249 G4ParticleDefinition* particle = theParticleIterator->value(); 246 G4ParticleDefinition* particle = particleI << 250 G4ProcessManager* pmanager = particle->GetProcessManager(); 247 if (fDecayProcess->IsApplicable(*particle) << 251 248 ph->RegisterProcess(fDecayProcess, parti << 252 if (fDecayProcess->IsApplicable(*particle)) { >> 253 >> 254 pmanager ->AddProcess(fDecayProcess); >> 255 >> 256 // set ordering for PostStepDoIt and AtRestDoIt >> 257 pmanager ->SetProcessOrdering(fDecayProcess, idxPostStep); >> 258 pmanager ->SetProcessOrdering(fDecayProcess, idxAtRest); >> 259 >> 260 } 249 } 261 } 250 } 262 } 251 263 252 //....oooOO0OOooo........oooOO0OOooo........oo 264 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 253 265 254 void PhysicsList::AddRadioactiveDecay() << 266 #include "StepMax.hh" 255 { << 256 G4RadioactiveDecay* radioactiveDecay = new G << 257 267 258 G4bool armFlag = false; << 268 void PhysicsList::AddStepMax() 259 radioactiveDecay->SetARM(armFlag); // Atomi << 269 { >> 270 // Step limitation seen as a process >> 271 StepMax* stepMaxProcess = new StepMax(); 260 272 261 // atomic de-excitation module << 273 theParticleIterator->reset(); 262 if (armFlag) { << 274 while ((*theParticleIterator)()){ 263 G4EmParameters::Instance()->SetAuger(true) << 275 G4ParticleDefinition* particle = theParticleIterator->value(); 264 G4EmParameters::Instance()->SetDeexcitatio << 276 G4ProcessManager* pmanager = particle->GetProcessManager(); >> 277 >> 278 if (stepMaxProcess->IsApplicable(*particle)) >> 279 { >> 280 pmanager ->AddDiscreteProcess(stepMaxProcess); >> 281 } 265 } 282 } >> 283 } >> 284 >> 285 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... >> 286 >> 287 #include "G4Gamma.hh" >> 288 #include "G4Electron.hh" >> 289 #include "G4Positron.hh" 266 290 267 G4PhysicsListHelper* ph = G4PhysicsListHelpe << 291 void PhysicsList::SetCuts() 268 ph->RegisterProcess(radioactiveDecay, G4Gene << 292 { >> 293 if (verboseLevel >0){ >> 294 G4cout << "PhysicsList::SetCuts:"; >> 295 G4cout << "CutLength : " << G4BestUnit(defaultCutValue,"Length") << G4endl; >> 296 } >> 297 >> 298 // set cut values for gamma at first and for e- second and next for e+, >> 299 // because some processes for e+/e- need cut values for gamma >> 300 SetCutValue(cutForGamma, "gamma"); >> 301 SetCutValue(cutForElectron, "e-"); >> 302 SetCutValue(cutForPositron, "e+"); 269 303 270 // mandatory for G4NuclideTable << 304 if (verboseLevel>0) DumpCutValuesTable(); 271 // << 272 const G4double meanLife = 1 * picosecond, ha << 273 G4NuclideTable::GetInstance()->SetThresholdO << 274 } 305 } 275 306 276 //....oooOO0OOooo........oooOO0OOooo........oo 307 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 277 308 278 void PhysicsList::AddStepMax() << 309 void PhysicsList::SetCutForGamma(G4double cut) 279 { 310 { 280 // Step limitation seen as a process << 311 cutForGamma = cut; 281 StepMax* stepMaxProcess = new StepMax(); << 312 SetParticleCuts(cutForGamma, G4Gamma::Gamma()); >> 313 } 282 314 283 auto particleIterator = GetParticleIterator( << 315 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 284 particleIterator->reset(); << 285 while ((*particleIterator)()) { << 286 G4ParticleDefinition* particle = particleI << 287 G4ProcessManager* pmanager = particle->Get << 288 316 289 if (stepMaxProcess->IsApplicable(*particle << 317 void PhysicsList::SetCutForElectron(G4double cut) 290 pmanager->AddDiscreteProcess(stepMaxProc << 318 { 291 } << 319 cutForElectron = cut; >> 320 SetParticleCuts(cutForElectron, G4Electron::Electron()); >> 321 } >> 322 >> 323 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... >> 324 >> 325 void PhysicsList::SetCutForPositron(G4double cut) >> 326 { >> 327 cutForPositron = cut; >> 328 SetParticleCuts(cutForPositron, G4Positron::Positron()); 292 } 329 } 293 330 294 //....oooOO0OOooo........oooOO0OOooo........oo 331 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 295 332 >> 333 #include "G4Material.hh" >> 334 296 void PhysicsList::GetRange(G4double val) 335 void PhysicsList::GetRange(G4double val) 297 { 336 { 298 G4LogicalVolume* lBox = fDet->GetWorld()->Ge << 337 G4LogicalVolume* lBox = pDet->GetWorld()->GetLogicalVolume(); >> 338 G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable(); 299 const G4MaterialCutsCouple* couple = lBox->G 339 const G4MaterialCutsCouple* couple = lBox->GetMaterialCutsCouple(); 300 const G4Material* currMat = lBox->GetMateria 340 const G4Material* currMat = lBox->GetMaterial(); 301 341 302 G4ParticleDefinition* part; 342 G4ParticleDefinition* part; 303 G4double cut; 343 G4double cut; 304 part = G4Electron::Electron(); << 344 part = particleTable->FindParticle("e-"); 305 cut = G4LossTableManager::Instance()->GetRan << 345 cut = G4LossTableManager::Instance()->GetRange(part,val,couple); 306 G4cout << "material : " << currMat->GetName( << 346 G4cout << "material : " << currMat->GetName() << G4endl; 307 G4cout << "particle : " << part->GetParticle << 347 G4cout << "particle : " << part->GetParticleName() << G4endl; 308 G4cout << "energy : " << G4BestUnit(val, " << 348 G4cout << "energy : " << G4BestUnit(val,"Energy") << G4endl; 309 G4cout << "range : " << G4BestUnit(cut, " << 349 G4cout << "range : " << G4BestUnit(cut,"Length") << G4endl; 310 } 350 } 311 351 312 //....oooOO0OOooo........oooOO0OOooo........oo 352 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 313 353 314 G4VProcess* PhysicsList::GetProcess(const G4St << 315 { << 316 G4ParticleDefinition* particle = G4GenericIo << 317 G4ProcessVector* procList = particle->GetPro << 318 G4int nbProc = particle->GetProcessManager() << 319 for (G4int k = 0; k < nbProc; k++) { << 320 G4VProcess* process = (*procList)[k]; << 321 if (process->GetProcessName() == processNa << 322 } << 323 return nullptr; << 324 } << 325 354 326 //....oooOO0OOooo........oooOO0OOooo........oo << 327 355