BOSS 7.1.2
BESIII Offline Software System
Loading...
Searching...
No Matches
BgsPhysicsList Class Reference

#include <BgsPhysicsList.hh>

+ Inheritance diagram for BgsPhysicsList:

Public Member Functions

 BgsPhysicsList ()
 
virtual ~BgsPhysicsList ()
 
void SetCuts ()
 
void SetStatusEmProcess ()
 

Protected Member Functions

void ConstructParticle ()
 
void ConstructProcess ()
 
void ConstructBosons ()
 
void ConstructLeptons ()
 
void ConstructMesons ()
 
void ConstructBaryons ()
 
void ConstructIons ()
 
void ConstructGeneral ()
 
void ConstructEM ()
 
void ConstructLeptHad ()
 
void ConstructHad ()
 
void ConstructNeutrinoGenocide ()
 
void ConstructIonFix ()
 
void ConstructNeutronFix ()
 

Detailed Description

Definition at line 55 of file BgsPhysicsList.hh.

Constructor & Destructor Documentation

◆ BgsPhysicsList()

BgsPhysicsList::BgsPhysicsList ( )

Definition at line 131 of file BgsPhysicsList.cc.

131 : G4VUserPhysicsList(),//bes
132// control(theControl),
133// first(true),
134 first(false) //bes
135// physicsRegistrar(pr),
136// theLooperDeath(0) // looperdeath process
137{
138 SetVerboseLevel(2);
139 bertini_model = new G4CascadeInterface;
140}

◆ ~BgsPhysicsList()

BgsPhysicsList::~BgsPhysicsList ( )
virtual

Definition at line 143 of file BgsPhysicsList.cc.

144{
145// delete theLooperDeath;
146}

Member Function Documentation

◆ ConstructBaryons()

void BgsPhysicsList::ConstructBaryons ( )
protected

Definition at line 248 of file BgsPhysicsList.cc.

249{
250 // baryons
251 G4Proton ::ProtonDefinition();
252 G4AntiProton ::AntiProtonDefinition();
253 G4Neutron ::NeutronDefinition();
254 G4AntiNeutron ::AntiNeutronDefinition();
255 G4Lambda ::LambdaDefinition();
256 G4AntiLambda ::AntiLambdaDefinition();
257 G4SigmaPlus ::SigmaPlusDefinition();
258 G4SigmaZero ::SigmaZeroDefinition();
259 G4SigmaMinus ::SigmaMinusDefinition();
260 G4AntiSigmaPlus ::AntiSigmaPlusDefinition();
261 G4AntiSigmaZero ::AntiSigmaZeroDefinition();
262 G4AntiSigmaMinus::AntiSigmaMinusDefinition();
263 G4XiZero ::XiZeroDefinition();
264 G4XiMinus ::XiMinusDefinition();
265 G4AntiXiZero ::AntiXiZeroDefinition();
266 G4AntiXiMinus ::AntiXiMinusDefinition();
267 G4OmegaMinus ::OmegaMinusDefinition();
268 G4AntiOmegaMinus::AntiOmegaMinusDefinition();
269 G4Deuteron ::DeuteronDefinition();
270 G4Triton ::TritonDefinition();
271 G4He3 ::He3Definition();
272 G4Alpha ::AlphaDefinition();
273}

Referenced by ConstructParticle().

◆ ConstructBosons()

void BgsPhysicsList::ConstructBosons ( )
protected

Definition at line 197 of file BgsPhysicsList.cc.

198{
199 // pseudo-particles
200 G4Geantino::GeantinoDefinition();
201 G4ChargedGeantino::ChargedGeantinoDefinition();
202
203 // gamma
204 G4Gamma::GammaDefinition();
205
206 // optical photon
207 G4OpticalPhoton::OpticalPhotonDefinition();
208}

Referenced by ConstructParticle().

◆ ConstructEM()

void BgsPhysicsList::ConstructEM ( )
protected

Definition at line 378 of file BgsPhysicsList.cc.

