80 G4cout <<
"You are using the simulation engine: LBE"<<
G4endl;
85 cutForElectron = 1.0*CLHEP::micrometer;
104 delete stoppingPhysics;
118 ConstructMyLeptons();
120 ConstructMyBaryons();
122 ConstructMyShortLiveds();
128 void LBE::ConstructMyBosons()
143 void LBE::ConstructMyLeptons()
163 void LBE::ConstructMyMesons()
173 void LBE::ConstructMyBaryons()
183 void LBE::ConstructMyIons()
192 void LBE::ConstructMyShortLiveds()
222 myParticleIterator->
reset();
223 while( (*(myParticleIterator))() ){
228 if(particleName ==
"neutron")
292 G4double LivermoreHighEnergyLimit = 20*CLHEP::MeV;
295 myParticleIterator->
reset();
296 while( (*(myParticleIterator))() ){
303 if (particleName ==
"gamma")
309 thePhotoElectricEffect->
AddEmModel(0, theLivermorePhotoElectricModel);
316 theComptonScattering->
AddEmModel(0, theLivermoreComptonModel);
323 theGammaConversion->
AddEmModel(0, theLivermoreGammaConversionModel);
333 else if (particleName ==
"e-")
360 else if (particleName ==
"e+")
373 else if( particleName ==
"mu+" ||
374 particleName ==
"mu-" )
378 pmanager->
AddProcess(aMultipleScattering, -1, 1, 1);
382 if( particleName ==
"mu-" )
385 else if (particleName ==
"GenericIon")
394 else if (particleName ==
"alpha" || particleName ==
"He3")
404 else if (particleName ==
"proton" ||
405 particleName ==
"deuteron" ||
406 particleName ==
"triton" ||
407 particleName ==
"pi+" ||
408 particleName ==
"pi-" ||
409 particleName ==
"kaon+" ||
410 particleName ==
"kaon-")
442 G4bool theScintProcessDefNeverUsed =
true;
449 G4bool theScintProcessAlphaNeverUsed =
true;
456 G4bool theScintProcessNucNeverUsed =
true;
463 G4bool theAbsorptionProcessNeverUsed =
true;
466 G4bool theBoundaryProcessNeverUsed =
true;
475 myParticleIterator->
reset();
476 while( (*(myParticleIterator))() )
487 theScintProcessNucNeverUsed =
false;
493 theScintProcessAlphaNeverUsed =
false;
499 theScintProcessDefNeverUsed =
false;
503 if (particleName ==
"opticalphoton") {
505 theAbsorptionProcessNeverUsed =
false;
507 theBoundaryProcessNeverUsed =
false;
511 if ( theScintProcessDefNeverUsed )
delete theScintProcessDef;
512 if ( theScintProcessAlphaNeverUsed )
delete theScintProcessAlpha;
513 if ( theScintProcessNucNeverUsed )
delete theScintProcessNuc;
514 if ( theBoundaryProcessNeverUsed )
delete theBoundaryProcess;
515 if ( theAbsorptionProcessNeverUsed )
delete theAbsorptionProcess;
586 const G4double elastic_elimitAntiNuc = 100.0*CLHEP::MeV;
594 const G4double theFTFMin0 = 0.0*CLHEP::GeV;
595 const G4double theFTFMin1 = 4.0*CLHEP::GeV;
597 const G4double theBERTMin0 = 0.0*CLHEP::GeV;
598 const G4double theBERTMin1 = 19.0*CLHEP::MeV;
599 const G4double theBERTMax = 5.0*CLHEP::GeV;
600 const G4double theHPMin = 0.0*CLHEP::GeV;
601 const G4double theHPMax = 20.0*CLHEP::MeV;
602 const G4double theIonBCMin = 0.0*CLHEP::GeV;
603 const G4double theIonBCMax = 5.0*CLHEP::GeV;
642 myParticleIterator->
reset();
643 while ((*(myParticleIterator))())
649 if (particleName ==
"pi+")
659 theInelasticProcess->
RegisterMe( theFTFModel1 );
660 theInelasticProcess->
RegisterMe( theBERTModel0 );
664 else if (particleName ==
"pi-")
674 theInelasticProcess->
RegisterMe( theFTFModel1 );
675 theInelasticProcess->
RegisterMe( theBERTModel0 );
679 else if (particleName ==
"kaon+")
683 theElasticProcess->
RegisterMe( elastic_lhep0 );
690 theInelasticProcess->
RegisterMe( theFTFModel1 );
691 theInelasticProcess->
RegisterMe( theBERTModel0 );
695 else if (particleName ==
"kaon0S")
699 theElasticProcess->
RegisterMe( elastic_lhep0 );
705 theInelasticProcess->
RegisterMe( theFTFModel1 );
706 theInelasticProcess->
RegisterMe( theBERTModel0 );
710 else if (particleName ==
"kaon0L")
714 theElasticProcess->
RegisterMe( elastic_lhep0 );
721 theInelasticProcess->
RegisterMe( theFTFModel1 );
722 theInelasticProcess->
RegisterMe( theBERTModel0 );
726 else if (particleName ==
"kaon-")
730 theElasticProcess->
RegisterMe( elastic_lhep0 );
736 theInelasticProcess->
RegisterMe( theFTFModel1 );
737 theInelasticProcess->
RegisterMe( theBERTModel0 );
741 else if (particleName ==
"proton")
747 theElasticProcess->
RegisterMe( elastic_chip );
752 theInelasticProcess->
RegisterMe( theFTFModel1 );
753 theInelasticProcess->
RegisterMe( theBERTModel0 );
757 else if (particleName ==
"anti_proton")
761 theElasticProcess->
AddDataSet( elastic_anucxs );
762 theElasticProcess->
RegisterMe( elastic_lhep2 );
763 theElasticProcess->
RegisterMe( elastic_anuc );
767 theInelasticProcess->
AddDataSet( theAntiNucleonData );
768 theInelasticProcess->
RegisterMe( theFTFModel0 );
772 else if (particleName ==
"neutron") {
777 elastic_neutronChipsModel->
SetMinEnergy( 19.0*CLHEP::MeV );
778 theElasticProcess->
RegisterMe( elastic_neutronChipsModel );
782 theElasticProcess->
RegisterMe( theElasticNeutronHP );
788 theInelasticProcess->
RegisterMe( theFTFModel1 );
789 theInelasticProcess->
RegisterMe( theBERTModel1 );
793 theInelasticProcess->
RegisterMe( theNeutronInelasticHPModel );
803 theCaptureProcess->
RegisterMe( theNeutronCaptureHPModel );
804 theCaptureProcess->
RegisterMe( theNeutronRadCapture);
809 else if (particleName ==
"anti_neutron")
813 theElasticProcess->
AddDataSet( elastic_anucxs );
814 theElasticProcess->
RegisterMe( elastic_lhep2 );
815 theElasticProcess->
RegisterMe( elastic_anuc );
819 theInelasticProcess->
AddDataSet( theAntiNucleonData );
820 theInelasticProcess->
RegisterMe( theFTFModel0 );
824 else if (particleName ==
"deuteron")
828 theElasticProcess->
RegisterMe( elastic_lhep0 );
829 theElasticProcess->
AddDataSet( theGGNuclNuclData );
833 theInelasticProcess->
AddDataSet( theGGNuclNuclData );
834 theInelasticProcess->
RegisterMe( theFTFModel1 );
839 else if (particleName ==
"triton")
843 theElasticProcess->
RegisterMe( elastic_lhep0 );
844 theElasticProcess->
AddDataSet( theGGNuclNuclData );
848 theInelasticProcess->
AddDataSet( theGGNuclNuclData );
849 theInelasticProcess->
RegisterMe( theFTFModel1 );
854 else if (particleName ==
"alpha")
858 theElasticProcess->
RegisterMe( elastic_lhep0 );
859 theElasticProcess->
AddDataSet( theGGNuclNuclData );
863 theInelasticProcess->
AddDataSet( theGGNuclNuclData );
864 theInelasticProcess->
RegisterMe( theFTFModel1 );
890 G4bool theDecayProcessNeverUsed =
true;
892 myParticleIterator->
reset();
893 while( (*(myParticleIterator))() )
900 theDecayProcessNeverUsed =
false;
916 param->
AddPhysics(
"world",
"G4RadioactiveDecay");
936 if (particleName ==
"GenericIon")
948 if ( theDecayProcessNeverUsed )
delete theDecayProcess;
956 G4cout <<
"LBE::SetCuts:";
959 G4cout <<
"LBE::SetCuts:";
G4GLOB_DLL std::ostream G4cout
static G4Alpha * Definition()
static G4AntiNeutrinoE * AntiNeutrinoEDefinition()
static G4AntiNeutrinoMu * AntiNeutrinoMuDefinition()
static G4AntiNeutron * Definition()
G4ComponentAntiNuclNuclearXS * GetComponentCrossSection()
static G4AntiProton * Definition()
static void ConstructParticle()
static G4ChargedGeantino * ChargedGeantinoDefinition()
static const char * Default_Name()
static const char * Default_Name()
static const char * Default_Name()
static const char * Default_Name()
static const char * Default_Name()
static const char * Default_Name()
static const char * Default_Name()
static const char * Default_Name()
static G4CrossSectionDataSetRegistry * Instance()
virtual G4bool IsApplicable(const G4ParticleDefinition &) override
void SetMaxLifeTime(G4double)
void SetStoreAllLevels(G4bool)
static G4Deuteron * Definition()
static G4Electron * ElectronDefinition()
static G4EmParameters * Instance()
void SetAugerCascade(G4bool val)
void AddPhysics(const G4String ®ion, const G4String &type)
static G4Gamma * GammaDefinition()
static G4Geantino * GeantinoDefinition()
void SetMinEnergy(G4double anEnergy)
void SetMaxEnergy(const G4double anEnergy)
static G4HadronicParameters * Instance()
G4double GetMaxEnergy() const
void AddDataSet(G4VCrossSectionDataSet *aDataSet)
void RegisterMe(G4HadronicInteraction *a)
static void ConstructParticle()
G4ParticleDefinition * GetParticle(G4int index) const
static G4KaonMinus * Definition()
static G4KaonPlus * Definition()
static G4KaonZeroLong * Definition()
static G4KaonZeroShort * Definition()
void SetAtomDeexcitation(G4VAtomDeexcitation *)
static G4LossTableManager * Instance()
G4VAtomDeexcitation * AtomDeexcitation()
static void ConstructParticle()
static G4MuonMinus * MuonMinusDefinition()
static G4MuonPlus * MuonPlusDefinition()
static G4NeutrinoE * NeutrinoEDefinition()
static G4NeutrinoMu * NeutrinoMuDefinition()
static const char * Default_Name()
static G4Neutron * Neutron()
static G4Neutron * Definition()
G4DeexPrecoParameters * GetParameters()
static G4NuclearLevelData * GetInstance()
static G4NuclideTable * GetInstance()
void SetVerboseLevel(G4int)
void SetVerboseLevel(G4int)
static G4OpticalPhoton * OpticalPhotonDefinition()
G4ProcessManager * GetProcessManager() const
const G4String & GetParticleType() const
G4bool IsShortLived() const
G4double GetPDGCharge() const
const G4String & GetParticleName() const
void reset(G4bool ifSkipIon=true)
G4IonTable * GetIonTable() const
G4PTblDicIterator * GetIterator() const
static G4ParticleTable * GetParticleTable()
static G4PionMinus * Definition()
static G4PionPlus * Definition()
static G4Positron * PositronDefinition()
void SetProcessOrdering(G4VProcess *aProcess, G4ProcessVectorDoItIndex idDoIt, G4int ordDoIt=ordDefault)
G4int AddDiscreteProcess(G4VProcess *aProcess, G4int ord=ordDefault)
void SetVerboseLevel(G4int value)
G4int AddProcess(G4VProcess *aProcess, G4int ordAtRestDoIt=ordInActive, G4int ordAlongSteptDoIt=ordInActive, G4int ordPostStepDoIt=ordInActive)
void SetProcessOrderingToLast(G4VProcess *aProcess, G4ProcessVectorDoItIndex idDoIt)
void SetEnergyRange(G4double lowedge, G4double highedge)
static G4ProductionCutsTable * GetProductionCutsTable()
static G4Proton * Definition()
static G4Proton * Proton()
void SetTrackSecondariesFirst(const G4bool state)
void SetVerboseLevel(G4int)
G4bool IsApplicable(const G4ParticleDefinition &aParticleType) override
static void ConstructParticle()
virtual void ConstructParticle() override
virtual void ConstructProcess() override
void SetTransport(G4VIntraNuclearTransportModel *const value)
void SetHighEnergyGenerator(G4VHighEnergyGenerator *const value)
static G4Triton * Definition()
void InitialiseAtomicDeexcitation()
void SetHighEnergyLimit(G4double)
void AddEmModel(G4int, G4VEmModel *, const G4Region *region=nullptr)
void AddEmModel(G4int, G4VEmModel *, G4VEmFluctuationModel *fluc=nullptr, const G4Region *region=nullptr)
void SetStepFunction(G4double v1, G4double v2)
void SetEmModel(G4VEmModel *, G4int index=0)
void SetVerboseLevel(G4int value)
void SetStepLimitType(G4MscStepLimitType val)
void SetFragmentationModel(G4VStringFragmentation *aModel)
void SetCutValue(G4double aCut, const G4String &pname)
void DumpCutValuesTable(G4int flag=1)
virtual void ConstructEM()
virtual void ConstructParticle()
virtual void AddTransportation()
virtual void ConstructProcess()
virtual void ConstructOp()
virtual void ConstructHad()
virtual void ConstructGeneral()