127 gLENDActivated(false),
130 synActivatedForAll(false),
131 gmumuActivated(false),
132 pmumuActivated(false),
133 phadActivated (false),
134 fNuActivated (false),
135 fNuETotXscActivated (false),
136 fUseGammaNuclearXS(false),
143 fGNLowEnergyLimit(200*
CLHEP::MeV),
144 fNuDetectorName(
"0"),
149 if(verbose > 1)
G4cout <<
"### G4EmExtraPhysics" <<
G4endl;
159 theMessenger =
nullptr;
169 synActivatedForAll = val;
170 if(synActivatedForAll) { synActivated =
true; }
180 gLENDActivated = val;
182 if(val) { fGNLowEnergyLimit = 0.0; }
197 gmumuActivated = val;
202 pmumuActivated = val;
212 if(val > 0.0) gmumuFactor = val;
217 if(val > 0.0) pmumuFactor = val;
222 if(val > 0.0) phadFactor = val;
234 fNuETotXscActivated = val;
239 fUseGammaNuclearXS = val;
244 if(bf > 0.0) fNuEleCcBias = bf;
249 if(bf > 0.0) fNuEleNcBias = bf;
254 if(bf > 0.0) fNuNucleusBias = bf;
259 if(val <= CLHEP::MeV) {
260 fGNLowEnergyLimit = 0.0;
263 }
else if(val <= CLHEP::GeV) {
264 fGNLowEnergyLimit = val;
265 gLENDActivated =
false;
271 fNuDetectorName = dn;
303 if(gnActivated) { ConstructGammaElectroNuclear(); }
318 sp->AddMMProcess(theGammaToMuMu);
337 if(synActivatedForAll) {
339 myParticleIterator->reset();
342 while( (*myParticleIterator)() ) {
343 particle = myParticleIterator->value();
346 G4cout <<
"### G4SynchrotronRadiation for "
367 if(fNuETotXscActivated)
369 G4double bftot = std::max(fNuEleCcBias,fNuEleNcBias);
396 if(fNuETotXscActivated)
400 theNuMuNucleusProcess->
AddDataSet(theNuMuNucleusTotXsc);
407 theNuMuNucleusProcess->
RegisterMe(numunuclcc);
408 theNuMuNucleusProcess->
RegisterMe(numunuclnc);
409 theNuMuNucleusProcess->
RegisterMe(anumunuclcc);
410 theNuMuNucleusProcess->
RegisterMe(anumunuclnc);
420 if(fNuETotXscActivated)
424 theNuElNucleusProcess->
AddDataSet(theNuElNucleusTotXsc);
431 theNuElNucleusProcess->
RegisterMe(nuelnuclcc);
432 theNuElNucleusProcess->
RegisterMe(nuelnuclnc);
433 theNuElNucleusProcess->
RegisterMe(anuelnuclcc);
434 theNuElNucleusProcess->
RegisterMe(anuelnuclnc);
441void G4EmExtraPhysics::ConstructGammaElectroNuclear()
447 if(fUseGammaNuclearXS) {
469 if (fGNLowEnergyLimit > 0.0) {
483 if(gproc !=
nullptr) {
488 if(gLENDActivated) { ConstructLENDGammaNuclear(cascade, gnuc); }
498 if(eproc !=
nullptr) {
507 if(pproc !=
nullptr) {
516void G4EmExtraPhysics::ConstructLENDGammaNuclear(
519 if (std::getenv(
"G4LENDDATA") ==
nullptr ) {
520 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";
521 G4Exception(
"G4EmExtraPhysics::ConstructLENDGammaNuclear()"
522 ,
"G4LENDBertiniGammaElectroNuclearBuilder001"
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()
void SetBiasingFactor(G4double bf)
static G4Electron * Electron()
void SetCrossSecFactor(G4double fac)
void AddHadProcess(G4HadronicProcess *)
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 GetPDGStable() const
G4double GetPDGCharge() const
const G4String & GetParticleName() const
G4bool RegisterProcess(G4VProcess *process, G4ParticleDefinition *particle)
static G4PhysicsListHelper * GetPhysicsListHelper()
static G4Positron * Positron()
void SetTransport(G4VIntraNuclearTransportModel *const value)
void SetHighEnergyGenerator(G4VHighEnergyGenerator *const value)
void SetFragmentationModel(G4VStringFragmentation *aModel)
G4ParticleTable::G4PTblDicIterator * GetParticleIterator() const
void SetPhysicsType(G4int)
void SetCrossSecFactor(G4double fac)