379{
380 /* theParticleIterator->reset();
381 while( (*theParticleIterator)() ){
382 G4ParticleDefinition* particle = theParticleIterator->value();
383 G4ProcessManager* pmanager = particle->GetProcessManager();
384 G4String particleName = particle->GetParticleName();
385
386 if (particleName == "gamma") {
387 // gamma
388 // Construct processes for gamma
389
390 pmanager->AddDiscreteProcess( new G4PhotoElectricEffect());
391 pmanager->AddDiscreteProcess( new G4ComptonScattering());
392 pmanager->AddDiscreteProcess( new G4GammaConversion());
393
394 } else if (particleName == "e-") {
395 //electron
396 // Construct processes for electron
397 //change for geant4.9.0.p01
398 //G4MultipleScattering* ms = new G4MultipleScattering();
399 ms->MscStepLimitation(false,0.02);
400 ms->SetRangeFactor(0.02);
401
402 // ms->SetLateralDisplasmentFlag(false);
403
404 G4eIonisation *ionizationProcess = new G4eIonisation();
405 // ionizationProcess->SetLinearLossLimit(1.0);
406
407 pmanager->AddProcess( ms, -1, 1,1);
408 pmanager->AddProcess( ionizationProcess, -1, 2,2);
409 pmanager->AddProcess( new G4eBremsstrahlung(), -1,-1,3);
410
411 } else if (particleName == "e+") {
412 //positron
413 // Construct processes for positron
414
415 //change for geant4.9.p01
416 G4MultipleScattering* ms = new G4MultipleScattering();
417 //ms->MscStepLimitation(false,0.02);
418 ms->SetRangeFactor(0.02);
419
420 // ms->SetLateralDisplasmentFlag(false);
421
422 G4eIonisation *ionizationProcess = new G4eIonisation();
423 // ionizationProcess->SetLinearLossLimit(1.0);
424
425 pmanager->AddProcess( ms, -1, 1,1);
426 pmanager->AddProcess( ionizationProcess, -1, 2,2);
427 pmanager->AddProcess( new G4eBremsstrahlung(), -1,-1,3);
428 pmanager->AddProcess( new G4eplusAnnihilation(), 0,-1,4);
429
430 } else if( particleName == "mu+" ||
431 particleName == "mu-" ) {
432 //muon
433 // Construct processes for muon+
434
435 //change for geant4.9.0.p01
436 G4MultipleScattering* ms = new G4MultipleScattering();
437 //ms->MscStepLimitation(false,0.02);
438 ms->SetRangeFactor(0.02);
439
440 // ms->SetLateralDisplasmentFlag(false);
441
442 G4MuIonisation *ionizationProcess = new G4MuIonisation();
443 // ionizationProcess->SetLinearLossLimit(1.0);
444
445 pmanager->AddProcess( ms, -1, 1,1);
446 pmanager->AddProcess( ionizationProcess, -1, 2,2);
447 pmanager->AddProcess( new G4MuBremsstrahlung(), -1,-1,3);
448 pmanager->AddProcess( new G4MuPairProduction(), -1,-1,4);
449
450 } else if ((!particle->IsShortLived()) &&
451 (particle->GetPDGCharge() != 0.0) &&
452 (particle->GetParticleName() != "chargedgeantino")) {
453 // all others charged particles except geantino
454 G4int AP=1;
455 if (particle->GetParticleName() == "GenericIon") {
456 //ostream& o = ErrMsg(warning);
457 std::cerr <<"*********************************************************************" <<std::endl;
458 std::cerr << "*** Disabling G4MultipleScattering process for particle " <<particle->GetParticleName() << std::endl;
459 std::cerr <<"*********************************************************************" <<std::endl;
460 } else {
461 //change for Geant4.9.0.p01
462 G4MultipleScattering* ms = new G4MultipleScattering();
463 //ms->MscStepLimitation(false,0.02);
464 ms->SetRangeFactor(0.02);
465
466 // ms->SetLateralDisplasmentFlag(false);
467 pmanager->AddProcess( ms, -1,AP,AP);
468 AP++;
469 }
470 G4hIonisation *ionizationProcess = new G4hIonisation();
471 // ionizationProcess->SetLinearLossLimit(1.0);
472
473 pmanager->AddProcess( ionizationProcess, -1,AP,AP);
474 }
475 }*/
476}

◆ ConstructGeneral()

void BgsPhysicsList::ConstructGeneral ( )
protected

Definition at line 540 of file BgsPhysicsList.cc.

541{
542/* // Add Decay Process
543 G4Decay* theDecayProcess = new G4Decay();
544 theParticleIterator->reset();
545 while( (*theParticleIterator)() ){
546 G4ParticleDefinition* particle = theParticleIterator->value();
547 G4ProcessManager* pmanager = particle->GetProcessManager();
548 if (theDecayProcess->IsApplicable(*particle)) {
549 pmanager ->AddProcess( theDecayProcess );
550 // set ordering for PostStepDoIt and AtRestDoIt
551 pmanager ->SetProcessOrdering(theDecayProcess, idxPostStep);
552 pmanager ->SetProcessOrdering(theDecayProcess, idxAtRest);
553// physicsRegistrar->
554// Register( theDecayProcess, pmanager, "dcay", GVertex::decay );
555 }
556 }*/
557/*
558 if (control->GetLooperCut()>0) {
559
560 // Set special process to kill loopers
561 theLooperDeath = new BgsLooperDeath( control->GetLooperCut()*MeV );
562 theParticleIterator->reset();
563 while( (*theParticleIterator)() ){
564 G4ParticleDefinition* particle = theParticleIterator->value();
565 if (theLooperDeath->IsApplicable(*particle)) {
566 G4ProcessManager* pmanager = particle->GetProcessManager();
567 pmanager->AddProcess(theLooperDeath, -1, -1, 5);
568 physicsRegistrar->
569 Register( theLooperDeath, pmanager, "loop", GVertex::looperDeath
570);
571 }
572 }
573 ErrMsg(warning) << "Loopers with pt < " << control->GetLooperCut()
574 << " MeV will be killed" << endmsg;
575 }
576
577 if (control->GetMaxNumberOfSteps()>0) {
578
579 //
580 // Set special process to kill runaway particles
581 // Only needed if dE/dx is turned off!
582 //
583 // Do not abuse!
584 //
585 theStepDeath = new BgsChargedStepDeath( control->GetMaxNumberOfSteps()
586);
587
588 theParticleIterator->reset();
589 while( (*theParticleIterator)() ){
590 G4ParticleDefinition* particle = theParticleIterator->value();
591 if (theStepDeath->IsApplicable(*particle)) {
592 G4ProcessManager* pmanager = particle->GetProcessManager();
593 pmanager->AddProcess(theStepDeath, -1, -1, 5);
594 physicsRegistrar->
595 Register( theStepDeath, pmanager, "maxStep", GVertex::runAway );
596 }
597 }
598 ErrMsg(warning)
599 << "\n Charged particles will be killed if they take more than "
600 << control->GetMaxNumberOfSteps() << " steps.\n"
601 << " If you do not understand this message, you should be very
602concerned.\n"
603 << " If this message appears in production, you should be very
604upset." << endmsg;
605 }
606 */
607}

