142 fGNLowEnergyLimit(200*
CLHEP::MeV),
147 if(verbose > 1)
G4cout <<
"### G4EmExtraPhysics" <<
G4endl;
157 theMessenger =
nullptr;
167 synActivatedForAll = val;
168 if(synActivatedForAll) { synActivated =
true; }
178 gLENDActivated = val;
180 if(val) { fGNLowEnergyLimit = 0.0; }
195 gmumuActivated = val;
200 mmumuActivated = val;
205 pmumuActivated = val;
215 if(val > 0.0) gmumuFactor = val;
220 if(val > 0.0) pmumuFactor = val;
225 if(val > 0.0) phadFactor = val;
237 fNuETotXscActivated = val;
242 fUseGammaNuclearXS = val;
247 if(bf > 0.0) fNuEleCcBias = bf;
252 if(bf > 0.0) fNuEleNcBias = bf;
257 if(bf > 0.0) fNuNucleusBias = bf;
262 if(val <= CLHEP::MeV) {
263 fGNLowEnergyLimit = 0.0;
266 }
else if(val <= CLHEP::GeV) {
267 fGNLowEnergyLimit = val;
268 gLENDActivated =
false;
274 fNuDetectorName = dn;
306 if(gnActivated) { ConstructGammaElectroNuclear(); }
321 sp->AddMMProcess(theGammaToMuMu);
348 if(synActivatedForAll) {
372 if(fNuETotXscActivated)
374 G4double bftot = std::max(fNuEleCcBias,fNuEleNcBias);
401 if(fNuETotXscActivated)
405 theNuMuNucleusProcess->
AddDataSet(theNuMuNucleusTotXsc);
412 theNuMuNucleusProcess->
RegisterMe(numunuclcc);
413 theNuMuNucleusProcess->
RegisterMe(numunuclnc);
414 theNuMuNucleusProcess->
RegisterMe(anumunuclcc);
415 theNuMuNucleusProcess->
RegisterMe(anumunuclnc);
425 if(fNuETotXscActivated)
429 theNuTauNucleusProcess->
AddDataSet(theNuTauNucleusTotXsc);
436 theNuTauNucleusProcess->
RegisterMe(nutaunuclcc);
437 theNuTauNucleusProcess->
RegisterMe(nutaunuclnc);
438 theNuTauNucleusProcess->
RegisterMe(anutaunuclcc);
439 theNuTauNucleusProcess->
RegisterMe(anutaunuclnc);
449 if(fNuETotXscActivated)
453 theNuElNucleusProcess->
AddDataSet(theNuElNucleusTotXsc);
460 theNuElNucleusProcess->
RegisterMe(nuelnuclcc);
461 theNuElNucleusProcess->
RegisterMe(nuelnuclnc);
462 theNuElNucleusProcess->
RegisterMe(anuelnuclcc);
463 theNuElNucleusProcess->
RegisterMe(anuelnuclnc);
470void G4EmExtraPhysics::ConstructGammaElectroNuclear()
478 if(fUseGammaNuclearXS) {
479 xs = xsreg->GetCrossSectionDataSet(
"GammaNuclearXS");
482 xs = xsreg->GetCrossSectionDataSet(
"PhotoNuclearXS");
505 if (fGNLowEnergyLimit > 0.0) {
519 if(gproc !=
nullptr) {
524 if(gLENDActivated) { ConstructLENDGammaNuclear(cascade, gnuc); }
537 if(eproc !=
nullptr) {
545 if(pproc !=
nullptr) {
553void G4EmExtraPhysics::ConstructLENDGammaNuclear(
557 G4String message =
"\n Skipping activation of Low Energy Nuclear Data (LEND) model for gamma nuclear interactions.\n The LEND model needs data files and they are available from ftp://gdo-nuclear.ucllnl.org/GND_after2013/GND_v1.3.tar.gz.\n Please set the environment variable G4LENDDATA to point to the directory named v1.3 extracted from the archive file.\n";
558 G4Exception(
"G4EmExtraPhysics::ConstructLENDGammaNuclear()"
559 ,
"G4LENDBertiniGammaElectroNuclearBuilder001"
const char * G4FindDataDir(const char *)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
#define G4_DECLARE_PHYSCONSTR_FACTORY(physics_constructor)
G4GLOB_DLL std::ostream G4cout
void SetCrossSecFactor(G4double fac)
static G4AntiNeutrinoE * AntiNeutrinoE()
static G4AntiNeutrinoMu * AntiNeutrinoMu()
static G4AntiNeutrinoTau * AntiNeutrinoTau()
static G4AntiProton * AntiProton()
static G4CrossSectionDataSetRegistry * Instance()
void SetBiasingFactor(G4double bf)
static G4Electron * Electron()
void SetCrossSecFactor(G4double fac)
void AddHadProcess(G4HadronicProcess *)
static G4GenericIon * GenericIon()
void SetMinEnergy(G4double anEnergy)
void SetMaxEnergy(const G4double anEnergy)
static G4HadronicParameters * Instance()
G4double GetMinEnergyTransitionFTF_Cascade() const
G4double GetMaxEnergyTransitionFTF_Cascade() const
G4double GetMaxEnergy() const
void AddDataSet(G4VCrossSectionDataSet *aDataSet)
void RegisterMe(G4HadronicInteraction *a)
void DumpLENDTargetInfo(G4bool force=false)
static G4LossTableManager * Instance()
G4VEmProcess * GetGammaGeneralProcess()
G4VEmProcess * GetPositronGeneralProcess()
G4VEmProcess * GetElectronGeneralProcess()
void SetBiasingFactor(G4double bf)
static G4MuonMinus * MuonMinus()
static G4MuonPlus * MuonPlus()
static G4NeutrinoE * NeutrinoE()
void SetBiasingFactor(G4double bf)
void SetBiasingFactors(G4double bfCc, G4double bfNc)
void SetBiasingFactors(G4double bfCc, G4double bfNc)
static G4NeutrinoMu * NeutrinoMu()
static G4NeutrinoTau * NeutrinoTau()
G4bool RegisterProcess(G4VProcess *process, G4ParticleDefinition *particle)
static G4PhysicsListHelper * GetPhysicsListHelper()
static G4PionMinus * PionMinus()
static G4PionPlus * PionPlus()
static G4Positron * Positron()
static G4Proton * Proton()
void SetBiasingFactor(G4double bf)
void SetTransport(G4VIntraNuclearTransportModel *const value)
void SetHighEnergyGenerator(G4VHighEnergyGenerator *const value)
void SetFragmentationModel(G4VStringFragmentation *aModel)
void SetPhysicsType(G4int)
void SetCrossSecFactor(G4double fac)