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;
451 G4bool theScintProcessAlphaNeverUsed =
true;
460 G4bool theScintProcessNucNeverUsed =
true;
469 G4bool theAbsorptionProcessNeverUsed =
true;
472 G4bool theBoundaryProcessNeverUsed =
true;
481 myParticleIterator->
reset();
482 while( (*(myParticleIterator))() )
493 theScintProcessNucNeverUsed =
false;
499 theScintProcessAlphaNeverUsed =
false;
505 theScintProcessDefNeverUsed =
false;
509 if (particleName ==
"opticalphoton") {
511 theAbsorptionProcessNeverUsed =
false;
513 theBoundaryProcessNeverUsed =
false;
517 if ( theScintProcessDefNeverUsed )
delete theScintProcessDef;
518 if ( theScintProcessAlphaNeverUsed )
delete theScintProcessAlpha;
519 if ( theScintProcessNucNeverUsed )
delete theScintProcessNuc;
520 if ( theBoundaryProcessNeverUsed )
delete theBoundaryProcess;
521 if ( theAbsorptionProcessNeverUsed )
delete theAbsorptionProcess;
604 const G4double elastic_elimitAntiNuc = 100.0*CLHEP::MeV;
612 const G4double theFTFMin0 = 0.0*CLHEP::GeV;
613 const G4double theFTFMin1 = 4.0*CLHEP::GeV;
615 const G4double theBERTMin0 = 0.0*CLHEP::GeV;
616 const G4double theBERTMin1 = 19.0*CLHEP::MeV;
617 const G4double theBERTMax = 5.0*CLHEP::GeV;
618 const G4double theHPMin = 0.0*CLHEP::GeV;
619 const G4double theHPMax = 20.0*CLHEP::MeV;
620 const G4double theIonBCMin = 0.0*CLHEP::GeV;
621 const G4double theIonBCMax = 5.0*CLHEP::GeV;
660 myParticleIterator->
reset();
661 while ((*(myParticleIterator))())
667 if (particleName ==
"pi+")
677 theInelasticProcess->
RegisterMe( theFTFModel1 );
678 theInelasticProcess->
RegisterMe( theBERTModel0 );
682 else if (particleName ==
"pi-")
692 theInelasticProcess->
RegisterMe( theFTFModel1 );
693 theInelasticProcess->
RegisterMe( theBERTModel0 );
697 else if (particleName ==
"kaon+")
701 theElasticProcess->
RegisterMe( elastic_lhep0 );
707 theInelasticProcess->
RegisterMe( theFTFModel1 );
708 theInelasticProcess->
RegisterMe( theBERTModel0 );
712 else if (particleName ==
"kaon0S")
716 theElasticProcess->
RegisterMe( elastic_lhep0 );
722 theInelasticProcess->
RegisterMe( theFTFModel1 );
723 theInelasticProcess->
RegisterMe( theBERTModel0 );
727 else if (particleName ==
"kaon0L")
731 theElasticProcess->
RegisterMe( elastic_lhep0 );
737 theInelasticProcess->
RegisterMe( theFTFModel1 );
738 theInelasticProcess->
RegisterMe( theBERTModel0 );
742 else if (particleName ==
"kaon-")
746 theElasticProcess->
RegisterMe( elastic_lhep0 );
752 theInelasticProcess->
RegisterMe( theFTFModel1 );
753 theInelasticProcess->
RegisterMe( theBERTModel0 );
757 else if (particleName ==
"proton")
763 theElasticProcess->
RegisterMe( elastic_chip );
768 theInelasticProcess->
RegisterMe( theFTFModel1 );
769 theInelasticProcess->
RegisterMe( theBERTModel0 );
773 else if (particleName ==
"anti_proton")
777 theElasticProcess->
AddDataSet( elastic_anucxs );
778 theElasticProcess->
RegisterMe( elastic_lhep2 );
779 theElasticProcess->
RegisterMe( elastic_anuc );
783 theInelasticProcess->
AddDataSet( theAntiNucleonData );
784 theInelasticProcess->
RegisterMe( theFTFModel0 );
788 else if (particleName ==
"neutron") {
793 elastic_neutronChipsModel->
SetMinEnergy( 19.0*CLHEP::MeV );
794 theElasticProcess->
RegisterMe( elastic_neutronChipsModel );
798 theElasticProcess->
RegisterMe( theElasticNeutronHP );
804 theInelasticProcess->
RegisterMe( theFTFModel1 );
805 theInelasticProcess->
RegisterMe( theBERTModel1 );
809 theInelasticProcess->
RegisterMe( theNeutronInelasticHPModel );
819 theCaptureProcess->
RegisterMe( theNeutronCaptureHPModel );
820 theCaptureProcess->
RegisterMe( theNeutronRadCapture);
825 else if (particleName ==
"anti_neutron")
829 theElasticProcess->
AddDataSet( elastic_anucxs );
830 theElasticProcess->
RegisterMe( elastic_lhep2 );
831 theElasticProcess->
RegisterMe( elastic_anuc );
835 theInelasticProcess->
AddDataSet( theAntiNucleonData );
836 theInelasticProcess->
RegisterMe( theFTFModel0 );
840 else if (particleName ==
"deuteron")
844 theElasticProcess->
RegisterMe( elastic_lhep0 );
845 theElasticProcess->
AddDataSet( theGGNuclNuclData );
849 theInelasticProcess->
AddDataSet( theGGNuclNuclData );
850 theInelasticProcess->
RegisterMe( theFTFModel1 );
855 else if (particleName ==
"triton")
859 theElasticProcess->
RegisterMe( elastic_lhep0 );
860 theElasticProcess->
AddDataSet( theGGNuclNuclData );
864 theInelasticProcess->
AddDataSet( theGGNuclNuclData );
865 theInelasticProcess->
RegisterMe( theFTFModel1 );
870 else if (particleName ==
"alpha")
874 theElasticProcess->
RegisterMe( elastic_lhep0 );
875 theElasticProcess->
AddDataSet( theGGNuclNuclData );
879 theInelasticProcess->
AddDataSet( theGGNuclNuclData );
880 theInelasticProcess->
RegisterMe( theFTFModel1 );
906 G4bool theDecayProcessNeverUsed =
true;
908 myParticleIterator->
reset();
909 while( (*(myParticleIterator))() )
916 theDecayProcessNeverUsed =
false;
932 param->
AddPhysics(
"world",
"G4RadioactiveDecay");
952 if (particleName ==
"GenericIon")
964 if ( theDecayProcessNeverUsed )
delete theDecayProcess;
972 G4cout <<
"LBE::SetCuts:";
975 G4cout <<
"LBE::SetCuts:";
G4GLOB_DLL std::ostream G4cout
static G4AntiNeutrinoE * AntiNeutrinoEDefinition()
static G4AntiNeutrinoMu * AntiNeutrinoMuDefinition()
G4ComponentAntiNuclNuclearXS * GetComponentCrossSection()
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 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
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()
G4DeexPrecoParameters * GetParameters()
static G4NuclearLevelData * GetInstance()
static G4NuclideTable * GetInstance()
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 * Proton()
void SetScintillationYieldFactor(const G4double yieldfactor)
void SetTrackSecondariesFirst(const G4bool state)
void SetScintillationExcitationRatio(const G4double ratio)
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)
void InitialiseAtomicDeexcitation()
void SetHighEnergyLimit(G4double)
void AddEmModel(G4int, G4VEmModel *, const G4Region *region=nullptr)
void SetStepFunction(G4double v1, G4double v2)
void SetEmModel(G4VEmModel *, G4int index=0)
void AddEmModel(G4int, G4VEmModel *, G4VEmFluctuationModel *fluc=0, const G4Region *region=nullptr)
void SetVerboseLevel(G4int value)
void SetStepLimitType(G4MscStepLimitType val)
void SetFragmentationModel(G4VStringFragmentation *aModel)
void SetVerboseLevel(G4int value)
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()