◆ ConstructHad()

void BgsPhysicsList::ConstructHad ( )
protected

Definition at line 711 of file BgsPhysicsList.cc.

712{
713 // One process handles hadronic elastic processes for all hadrons.
714 // However hadronic inelastic processes are unique to each hadron.
715
716 // For pi+ and pi- only, substitute pi-Nuclear cross sections
717/* G4PiNuclearCrossSection* piNucCS = new G4PiNuclearCrossSection();
718
719 theParticleIterator->reset();
720 while( (*theParticleIterator)() ){
721 G4ParticleDefinition* particle = theParticleIterator->value();
722 G4ProcessManager* pmanager = particle->GetProcessManager();
723 G4String particleName = particle->GetParticleName();
724 // *******
725 // * pi+ *
726 // *******
727 if (particleName == "pi+") {
728
729 // Elastic process
730 G4HadronElasticProcess *process = new G4HadronElasticProcess();
731 G4LElastic *model = new G4LElastic();
732 process->RegisterMe(model);
733 pmanager->AddDiscreteProcess(process);
734
735 // Inelastic process
736
737 G4PionPlusInelasticProcess *inel_process = new
738G4PionPlusInelasticProcess();
739 inel_process->AddDataSet(piNucCS);
740 inel_process->RegisterMe(bertini_model);
741 pmanager->AddDiscreteProcess(inel_process);
742// physicsRegistrar->Register(inel_process,pmanager,"hadi",
743// GVertex::hadronInelastic);
744 // *******
745 // * pi- *
746 // *******
747 } else if (particleName == "pi-") {
748
749 // Elastic process
750 G4HadronElasticProcess *process = new G4HadronElasticProcess();
751 G4LElastic *model = new G4LElastic();
752 process->RegisterMe(model);
753 pmanager->AddDiscreteProcess(process);
754
755 // Inelastic process
756
757 G4PionMinusInelasticProcess *inel_process = new
758G4PionMinusInelasticProcess();
759 inel_process->AddDataSet(piNucCS);
760 inel_process->RegisterMe(bertini_model);
761 pmanager->AddDiscreteProcess(inel_process);
762// physicsRegistrar->Register(inel_process,pmanager,"hadi",
763// GVertex::hadronInelastic);
764 // *******
765 // * K+ *
766 // *******
767 } else if (particleName == "kaon+") {
768
769 // Elastic process
770 G4HadronElasticProcess *process = new G4HadronElasticProcess();
771 G4LElastic *model = new G4LElastic();
772 process->RegisterMe(model);
773 pmanager->AddDiscreteProcess(process);
774
775 // Inelastic process
776
777 G4KaonPlusInelasticProcess* inel_process = new
778G4KaonPlusInelasticProcess();
779 inel_process->RegisterMe(bertini_model);
780 pmanager->AddDiscreteProcess(inel_process);
781// physicsRegistrar->Register(inel_process,pmanager,"hadi",
782// GVertex::hadronInelastic);
783 // *******
784 // * K- *
785 // *******
786 } else if (particleName == "kaon-") {
787
788 // Elastic process
789 G4HadronElasticProcess *process = new G4HadronElasticProcess();
790 G4LElastic *model = new G4LElastic();
791 process->RegisterMe(model);
792 pmanager->AddDiscreteProcess(process);
793
794 // Inelastic process
795
796 G4KaonMinusInelasticProcess* inel_process = new
797G4KaonMinusInelasticProcess();
798 inel_process->RegisterMe(bertini_model);
799 pmanager->AddDiscreteProcess(inel_process);
800// physicsRegistrar->Register(inel_process,pmanager,"hadi",
801// GVertex::hadronInelastic);
802 // *******
803 // * K0L *
804 // *******
805 } else if (particleName == "kaon0L") {
806
807 // Elastic process
808 G4HadronElasticProcess *process = new G4HadronElasticProcess();
809 G4LElastic *model = new G4LElastic();
810 process->RegisterMe(model);
811 pmanager->AddDiscreteProcess(process);
812
813 // Inelastic process
814
815 G4KaonZeroLInelasticProcess* inel_process = new
816G4KaonZeroLInelasticProcess();
817 inel_process->RegisterMe(bertini_model);
818 pmanager->AddDiscreteProcess(inel_process);
819// physicsRegistrar->Register(inel_process,pmanager,"hadi",
820// GVertex::hadronInelastic);
821 // *******
822 // * K0S *
823 // *******
824 } else if (particleName == "kaon0S") {
825
826 // Elastic process
827 G4HadronElasticProcess *process = new G4HadronElasticProcess();
828 G4LElastic *model = new G4LElastic();
829 process->RegisterMe(model);
830 pmanager->AddDiscreteProcess(process);
831
832 // Inelastic process
833
834 G4KaonZeroSInelasticProcess* inel_process =
835 new G4KaonZeroSInelasticProcess();
836 inel_process->RegisterMe(bertini_model);
837 pmanager->AddDiscreteProcess(inel_process);
838// physicsRegistrar->Register(inel_process,pmanager,"hadi",
839// GVertex::hadronInelastic);
840 // *******
841 // * p *
842 // *******
843 } else if (particleName == "proton") {
844
845 // Elastic process
846 G4HadronElasticProcess *process = new G4HadronElasticProcess();
847 G4LElastic *model = new G4LElastic();
848 process->RegisterMe(model);
849 pmanager->AddDiscreteProcess(process);
850
851 // Inelastic process
852
853 G4ProtonInelasticProcess *inel_process = new
854G4ProtonInelasticProcess();
855 inel_process->RegisterMe(bertini_model);
856 pmanager->AddDiscreteProcess(inel_process);
857// physicsRegistrar->Register(inel_process,pmanager,"hadi",
858// GVertex::hadronInelastic);
859 // *********
860 // * p-bar *
861 // *********
862 } else if (particleName == "anti_proton") {
863
864 // Elastic process
865 G4HadronElasticProcess *process = new G4HadronElasticProcess();
866 G4LElastic *model = new G4LElastic();
867 process->RegisterMe(model);
868 pmanager->AddDiscreteProcess(process);
869
870 // Inelastic process
871
872 G4AntiProtonInelasticProcess *inel_process =
873 new G4AntiProtonInelasticProcess();
874 G4LEAntiProtonInelastic *inel_model = new G4LEAntiProtonInelastic();
875 inel_process->RegisterMe(inel_model);
876 pmanager->AddDiscreteProcess(inel_process);
877// physicsRegistrar->Register(inel_process,pmanager,"hadi",
878// GVertex::hadronInelastic);
879 // *******
880 // * n *
881 // *******
882 } else if (particleName == "neutron") {
883
884 //if (control->UseHPNeutrons()) {
885 if(1){
886 G4cout << "High precision neutron models chosen" << G4endl;
887
888 putenv("G4NEUTRONHPDATA=/afs/ihep.ac.cn/bes3/offline/sw/packages/geant4/4.9.0/slc4_ia32_gcc346/geant4.9.0.p01/data/G4NDL3.11/");
889
890 // Elastic process
891 G4HadronElasticProcess* el_process = new G4HadronElasticProcess();
892
893 // High precision model and data below 20 MeV
894 G4NeutronHPElastic* hpel_model = new G4NeutronHPElastic();
895 G4NeutronHPElasticData* el_data = new G4NeutronHPElasticData();
896 el_process->AddDataSet(el_data);
897 el_process->RegisterMe(hpel_model);
898
899 // LEP model above 20 MeV
900 G4LElastic* el_model = new G4LElastic();
901 el_model->SetMinEnergy(19.9*MeV);
902 el_process->RegisterMe(el_model);
903
904 pmanager->AddDiscreteProcess(el_process);
905 //physicsRegistrar->Register(el_process,pmanager,"hade",
906 // GVertex::hadronElastic);
907
908 // Inelastic process
909 G4NeutronInelasticProcess* inel_process =
910 new G4NeutronInelasticProcess();
911
912 // High precision model and data below 20 MeV
913 G4NeutronHPInelastic* hpinel_model = new G4NeutronHPInelastic();
914 G4NeutronHPInelasticData* hpinel_data = new
915G4NeutronHPInelasticData();
916 inel_process->AddDataSet(hpinel_data);
917 inel_process->RegisterMe(hpinel_model);
918
919 // Bertini model above 20 MeV
920 G4CascadeInterface* neutron_bertini = new G4CascadeInterface;
921 neutron_bertini->SetMinEnergy(19.9*MeV);
922 inel_process->RegisterMe(neutron_bertini);
923
924 pmanager->AddDiscreteProcess(inel_process);
925 //physicsRegistrar->Register(inel_process,pmanager,"hadi",
926 // GVertex::hadronInelastic);
927
928 // Capture process
929 G4HadronCaptureProcess* cap_process = new G4HadronCaptureProcess();
930
931 // High precision model and data below 20 MeV
932 G4NeutronHPCapture* hpcap_model = new G4NeutronHPCapture();
933 G4NeutronHPCaptureData* hpcap_data = new G4NeutronHPCaptureData();
934 cap_process->AddDataSet(hpcap_data);
935 cap_process->RegisterMe(hpcap_model);
936
937 // LEP model above 20 MeV - default cross sections are used here
938 // hence no need to explicitly invoke AddDataSet method
939 G4LCapture* cap_model = new G4LCapture();
940 cap_model->SetMinEnergy(19.9*MeV);
941 cap_process->RegisterMe(cap_model);
942
943 pmanager->AddDiscreteProcess(cap_process);
944 // Note: need to update GVertex to include hadronCapture
945// physicsRegistrar->Register(cap_process,pmanager,"hadi",
946// GVertex::hadronInelastic);
947
948 // Fission process
949 G4HadronFissionProcess* fis_process = new G4HadronFissionProcess();
950
951 // High precision model and data below 20 MeV
952 G4NeutronHPFission* hpfis_model = new G4NeutronHPFission();
953 G4NeutronHPFissionData* hpfis_data = new G4NeutronHPFissionData();
954 fis_process->AddDataSet(hpfis_data);
955 fis_process->RegisterMe(hpfis_model);
956
957 // LEP model above 20 MeV - default cross sections are used here
958 // hence no need to explicitly invoke AddDataSet method
959 G4LFission* fis_model = new G4LFission();
960 fis_model->SetMinEnergy(19.9*MeV);
961 fis_process->RegisterMe(fis_model);
962
963 pmanager->AddDiscreteProcess(fis_process);
964 // Note: need to update GVertex to include hadronFission
965// physicsRegistrar->Register(fis_process,pmanager,"hadi",
966// GVertex::hadronInelastic);
967
968 } else {
969
970 // Elastic process
971 G4HadronElasticProcess *process = new G4HadronElasticProcess();
972 G4LElastic *model = new G4LElastic();
973 process->RegisterMe(model);
974 pmanager->AddDiscreteProcess(process);
975
976 // Inelastic process
977 G4NeutronInelasticProcess *inel_process =
978 new G4NeutronInelasticProcess();
979 inel_process->RegisterMe(bertini_model);
980 pmanager->AddDiscreteProcess(inel_process);
981// physicsRegistrar->Register(inel_process,pmanager,"hadi",
982// GVertex::hadronInelastic);
983 }
984 // *********
985 // * n-bar *
986 // *********
987 } else if (particleName == "anti_neutron") {
988
989 // Elastic process
990 G4HadronElasticProcess *process = new G4HadronElasticProcess();
991 G4LElastic *model = new G4LElastic();
992 process->RegisterMe(model);
993 pmanager->AddDiscreteProcess(process);
994
995 // Inelastic process
996
997 G4AntiNeutronInelasticProcess *inel_process =
998 new G4AntiNeutronInelasticProcess();
999 G4LEAntiNeutronInelastic *inel_model = new G4LEAntiNeutronInelastic();
1000 inel_process->RegisterMe(inel_model);
1001 pmanager->AddDiscreteProcess(inel_process);
1002// physicsRegistrar->Register(inel_process,pmanager,"hadi",
1003// GVertex::hadronInelastic);
1004 // **********
1005 // * lambda *
1006 // **********
1007 } else if (particleName == "lambda") {
1008
1009 // Elastic process
1010 G4HadronElasticProcess *process = new G4HadronElasticProcess();
1011 G4LElastic *model = new G4LElastic();
1012 process->RegisterMe(model);
1013 pmanager->AddDiscreteProcess(process);
1014
1015 // Inelastic process
1016
1017 G4LambdaInelasticProcess* inel_process = new
1018G4LambdaInelasticProcess();
1019 inel_process->RegisterMe(bertini_model);
1020 pmanager->AddDiscreteProcess(inel_process);
1021// physicsRegistrar->Register(inel_process,pmanager,"hadi",
1022// GVertex::hadronInelastic);
1023 // **************
1024 // * lambda-bar *
1025 // **************
1026 } else if (particleName == "anti_lambda") {
1027
1028 // Elastic process
1029 G4HadronElasticProcess *process = new G4HadronElasticProcess();
1030 G4LElastic *model = new G4LElastic();
1031 process->RegisterMe(model);
1032 pmanager->AddDiscreteProcess(process);
1033
1034 // Inelastic process
1035
1036 G4AntiLambdaInelasticProcess *inel_process =
1037 new G4AntiLambdaInelasticProcess();
1038 G4LEAntiLambdaInelastic *inel_model = new G4LEAntiLambdaInelastic();
1039 inel_process->RegisterMe(inel_model);
1040 pmanager->AddDiscreteProcess(inel_process);
1041// physicsRegistrar->Register(inel_process,pmanager,"hadi",
1042// GVertex::hadronInelastic);
1043 // **************
1044 // * deuteron *
1045 // **************
1046 } else if (particleName == "deuteron") {
1047
1048 // Elastic process
1049 G4HadronElasticProcess *process = new G4HadronElasticProcess();
1050 G4LElastic *model = new G4LElastic();
1051 process->RegisterMe(model);
1052 pmanager->AddDiscreteProcess(process);
1053
1054 // Inelastic process
1055
1056 G4DeuteronInelasticProcess *inel_process =
1057 new G4DeuteronInelasticProcess();
1058 G4LEDeuteronInelastic *inel_model = new G4LEDeuteronInelastic();
1059 inel_process->RegisterMe(inel_model);
1060 pmanager->AddDiscreteProcess(inel_process);
1061// physicsRegistrar->Register(inel_process,pmanager,"hadi",
1062// GVertex::hadronInelastic);
1063 // **************
1064 // * triton *
1065 // **************
1066 } else if (particleName == "triton") {
1067
1068 // Elastic process
1069 G4HadronElasticProcess *process = new G4HadronElasticProcess();
1070 G4LElastic *model = new G4LElastic();
1071 process->RegisterMe(model);
1072 pmanager->AddDiscreteProcess(process);
1073
1074 // Inelastic process
1075
1076 G4TritonInelasticProcess *inel_process =
1077 new G4TritonInelasticProcess();
1078 G4LETritonInelastic *inel_model = new G4LETritonInelastic();
1079 inel_process->RegisterMe(inel_model);
1080 pmanager->AddDiscreteProcess(inel_process);
1081// physicsRegistrar->Register(inel_process,pmanager,"hadi",
1082// GVertex::hadronInelastic);
1083 // **************
1084 // * alpha *
1085 // **************
1086 } else if (particleName == "alpha") {
1087
1088 // Elastic process
1089 G4HadronElasticProcess *process = new G4HadronElasticProcess();
1090 G4LElastic *model = new G4LElastic();
1091 process->RegisterMe(model);
1092 pmanager->AddDiscreteProcess(process);
1093
1094 // Inelastic process
1095
1096 G4AlphaInelasticProcess *inel_process = new G4AlphaInelasticProcess();
1097 G4LEAlphaInelastic *inel_model = new G4LEAlphaInelastic();
1098 inel_process->RegisterMe(inel_model);
1099 pmanager->AddDiscreteProcess(inel_process);
1100// physicsRegistrar->Register(inel_process,pmanager,"hadi",
1101// GVertex::hadronInelastic);
1102 }
1103 } // while */
1104}

