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 /// \file biasing/B03/src/B03PhysicsList.cc 27 /// \brief Implementation of the B03PhysicsLis 28 // 29 // 30 // 31 32 #include "B03PhysicsList.hh" 33 34 #include "G4BaryonConstructor.hh" 35 #include "G4BosonConstructor.hh" 36 #include "G4HadronicParameters.hh" 37 #include "G4IonConstructor.hh" 38 #include "G4LeptonConstructor.hh" 39 #include "G4Material.hh" 40 #include "G4MaterialTable.hh" 41 #include "G4MesonConstructor.hh" 42 #include "G4ParticleDefinition.hh" 43 #include "G4ParticleTable.hh" 44 #include "G4ParticleTypes.hh" 45 #include "G4ParticleWithCuts.hh" 46 #include "G4ProcessManager.hh" 47 #include "G4ProcessVector.hh" 48 #include "G4ShortLivedConstructor.hh" 49 #include "G4SystemOfUnits.hh" 50 #include "globals.hh" 51 52 #include <iomanip> 53 54 //....oooOO0OOooo........oooOO0OOooo........oo 55 56 B03PhysicsList::B03PhysicsList(G4String parall 57 : G4VUserPhysicsList(), fBiasWorldName(paral 58 { 59 fParaWorldName.clear(); 60 SetVerboseLevel(1); 61 } 62 63 //....oooOO0OOooo........oooOO0OOooo........oo 64 65 B03PhysicsList::~B03PhysicsList() 66 { 67 fParaWorldName.clear(); 68 } 69 70 //....oooOO0OOooo........oooOO0OOooo........oo 71 72 void B03PhysicsList::ConstructParticle() 73 { 74 // In this method, static member functions s 75 // for all particles which you want to use. 76 // This ensures that objects of these partic 77 // created in the program. 78 79 ConstructAllBosons(); 80 ConstructAllLeptons(); 81 ConstructAllMesons(); 82 ConstructAllBaryons(); 83 ConstructAllIons(); 84 ConstructAllShortLiveds(); 85 } 86 87 //....oooOO0OOooo........oooOO0OOooo........oo 88 89 void B03PhysicsList::ConstructAllBosons() 90 { 91 // Construct all bosons 92 G4BosonConstructor pConstructor; 93 pConstructor.ConstructParticle(); 94 } 95 96 //....oooOO0OOooo........oooOO0OOooo........oo 97 98 void B03PhysicsList::ConstructAllLeptons() 99 { 100 // Construct all leptons 101 G4LeptonConstructor pConstructor; 102 pConstructor.ConstructParticle(); 103 } 104 105 //....oooOO0OOooo........oooOO0OOooo........oo 106 107 void B03PhysicsList::ConstructAllMesons() 108 { 109 // Construct all mesons 110 G4MesonConstructor pConstructor; 111 pConstructor.ConstructParticle(); 112 } 113 114 //....oooOO0OOooo........oooOO0OOooo........oo 115 116 void B03PhysicsList::ConstructAllBaryons() 117 { 118 // Construct all barions 119 G4BaryonConstructor pConstructor; 120 pConstructor.ConstructParticle(); 121 } 122 123 //....oooOO0OOooo........oooOO0OOooo........oo 124 125 void B03PhysicsList::ConstructAllIons() 126 { 127 // Construct light ions 128 G4IonConstructor pConstructor; 129 pConstructor.ConstructParticle(); 130 } 131 132 //....oooOO0OOooo........oooOO0OOooo........oo 133 134 void B03PhysicsList::ConstructAllShortLiveds() 135 { 136 // Construct resonaces and quarks 137 G4ShortLivedConstructor pConstructor; 138 pConstructor.ConstructParticle(); 139 } 140 141 //....oooOO0OOooo........oooOO0OOooo........oo 142 143 void B03PhysicsList::ConstructProcess() 144 { 145 AddTransportation(); 146 AddScoringProcess(); 147 AddBiasingProcess(); 148 ConstructEM(); 149 ConstructLeptHad(); 150 ConstructHad(); 151 ConstructGeneral(); 152 } 153 154 //....oooOO0OOooo........oooOO0OOooo........oo 155 156 #include "G4ComptonScattering.hh" 157 #include "G4GammaConversion.hh" 158 #include "G4MuBremsstrahlung.hh" 159 #include "G4MuIonisation.hh" 160 #include "G4MuMultipleScattering.hh" 161 #include "G4MuPairProduction.hh" 162 #include "G4PhotoElectricEffect.hh" 163 #include "G4eBremsstrahlung.hh" 164 #include "G4eIonisation.hh" 165 #include "G4eMultipleScattering.hh" 166 #include "G4eplusAnnihilation.hh" 167 #include "G4hIonisation.hh" 168 #include "G4hMultipleScattering.hh" 169 170 void B03PhysicsList::ConstructEM() 171 { 172 auto particleIterator = GetParticleIterator( 173 particleIterator->reset(); 174 while ((*particleIterator)()) { 175 G4ParticleDefinition* particle = particleI 176 G4ProcessManager* pmanager = particle->Get 177 G4String particleName = particle->GetParti 178 179 if (particleName == "gamma") { 180 // gamma 181 // Construct processes for gamma 182 pmanager->AddDiscreteProcess(new G4Gamma 183 pmanager->AddDiscreteProcess(new G4Compt 184 pmanager->AddDiscreteProcess(new G4Photo 185 } 186 else if (particleName == "e-") { 187 // electron 188 // Construct processes for electron 189 pmanager->AddProcess(new G4eMultipleScat 190 pmanager->AddProcess(new G4eIonisation() 191 pmanager->AddProcess(new G4eBremsstrahlu 192 } 193 else if (particleName == "e+") { 194 // positron 195 // Construct processes for positron 196 pmanager->AddProcess(new G4eMultipleScat 197 198 pmanager->AddProcess(new G4eIonisation() 199 pmanager->AddProcess(new G4eBremsstrahlu 200 pmanager->AddProcess(new G4eplusAnnihila 201 } 202 else if (particleName == "mu+" || particle 203 // muon 204 // Construct processes for muon+ 205 pmanager->AddProcess(new G4MuMultipleSca 206 pmanager->AddProcess(new G4MuIonisation( 207 pmanager->AddProcess(new G4MuBremsstrahl 208 pmanager->AddProcess(new G4MuPairProduct 209 } 210 else if (particleName == "GenericIon") { 211 pmanager->AddProcess(new G4hMultipleScat 212 pmanager->AddProcess(new G4hIonisation() 213 } 214 else { 215 if ((particle->GetPDGCharge() != 0.0) && 216 && (!particle->IsShortLived())) 217 { 218 // all others charged particles except 219 pmanager->AddProcess(new G4hMultipleSc 220 pmanager->AddProcess(new G4hIonisation 221 } 222 } 223 } 224 } 225 226 //....oooOO0OOooo........oooOO0OOooo........oo 227 228 // Hadron Processes 229 230 #include "G4HadronElasticProcess.hh" 231 #include "G4HadronInelasticProcess.hh" 232 #include "G4NeutronCaptureProcess.hh" 233 #include "G4NeutronFissionProcess.hh" 234 235 // Low-energy Models 236 237 #include "G4HadronElastic.hh" 238 #include "G4LFission.hh" 239 #include "G4NeutronRadCapture.hh" 240 241 // -- generator models 242 #include "G4BinaryLightIonReaction.hh" 243 #include "G4CascadeInterface.hh" 244 #include "G4CompetitiveFission.hh" 245 #include "G4ExcitationHandler.hh" 246 #include "G4ExcitedStringDecay.hh" 247 #include "G4FTFModel.hh" 248 #include "G4Fancy3DNucleus.hh" 249 #include "G4GeneratorPrecompoundInterface.hh" 250 #include "G4LundStringFragmentation.hh" 251 #include "G4PreCompoundModel.hh" 252 #include "G4QGSMFragmentation.hh" 253 #include "G4QMDReaction.hh" 254 #include "G4StringModel.hh" 255 #include "G4TheoFSGenerator.hh" 256 257 // Cross sections 258 #include "G4ComponentGGHadronNucleusXsc.hh" 259 #include "G4ComponentGGNuclNuclXsc.hh" 260 #include "G4CrossSectionElastic.hh" 261 #include "G4CrossSectionInelastic.hh" 262 #include "G4NeutronInelasticXS.hh" 263 264 // 265 // ConstructHad() 266 // 267 // Makes discrete physics processes for the ha 268 // The processes are: Elastic scattering, Inel 269 // Fission (for neutron only), and Capture (ne 270 // 271 272 void B03PhysicsList::ConstructHad() 273 { 274 // this will be the model class for high ene 275 G4TheoFSGenerator* theTheoModel = new G4Theo 276 G4TheoFSGenerator* antiBHighEnergyModel = ne 277 278 // Evaporation logic 279 G4ExcitationHandler* theHandler = new G4Exci 280 theHandler->SetMinEForMultiFrag(3 * MeV); 281 282 // Pre equilibrium stage 283 G4PreCompoundModel* thePreEquilib = new G4Pr 284 285 // a no-cascade generator-precompound intera 286 G4GeneratorPrecompoundInterface* theCascade 287 theCascade->SetDeExcitation(thePreEquilib); 288 289 // Bertini cascade 290 G4CascadeInterface* bertini = new G4CascadeI 291 bertini->SetMaxEnergy(22 * MeV); 292 293 // here come the high energy parts 294 G4VPartonStringModel* theStringModel; 295 theStringModel = new G4FTFModel; 296 theTheoModel->SetTransport(theCascade); 297 theTheoModel->SetHighEnergyGenerator(theStri 298 theTheoModel->SetMinEnergy(19 * GeV); 299 theTheoModel->SetMaxEnergy(G4HadronicParamet 300 301 G4VLongitudinalStringDecay* theFragmentation 302 G4ExcitedStringDecay* theStringDecay = new G 303 theStringModel->SetFragmentationModel(theStr 304 305 // high energy model for anti-baryons 306 antiBHighEnergyModel = new G4TheoFSGenerator 307 G4FTFModel* antiBStringModel = new G4FTFMode 308 G4ExcitedStringDecay* stringDecay = new G4Ex 309 antiBStringModel->SetFragmentationModel(stri 310 311 G4GeneratorPrecompoundInterface* antiBCascad 312 G4PreCompoundModel* preEquilib = new G4PreCo 313 antiBCascade->SetDeExcitation(preEquilib); 314 315 antiBHighEnergyModel->SetTransport(antiBCasc 316 antiBHighEnergyModel->SetHighEnergyGenerator 317 antiBHighEnergyModel->SetMinEnergy(0.0); 318 antiBHighEnergyModel->SetMaxEnergy(20 * TeV) 319 320 // Light ion models 321 G4BinaryLightIonReaction* binaryCascade = ne 322 binaryCascade->SetMinEnergy(0.0); 323 binaryCascade->SetMaxEnergy(110 * MeV); 324 325 G4QMDReaction* qmd = new G4QMDReaction; 326 qmd->SetMinEnergy(100 * MeV); 327 qmd->SetMaxEnergy(10 * GeV); 328 329 G4VCrossSectionDataSet* ionXS = new G4CrossS 330 331 G4ComponentGGHadronNucleusXsc* ggHNXsec = ne 332 G4VCrossSectionDataSet* theGGHNEl = new G4Cr 333 G4VCrossSectionDataSet* theGGHNInel = new G4 334 335 // Elastic process 336 G4HadronElasticProcess* theElasticProcess = 337 theElasticProcess->AddDataSet(theGGHNEl); 338 G4HadronElastic* theElasticModel = new G4Had 339 theElasticProcess->RegisterMe(theElasticMode 340 341 auto particleIterator = GetParticleIterator( 342 particleIterator->reset(); 343 while ((*particleIterator)()) { 344 G4ParticleDefinition* particle = particleI 345 G4ProcessManager* pmanager = particle->Get 346 G4String particleName = particle->GetParti 347 348 if (particleName == "pi+") { 349 pmanager->AddDiscreteProcess(theElasticP 350 G4HadronInelasticProcess* theInelasticPr 351 new G4HadronInelasticProcess("inelasti 352 theInelasticProcess->AddDataSet(theGGHNI 353 theInelasticProcess->RegisterMe(bertini) 354 theInelasticProcess->RegisterMe(theTheoM 355 pmanager->AddDiscreteProcess(theInelasti 356 } 357 else if (particleName == "pi-") { 358 pmanager->AddDiscreteProcess(theElasticP 359 G4HadronInelasticProcess* theInelasticPr 360 new G4HadronInelasticProcess("inelasti 361 theInelasticProcess->AddDataSet(theGGHNI 362 theInelasticProcess->RegisterMe(bertini) 363 theInelasticProcess->RegisterMe(theTheoM 364 pmanager->AddDiscreteProcess(theInelasti 365 } 366 else if (particleName == "kaon+") { 367 pmanager->AddDiscreteProcess(theElasticP 368 G4HadronInelasticProcess* theInelasticPr 369 new G4HadronInelasticProcess("inelasti 370 theInelasticProcess->AddDataSet(theGGHNI 371 theInelasticProcess->RegisterMe(bertini) 372 theInelasticProcess->RegisterMe(theTheoM 373 pmanager->AddDiscreteProcess(theInelasti 374 } 375 else if (particleName == "kaon0S") { 376 pmanager->AddDiscreteProcess(theElasticP 377 G4HadronInelasticProcess* theInelasticPr 378 new G4HadronInelasticProcess("inelasti 379 theInelasticProcess->AddDataSet(theGGHNI 380 theInelasticProcess->RegisterMe(bertini) 381 theInelasticProcess->RegisterMe(theTheoM 382 pmanager->AddDiscreteProcess(theInelasti 383 } 384 else if (particleName == "kaon0L") { 385 pmanager->AddDiscreteProcess(theElasticP 386 G4HadronInelasticProcess* theInelasticPr 387 new G4HadronInelasticProcess("inelasti 388 theInelasticProcess->AddDataSet(theGGHNI 389 theInelasticProcess->RegisterMe(bertini) 390 theInelasticProcess->RegisterMe(theTheoM 391 pmanager->AddDiscreteProcess(theInelasti 392 } 393 else if (particleName == "kaon-") { 394 pmanager->AddDiscreteProcess(theElasticP 395 G4HadronInelasticProcess* theInelasticPr 396 new G4HadronInelasticProcess("inelasti 397 theInelasticProcess->AddDataSet(theGGHNI 398 theInelasticProcess->RegisterMe(bertini) 399 theInelasticProcess->RegisterMe(theTheoM 400 pmanager->AddDiscreteProcess(theInelasti 401 } 402 else if (particleName == "proton") { 403 pmanager->AddDiscreteProcess(theElasticP 404 G4HadronInelasticProcess* theInelasticPr 405 new G4HadronInelasticProcess("inelasti 406 theInelasticProcess->AddDataSet(theGGHNI 407 theInelasticProcess->RegisterMe(bertini) 408 theInelasticProcess->RegisterMe(theTheoM 409 pmanager->AddDiscreteProcess(theInelasti 410 } 411 else if (particleName == "anti_proton") { 412 pmanager->AddDiscreteProcess(theElasticP 413 G4HadronInelasticProcess* theInelasticPr 414 new G4HadronInelasticProcess("inelasti 415 theInelasticProcess->AddDataSet(theGGHNI 416 theInelasticProcess->RegisterMe(antiBHig 417 pmanager->AddDiscreteProcess(theInelasti 418 } 419 else if (particleName == "neutron") { 420 // elastic scattering 421 pmanager->AddDiscreteProcess(theElasticP 422 423 // inelastic scattering 424 G4HadronInelasticProcess* theInelasticPr 425 new G4HadronInelasticProcess("inelasti 426 theInelasticProcess->AddDataSet(new G4Ne 427 theInelasticProcess->RegisterMe(bertini) 428 theInelasticProcess->RegisterMe(theTheoM 429 pmanager->AddDiscreteProcess(theInelasti 430 431 // fission 432 G4NeutronFissionProcess* theFissionProce 433 G4LFission* theFissionModel = new G4LFis 434 theFissionProcess->RegisterMe(theFission 435 pmanager->AddDiscreteProcess(theFissionP 436 437 // capture 438 G4NeutronCaptureProcess* theCaptureProce 439 G4NeutronRadCapture* theCaptureModel = n 440 theCaptureProcess->RegisterMe(theCapture 441 pmanager->AddDiscreteProcess(theCaptureP 442 } 443 else if (particleName == "anti_neutron") { 444 pmanager->AddDiscreteProcess(theElasticP 445 G4HadronInelasticProcess* theInelasticPr 446 new G4HadronInelasticProcess("inelasti 447 theInelasticProcess->AddDataSet(theGGHNI 448 theInelasticProcess->RegisterMe(antiBHig 449 pmanager->AddDiscreteProcess(theInelasti 450 } 451 else if (particleName == "lambda") { 452 pmanager->AddDiscreteProcess(theElasticP 453 G4HadronInelasticProcess* theInelasticPr 454 new G4HadronInelasticProcess("inelasti 455 theInelasticProcess->AddDataSet(theGGHNI 456 theInelasticProcess->RegisterMe(bertini) 457 theInelasticProcess->RegisterMe(theTheoM 458 pmanager->AddDiscreteProcess(theInelasti 459 } 460 else if (particleName == "anti_lambda") { 461 pmanager->AddDiscreteProcess(theElasticP 462 G4HadronInelasticProcess* theInelasticPr 463 new G4HadronInelasticProcess("inelasti 464 theInelasticProcess->AddDataSet(theGGHNI 465 theInelasticProcess->RegisterMe(antiBHig 466 pmanager->AddDiscreteProcess(theInelasti 467 } 468 else if (particleName == "sigma+") { 469 pmanager->AddDiscreteProcess(theElasticP 470 G4HadronInelasticProcess* theInelasticPr 471 new G4HadronInelasticProcess("inelasti 472 theInelasticProcess->AddDataSet(theGGHNI 473 theInelasticProcess->RegisterMe(bertini) 474 theInelasticProcess->RegisterMe(theTheoM 475 pmanager->AddDiscreteProcess(theInelasti 476 } 477 else if (particleName == "sigma-") { 478 pmanager->AddDiscreteProcess(theElasticP 479 G4HadronInelasticProcess* theInelasticPr 480 new G4HadronInelasticProcess("inelasti 481 theInelasticProcess->AddDataSet(theGGHNI 482 theInelasticProcess->RegisterMe(bertini) 483 theInelasticProcess->RegisterMe(theTheoM 484 pmanager->AddDiscreteProcess(theInelasti 485 } 486 else if (particleName == "anti_sigma+") { 487 pmanager->AddDiscreteProcess(theElasticP 488 G4HadronInelasticProcess* theInelasticPr 489 new G4HadronInelasticProcess("inelasti 490 theInelasticProcess->AddDataSet(theGGHNI 491 theInelasticProcess->RegisterMe(antiBHig 492 pmanager->AddDiscreteProcess(theInelasti 493 } 494 else if (particleName == "anti_sigma-") { 495 pmanager->AddDiscreteProcess(theElasticP 496 G4HadronInelasticProcess* theInelasticPr 497 new G4HadronInelasticProcess("inelasti 498 theInelasticProcess->AddDataSet(theGGHNI 499 theInelasticProcess->RegisterMe(antiBHig 500 pmanager->AddDiscreteProcess(theInelasti 501 } 502 else if (particleName == "xi0") { 503 pmanager->AddDiscreteProcess(theElasticP 504 G4HadronInelasticProcess* theInelasticPr 505 new G4HadronInelasticProcess("inelasti 506 theInelasticProcess->AddDataSet(theGGHNI 507 theInelasticProcess->RegisterMe(bertini) 508 theInelasticProcess->RegisterMe(theTheoM 509 pmanager->AddDiscreteProcess(theInelasti 510 } 511 else if (particleName == "xi-") { 512 pmanager->AddDiscreteProcess(theElasticP 513 G4HadronInelasticProcess* theInelasticPr 514 new G4HadronInelasticProcess("inelasti 515 theInelasticProcess->AddDataSet(theGGHNI 516 theInelasticProcess->RegisterMe(bertini) 517 theInelasticProcess->RegisterMe(theTheoM 518 pmanager->AddDiscreteProcess(theInelasti 519 } 520 else if (particleName == "anti_xi0") { 521 pmanager->AddDiscreteProcess(theElasticP 522 G4HadronInelasticProcess* theInelasticPr 523 new G4HadronInelasticProcess("inelasti 524 theInelasticProcess->AddDataSet(theGGHNI 525 theInelasticProcess->RegisterMe(antiBHig 526 pmanager->AddDiscreteProcess(theInelasti 527 } 528 else if (particleName == "anti_xi-") { 529 pmanager->AddDiscreteProcess(theElasticP 530 G4HadronInelasticProcess* theInelasticPr 531 new G4HadronInelasticProcess("inelasti 532 theInelasticProcess->AddDataSet(theGGHNI 533 theInelasticProcess->RegisterMe(antiBHig 534 pmanager->AddDiscreteProcess(theInelasti 535 } 536 else if (particleName == "deuteron") { 537 pmanager->AddDiscreteProcess(theElasticP 538 G4HadronInelasticProcess* theInelasticPr 539 new G4HadronInelasticProcess("inelasti 540 theInelasticProcess->RegisterMe(binaryCa 541 theInelasticProcess->RegisterMe(qmd); 542 theInelasticProcess->AddDataSet(ionXS); 543 pmanager->AddDiscreteProcess(theInelasti 544 } 545 else if (particleName == "triton") { 546 pmanager->AddDiscreteProcess(theElasticP 547 G4HadronInelasticProcess* theInelasticPr 548 new G4HadronInelasticProcess("inelasti 549 theInelasticProcess->RegisterMe(binaryCa 550 theInelasticProcess->RegisterMe(qmd); 551 theInelasticProcess->AddDataSet(ionXS); 552 pmanager->AddDiscreteProcess(theInelasti 553 } 554 else if (particleName == "alpha") { 555 pmanager->AddDiscreteProcess(theElasticP 556 G4HadronInelasticProcess* theInelasticPr 557 new G4HadronInelasticProcess("inelasti 558 theInelasticProcess->RegisterMe(binaryCa 559 theInelasticProcess->RegisterMe(qmd); 560 theInelasticProcess->AddDataSet(ionXS); 561 pmanager->AddDiscreteProcess(theInelasti 562 } 563 else if (particleName == "omega-") { 564 pmanager->AddDiscreteProcess(theElasticP 565 G4HadronInelasticProcess* theInelasticPr 566 new G4HadronInelasticProcess("inelasti 567 theInelasticProcess->AddDataSet(theGGHNI 568 theInelasticProcess->RegisterMe(bertini) 569 theInelasticProcess->RegisterMe(theTheoM 570 pmanager->AddDiscreteProcess(theInelasti 571 } 572 else if (particleName == "anti_omega-") { 573 pmanager->AddDiscreteProcess(theElasticP 574 G4HadronInelasticProcess* theInelasticPr 575 new G4HadronInelasticProcess("inelasti 576 theInelasticProcess->AddDataSet(theGGHNI 577 theInelasticProcess->RegisterMe(antiBHig 578 pmanager->AddDiscreteProcess(theInelasti 579 } 580 } 581 } 582 583 //....oooOO0OOooo........oooOO0OOooo........oo 584 585 void B03PhysicsList::ConstructLeptHad() 586 { 587 ; 588 } 589 590 //....oooOO0OOooo........oooOO0OOooo........oo 591 592 #include "G4Decay.hh" 593 void B03PhysicsList::ConstructGeneral() 594 { 595 G4Decay* theDecayProcess = new G4Decay(); 596 auto particleIterator = GetParticleIterator( 597 particleIterator->reset(); 598 while ((*particleIterator)()) { 599 G4ParticleDefinition* particle = particleI 600 G4ProcessManager* pmanager = particle->Get 601 if (theDecayProcess->IsApplicable(*particl 602 pmanager->AddProcess(theDecayProcess); 603 pmanager->SetProcessOrdering(theDecayPro 604 pmanager->SetProcessOrdering(theDecayPro 605 } 606 } 607 } 608 609 //....oooOO0OOooo........oooOO0OOooo........oo 610 611 void B03PhysicsList::SetCuts() 612 { 613 if (verboseLevel > 0) { 614 G4cout << "B03PhysicsList::SetCuts:"; 615 G4cout << "CutLength : " << defaultCutValu 616 } 617 // "G4VUserPhysicsList::SetCutsWithDefault 618 // the default cut value for all particle 619 SetCutsWithDefault(); 620 } 621 622 //....oooOO0OOooo........oooOO0OOooo........oo 623 624 #include "G4ParallelWorldProcess.hh" 625 void B03PhysicsList::AddScoringProcess() 626 { 627 G4int npw = fParaWorldName.size(); 628 for (G4int i = 0; i < npw; i++) { 629 G4String procName = "ParaWorldProc_" + fPa 630 G4ParallelWorldProcess* theParallelWorldPr 631 theParallelWorldProcess->SetParallelWorld( 632 633 auto particleIterator = GetParticleIterato 634 particleIterator->reset(); 635 while ((*particleIterator)()) { 636 G4ParticleDefinition* particle = particl 637 G4ProcessManager* pmanager = particle->G 638 pmanager->AddProcess(theParallelWorldPro 639 if (theParallelWorldProcess->IsAtRestReq 640 pmanager->SetProcessOrdering(theParall 641 } 642 pmanager->SetProcessOrderingToSecond(the 643 pmanager->SetProcessOrdering(theParallel 644 } 645 } 646 } 647 648 //....oooOO0OOooo........oooOO0OOooo........oo 649 650 #include "G4IStore.hh" 651 #include "G4ImportanceProcess.hh" 652 void B03PhysicsList::AddBiasingProcess() 653 { 654 G4cout << " Preparing Importance Sampling wi 655 656 G4IStore* iStore = G4IStore::GetInstance(fBi 657 G4GeometrySampler fGeomSampler(fBiasWorldNam 658 fGeomSampler.SetParallel(true); // parallel 659 // fGeomSampler.SetWorld(iStore->GetParallel 660 // fGeomSampler->PrepareImportanceSampling( 661 // GetInstance( 662 static G4bool first = true; 663 if (first) { 664 fGeomSampler.PrepareImportanceSampling(iSt 665 666 fGeomSampler.Configure(); 667 G4cout << " GeomSampler Configured!!! " << 668 first = false; 669 } 670 671 #ifdef G4MULTITHREADED 672 if (!G4Threading::IsMasterThread()) fGeomSam 673 #else 674 G4cout << " Running in singlethreaded mode!! 675 #endif 676 } 677 678 //....oooOO0OOooo........oooOO0OOooo........oo 679