◆ ConstructIonFix()

void BgsPhysicsList::ConstructIonFix ( )
protected

Definition at line 1143 of file BgsPhysicsList.cc.

1144{/*
1145 BgsGenocide *genocide = new
1146//BgsGentleGenocide(control->GetIonEnergyCut()*MeV,
1147// 60);
1148 BgsGentleGenocide(0.01*MeV,
1149 60);
1150
1151 theParticleIterator->reset();
1152 while( (*theParticleIterator)() ){
1153 G4ParticleDefinition* particle = theParticleIterator->value();
1154 G4ProcessManager* pmanager = particle->GetProcessManager();
1155 G4String particleName = particle->GetParticleName();
1156
1157 if ( particleName == "triton" ||
1158 particleName == "alpha" ||
1159 particleName == "proton" ||
1160 particleName == "deuteron" ) {
1161
1162 pmanager->AddProcess(genocide, -1, -1, 5);
1163// physicsRegistrar->Register( genocide, pmanager, "ionFix",
1164// GVertex::minimumEnergy );
1165 }
1166 }*/
1167}

◆ ConstructIons()

void BgsPhysicsList::ConstructIons ( )
protected

Definition at line 276 of file BgsPhysicsList.cc.

277{
278 G4GenericIon::GenericIonDefinition();
279}

Referenced by ConstructParticle().

◆ ConstructLeptHad()

void BgsPhysicsList::ConstructLeptHad ( )
protected

Definition at line 612 of file BgsPhysicsList.cc.

613{
614 //
615 // Gamma-nuclear process
616 //
617
618 // low energy part
619 /* G4GammaNuclearReaction* lowEGammaModel = new G4GammaNuclearReaction();
620 lowEGammaModel->SetMaxEnergy(3.5*GeV);
621 G4PhotoNuclearProcess* thePhotoNuclearProcess = new
622G4PhotoNuclearProcess();
623 thePhotoNuclearProcess->RegisterMe(lowEGammaModel);
624 */
625 // bias the cross section
626 //
627/* double thePhotoNuclearBias = control->GetPhotoNuclearBias();
628 if (thePhotoNuclearBias != 1.) {
629 thePhotoNuclearProcess->BiasCrossSectionByFactor(thePhotoNuclearBias);
630
631 // print out a warning if biasing
632 //
633 ErrMsg(warning) << "*** Biasing the photo-nuclear process by factor "
634 << thePhotoNuclearBias << endmsg;
635 }
636*/
637 // high energy part
638 /*G4TheoFSGenerator* highEGammaModel = new G4TheoFSGenerator();
639 G4GeneratorPrecompoundInterface* preComModel =
640 new G4GeneratorPrecompoundInterface();
641 highEGammaModel->SetTransport(preComModel);
642
643 G4QGSModel<G4GammaParticipants>* theStringModel =
644 new G4QGSModel<G4GammaParticipants>;
645 G4QGSMFragmentation* fragModel = new G4QGSMFragmentation();
646 G4ExcitedStringDecay* stringDecay =
647 new G4ExcitedStringDecay(fragModel);
648 theStringModel->SetFragmentationModel(stringDecay);
649
650 highEGammaModel->SetHighEnergyGenerator(theStringModel);
651 highEGammaModel->SetMinEnergy(3.*GeV);
652 highEGammaModel->SetMaxEnergy(20.*GeV);
653
654 thePhotoNuclearProcess->RegisterMe(highEGammaModel);
655
656 G4ProcessManager* gamMan = G4Gamma::Gamma()->GetProcessManager();
657
658 gamMan->AddDiscreteProcess(thePhotoNuclearProcess);
659 //
660 // Electron-nuclear process
661 //
662 G4ElectroNuclearReaction* theElectronReaction =
663 new G4ElectroNuclearReaction();
664 G4ElectronNuclearProcess* theElectronNuclearProcess =
665 new G4ElectronNuclearProcess();
666 theElectronNuclearProcess->RegisterMe(theElectronReaction);
667
668 G4ProcessManager* electronMan =
669G4Electron::Electron()->GetProcessManager();
670
671 electronMan->AddProcess(theElectronNuclearProcess, -1, -1, 4);
672*/
673 // bias the cross section
674 //
675/*
676 G4double theElectroNuclearBias = control->GetElectroNuclearBias();
677 if (theElectroNuclearBias != 1.) {
678
679theElectronNuclearProcess->BiasCrossSectionByFactor(theElectroNuclearBias);
680
681 // print out a warning if biasing
682 //
683 ErrMsg(warning) << "*** Biasing the electron-nuclear process by factor "
684 << theElectroNuclearBias << endmsg;
685 }
686*/
687 //
688 // Positron-nuclear process
689 //
690 /*G4PositronNuclearProcess* thePositronNuclearProcess =
691 new G4PositronNuclearProcess();
692 thePositronNuclearProcess->RegisterMe(theElectronReaction);
693
694 G4ProcessManager* positronMan =
695G4Positron::Positron()->GetProcessManager();
696 positronMan->AddProcess(thePositronNuclearProcess, -1, -1, 5);
697*/
698 // bias the cross section
699 //
700/*
701 if (theElectroNuclearBias != 1.) {
702
703thePositronNuclearProcess->BiasCrossSectionByFactor(theElectroNuclearBias);
704 ErrMsg(warning) << "*** Biasing the positron-nuclear process by factor "
705 << theElectroNuclearBias << endmsg;
706 }
707 */
708}

◆ ConstructLeptons()

void BgsPhysicsList::ConstructLeptons ( )
protected

Definition at line 211 of file BgsPhysicsList.cc.

212{
213 // leptons
214 G4Electron::ElectronDefinition();
215 G4Positron::PositronDefinition();
216 G4MuonPlus::MuonPlusDefinition();
217 G4MuonMinus::MuonMinusDefinition();
218 G4TauPlus::TauPlusDefinition();
219 G4TauMinus::TauMinusDefinition();
220
221 G4NeutrinoE::NeutrinoEDefinition();
222 G4AntiNeutrinoE::AntiNeutrinoEDefinition();
223 G4NeutrinoMu::NeutrinoMuDefinition();
224 G4AntiNeutrinoMu::AntiNeutrinoMuDefinition();
225 G4NeutrinoTau::NeutrinoTauDefinition();
226 G4AntiNeutrinoTau::AntiNeutrinoTauDefinition();
227}

Referenced by ConstructParticle().

◆ ConstructMesons()

void BgsPhysicsList::ConstructMesons ( )
protected

Definition at line 230 of file BgsPhysicsList.cc.

231{
232 // mesons
233 G4PionPlus ::PionPlusDefinition();
234 G4PionMinus ::PionMinusDefinition();
235 G4PionZero ::PionZeroDefinition();
236 G4Eta ::EtaDefinition();
237 G4EtaPrime ::EtaPrimeDefinition();
238 // G4RhoZero ::RhoZeroDefinition();
239 G4KaonPlus ::KaonPlusDefinition();
240 G4KaonMinus ::KaonMinusDefinition();
241 G4KaonZero ::KaonZeroDefinition();
242 G4AntiKaonZero ::AntiKaonZeroDefinition();
243 G4KaonZeroLong ::KaonZeroLongDefinition();
244 G4KaonZeroShort::KaonZeroShortDefinition();
245}

Referenced by ConstructParticle().

◆ ConstructNeutrinoGenocide()

void BgsPhysicsList::ConstructNeutrinoGenocide ( )
protected

Definition at line 1110 of file BgsPhysicsList.cc.

1111{
1112/* BgsGenocide *genocide = new BgsGenocide();
1113
1114 theParticleIterator->reset();
1115 while( (*theParticleIterator)() ){
1116 G4ParticleDefinition* particle = theParticleIterator->value();
1117 G4ProcessManager* pmanager = particle->GetProcessManager();
1118 G4String particleName = particle->GetParticleName();
1119
1120 if (particleName == "nu_e" ||
1121 particleName == "nu_mu" ||
1122 particleName == "nu_tau" ||
1123 particleName == "anti_nu_e" ||
1124 particleName == "anti_nu_mu" ||
1125 particleName == "anti_nu_tau" ||
1126
1127 // temporary fix for K0, K0bar until CHIPS photonuclear model isfixed
1128
1129 particleName == "kaon0" ||
1130 particleName == "anti_kaon0" ) {
1131
1132 pmanager->AddProcess(genocide, -1, -1, 5);
1133// physicsRegistrar->Register( genocide, pmanager, "neutrinoDeath",
1134// GVertex::neutrino );
1135 }
1136 }*/
1137}

◆ ConstructNeutronFix()

void BgsPhysicsList::ConstructNeutronFix ( )
protected

Definition at line 1173 of file BgsPhysicsList.cc.

1174{/*
1175 BgsGenocide *genocide = new
1176BgsGentleGenocide(0.01*MeV,0);
1177
1178 theParticleIterator->reset();
1179 while( (*theParticleIterator)() ){
1180 G4ParticleDefinition* particle = theParticleIterator->value();
1181 G4ProcessManager* pmanager = particle->GetProcessManager();
1182 G4String particleName = particle->GetParticleName();
1183
1184 if ( particleName == "neutron" ) {
1185
1186 pmanager->AddProcess(genocide, -1, -1, 1);
1187// physicsRegistrar->Register( genocide, pmanager, "neutronFix",
1188// GVertex::minimumEnergy );
1189 }
1190 }*/
1191}

◆ ConstructParticle()

void BgsPhysicsList::ConstructParticle ( )
protected

Definition at line 149 of file BgsPhysicsList.cc.

150{
151
152 // In this method, static member functions should be called
153 // for all particles which you want to use.
154 // This ensures that objects of these particle types will be
155 // created in the program.
156
162/*
163 if (first) {
164 first = false;
165
166 //
167 // Check to make sure our particles have valid PDG encodings
168 //
169 BgsPDGEncode encode(false);
170
171 G4ParticleTable *table = G4ParticleTable::GetParticleTable();
172
173 G4int nProb = 0;
174 G4int n = table->entries();
175 while(n--) {
176 G4ParticleDefinition *part = table->GetParticle(n);
177 if (encode.pdt(part) == 0) {
178 nProb++;
179 std::cerr << "The Geant4 particle \""
180 << part->GetParticleName()
181 << "\" is not recognized by BgsPDGEncode" << std::endl;
182 }
183 }
184
185 if(nProb > 0) std::cerr << "One or more PDG encoding errors" <<
186std::endl;
187 }
188*/
189 // Add short lived particles for high energy models,
190 // but don't check PDG codes - they are not propagated in Bogus anyway
191
192 G4ShortLivedConstructor shortLived;
193 shortLived.ConstructParticle();
194}

◆ ConstructProcess()

void BgsPhysicsList::ConstructProcess ( )
protected

Definition at line 282 of file BgsPhysicsList.cc.

283{
284 //if (control->UseBgsTran()) {
285/* if(0) {
286 AddBgsTransportation(control->GetMaxTrackingStepSize(),
287 control->GetMaxVacStepSize(),
288 control->GetVacName());
289 std::cout << "+^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^+ " <<
290 std::endl;
291 std::cout << "+v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v+ " <<
292 std::endl;
293 std::cout << " +--- ---+ " <<
294 std::endl;
295 std::cout << " +--- BgsTransportation ---+ " <<
296 std::endl;
297 std::cout << " +--- USED !! ---+ " <<
298 std::endl;
299 std::cout << " +--- ---+ " <<
300 std::endl;
301 std::cout << "+^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^+ " <<
302 std::endl;
303 std::cout << "+v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v+ " <<
304 std::endl;
305
306 }
307 else {
308 */
309 /*
310 AddTransportation();
311 std::cout << "+^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^+ " <<
312 std::endl;
313 std::cout << "+v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v+ " <<
314 std::endl;
315 std::cout << " +--- ---+ " <<
316 std::endl;
317 std::cout << " +--- G4Transportation ---+ " <<
318 std::endl;
319 std::cout << " +--- USED !! ---+ " <<
320 std::endl;
321 std::cout << " +--- ---+ " <<
322 std::endl;
323 std::cout << "+^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^+ " <<
324 std::endl;
325 std::cout << "+v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v+ " <<
326 std::endl;
327// }
328 // AddParameterisation();
329 ConstructEM();
330 ConstructLeptHad();
331 ConstructHad();
332 ConstructGeneral();
333 ConstructNeutrinoGenocide();
334 ConstructIonFix();
335 ConstructNeutronFix();*/
336}

◆ SetCuts()

void BgsPhysicsList::SetCuts ( )

Definition at line 1197 of file BgsPhysicsList.cc.

1198{/*
1199 // Set default cuts, all volumes
1200
1201 SetDefaultCutValue(0.7*mm);
1202 SetCutsWithDefault();
1203*/
1204 // Enable print out of cuts after tables are built
1205 // This is now done in BgsRunAction
1206 //
1207 // if (verboseLevel > 1) DumpCutValuesTable();
1208}

◆ SetStatusEmProcess()

void BgsPhysicsList::SetStatusEmProcess ( )

Definition at line 518 of file BgsPhysicsList.cc.

519{
520}

The documentation for this class was generated from the following files: