Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4EmExtraPhysics Class Reference

#include <G4EmExtraPhysics.hh>

+ Inheritance diagram for G4EmExtraPhysics:

Public Member Functions

 G4EmExtraPhysics (G4int ver=1)
 
 G4EmExtraPhysics (const G4String &name)
 
 ~G4EmExtraPhysics () override
 
void ConstructParticle () override
 
void ConstructProcess () override
 
void Synch (G4bool val)
 
void SynchAll (G4bool val)
 
void GammaNuclear (G4bool val)
 
void LENDGammaNuclear (G4bool val)
 
void ElectroNuclear (G4bool val)
 
void MuonNuclear (G4bool val)
 
void GammaToMuMu (G4bool val)
 
void MuonToMuMu (G4bool val)
 
void PositronToMuMu (G4bool val)
 
void PositronToHadrons (G4bool val)
 
void GammaToMuMuFactor (G4double val)
 
void PositronToMuMuFactor (G4double val)
 
void PositronToHadronsFactor (G4double val)
 
void GammaNuclearLEModelLimit (G4double val)
 
void NeutrinoActivated (G4bool val)
 
void NuETotXscActivated (G4bool val)
 
void SetUseGammaNuclearXS (G4bool val)
 
void SetNuEleCcBias (G4double bf)
 
void SetNuEleNcBias (G4double bf)
 
void SetNuNucleusBias (G4double bf)
 
void SetNuDetectorName (const G4String &dn)
 
- Public Member Functions inherited from G4VPhysicsConstructor
 G4VPhysicsConstructor (const G4String &="")
 
 G4VPhysicsConstructor (const G4String &name, G4int physics_type)
 
virtual ~G4VPhysicsConstructor ()
 
virtual void ConstructParticle ()=0
 
virtual void ConstructProcess ()=0
 
void SetPhysicsName (const G4String &="")
 
const G4StringGetPhysicsName () const
 
void SetPhysicsType (G4int)
 
G4int GetPhysicsType () const
 
G4int GetInstanceID () const
 
virtual void TerminateWorker ()
 
void SetVerboseLevel (G4int value)
 
G4int GetVerboseLevel () const
 

Additional Inherited Members

- Static Public Member Functions inherited from G4VPhysicsConstructor
static const G4VPCManagerGetSubInstanceManager ()
 
- Protected Types inherited from G4VPhysicsConstructor
using PhysicsBuilder_V = G4VPCData::PhysicsBuilders_V
 
- Protected Member Functions inherited from G4VPhysicsConstructor
G4bool RegisterProcess (G4VProcess *process, G4ParticleDefinition *particle)
 
G4ParticleTable::G4PTblDicIteratorGetParticleIterator () const
 
PhysicsBuilder_V GetBuilders () const
 
void AddBuilder (G4PhysicsBuilderInterface *bld)
 
- Protected Attributes inherited from G4VPhysicsConstructor
G4int verboseLevel = 0
 
G4String namePhysics = ""
 
G4int typePhysics = 0
 
G4ParticleTabletheParticleTable = nullptr
 
G4int g4vpcInstanceID = 0
 
- Static Protected Attributes inherited from G4VPhysicsConstructor
static G4RUN_DLL G4VPCManager subInstanceManager
 

Detailed Description

Definition at line 53 of file G4EmExtraPhysics.hh.

Constructor & Destructor Documentation

◆ G4EmExtraPhysics() [1/2]

G4EmExtraPhysics::G4EmExtraPhysics ( G4int  ver = 1)

Definition at line 140 of file G4EmExtraPhysics.cc.

140 :
141 G4VPhysicsConstructor("G4GammaLeptoNuclearPhys"),
142 fGNLowEnergyLimit(200*CLHEP::MeV),
143 verbose(ver)
144{
145 theMessenger = new G4EmMessenger(this);
147 if(verbose > 1) G4cout << "### G4EmExtraPhysics" << G4endl;
148}
@ bEmExtra
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout

◆ G4EmExtraPhysics() [2/2]

G4EmExtraPhysics::G4EmExtraPhysics ( const G4String name)

Definition at line 150 of file G4EmExtraPhysics.cc.

◆ ~G4EmExtraPhysics()

G4EmExtraPhysics::~G4EmExtraPhysics ( )
override

Definition at line 154 of file G4EmExtraPhysics.cc.

155{
156 delete theMessenger;
157 theMessenger = nullptr;
158}

Member Function Documentation

◆ ConstructParticle()

void G4EmExtraPhysics::ConstructParticle ( )
overridevirtual

Implements G4VPhysicsConstructor.

Definition at line 279 of file G4EmExtraPhysics.cc.

280{
286
293}
static G4AntiNeutrinoE * AntiNeutrinoE()
static G4AntiNeutrinoMu * AntiNeutrinoMu()
static G4AntiNeutrinoTau * AntiNeutrinoTau()
static G4Electron * Electron()
Definition: G4Electron.cc:93
static G4Gamma * Gamma()
Definition: G4Gamma.cc:85
static G4MuonMinus * MuonMinus()
Definition: G4MuonMinus.cc:99
static G4MuonPlus * MuonPlus()
Definition: G4MuonPlus.cc:98
static G4NeutrinoE * NeutrinoE()
Definition: G4NeutrinoE.cc:84
static G4NeutrinoMu * NeutrinoMu()
Definition: G4NeutrinoMu.cc:84
static G4NeutrinoTau * NeutrinoTau()
static G4Positron * Positron()
Definition: G4Positron.cc:93

◆ ConstructProcess()

void G4EmExtraPhysics::ConstructProcess ( )
overridevirtual

Implements G4VPhysicsConstructor.

Definition at line 295 of file G4EmExtraPhysics.cc.

296{
302
305
306 if(gnActivated) { ConstructGammaElectroNuclear(); }
307
308 if(munActivated) {
309 G4MuonNuclearProcess* muNucProcess = new G4MuonNuclearProcess();
310 G4MuonVDNuclearModel* muNucModel = new G4MuonVDNuclearModel();
311 muNucProcess->RegisterMe(muNucModel);
312 ph->RegisterProcess( muNucProcess, muonplus);
313 ph->RegisterProcess( muNucProcess, muonminus);
314 }
315 if(gmumuActivated) {
317 theGammaToMuMu->SetCrossSecFactor(gmumuFactor);
319 static_cast<G4GammaGeneralProcess*>(emManager->GetGammaGeneralProcess());
320 if(nullptr != sp) {
321 sp->AddMMProcess(theGammaToMuMu);
322 } else {
323 ph->RegisterProcess(theGammaToMuMu, gamma);
324 }
325 }
326 if(mmumuActivated) {
327 auto proc = new G4MuonToMuonPairProduction();
328 ph->RegisterProcess(proc, muonplus);
329 ph->RegisterProcess(proc, muonminus);
330 }
331 if(pmumuActivated) {
332 G4AnnihiToMuPair* thePosiToMuMu = new G4AnnihiToMuPair();
333 thePosiToMuMu->SetCrossSecFactor(pmumuFactor);
334 ph->RegisterProcess(thePosiToMuMu, positron);
335 G4AnnihiToMuPair* thePosiToTauTau = new G4AnnihiToMuPair("AnnihiToTauPair");
336 thePosiToTauTau->SetCrossSecFactor(pmumuFactor);
337 ph->RegisterProcess(thePosiToTauTau, positron);
338 }
339 if(phadActivated) {
340 G4eeToHadrons* thePosiToHadrons = new G4eeToHadrons();
341 thePosiToHadrons->SetCrossSecFactor(phadFactor);
342 ph->RegisterProcess(thePosiToHadrons, positron);
343 }
344 if(synActivated) {
346 ph->RegisterProcess( theSynchRad, electron);
347 ph->RegisterProcess( theSynchRad, positron);
348 if(synActivatedForAll) {
349 ph->RegisterProcess( theSynchRad, muonplus);
350 ph->RegisterProcess( theSynchRad, muonminus);
351
352 ph->RegisterProcess( theSynchRad, G4Proton::Proton());
353 ph->RegisterProcess( theSynchRad, G4AntiProton::AntiProton());
354 ph->RegisterProcess( theSynchRad, G4PionPlus::PionPlus());
355 ph->RegisterProcess( theSynchRad, G4PionMinus::PionMinus());
356 ph->RegisterProcess( theSynchRad, G4GenericIon::GenericIon());
357 }
358 }
359 if( fNuActivated )
360 {
367
368 G4NeutrinoElectronProcess* theNuEleProcess =
369 new G4NeutrinoElectronProcess(fNuDetectorName);
371
372 if(fNuETotXscActivated)
373 {
374 G4double bftot = std::max(fNuEleCcBias,fNuEleNcBias);
375 theNuEleProcess->SetBiasingFactor(bftot);
376 }
377 else
378 {
379 theNuEleProcess->SetBiasingFactors(fNuEleCcBias,fNuEleNcBias);
380 theNuEleTotXsc->SetBiasingFactors(fNuEleCcBias,fNuEleNcBias);
381 }
382 theNuEleProcess->AddDataSet(theNuEleTotXsc);
383
386 theNuEleProcess->RegisterMe(ccModel);
387 theNuEleProcess->RegisterMe(ncModel);
388
389 ph->RegisterProcess(theNuEleProcess, anuelectron);
390 ph->RegisterProcess(theNuEleProcess, nuelectron);
391 ph->RegisterProcess(theNuEleProcess, anumuon);
392 ph->RegisterProcess(theNuEleProcess, numuon);
393 ph->RegisterProcess(theNuEleProcess, anutau);
394 ph->RegisterProcess(theNuEleProcess, nutau);
395
396 // nu_mu nucleus interactions
397
398 G4MuNeutrinoNucleusProcess* theNuMuNucleusProcess = new G4MuNeutrinoNucleusProcess(fNuDetectorName);
399 G4MuNeutrinoNucleusTotXsc* theNuMuNucleusTotXsc = new G4MuNeutrinoNucleusTotXsc();
400
401 if(fNuETotXscActivated)
402 {
403 theNuMuNucleusProcess->SetBiasingFactor(fNuNucleusBias);
404 }
405 theNuMuNucleusProcess->AddDataSet(theNuMuNucleusTotXsc);
406
407 G4NuMuNucleusCcModel* numunuclcc = new G4NuMuNucleusCcModel();
408 G4NuMuNucleusNcModel* numunuclnc = new G4NuMuNucleusNcModel();
409 G4ANuMuNucleusCcModel* anumunuclcc = new G4ANuMuNucleusCcModel();
410 G4ANuMuNucleusNcModel* anumunuclnc = new G4ANuMuNucleusNcModel();
411
412 theNuMuNucleusProcess->RegisterMe(numunuclcc);
413 theNuMuNucleusProcess->RegisterMe(numunuclnc);
414 theNuMuNucleusProcess->RegisterMe(anumunuclcc);
415 theNuMuNucleusProcess->RegisterMe(anumunuclnc);
416
417 ph->RegisterProcess(theNuMuNucleusProcess, anumuon);
418 ph->RegisterProcess(theNuMuNucleusProcess, numuon);
419
420 // nu_tau nucleus interactions
421
422 G4TauNeutrinoNucleusProcess* theNuTauNucleusProcess = new G4TauNeutrinoNucleusProcess(fNuDetectorName);
423 G4TauNeutrinoNucleusTotXsc* theNuTauNucleusTotXsc = new G4TauNeutrinoNucleusTotXsc();
424
425 if(fNuETotXscActivated)
426 {
427 theNuTauNucleusProcess->SetBiasingFactor(fNuNucleusBias);
428 }
429 theNuTauNucleusProcess->AddDataSet(theNuTauNucleusTotXsc);
430
431 G4NuTauNucleusCcModel* nutaunuclcc = new G4NuTauNucleusCcModel();
432 G4NuTauNucleusNcModel* nutaunuclnc = new G4NuTauNucleusNcModel();
435
436 theNuTauNucleusProcess->RegisterMe(nutaunuclcc);
437 theNuTauNucleusProcess->RegisterMe(nutaunuclnc);
438 theNuTauNucleusProcess->RegisterMe(anutaunuclcc);
439 theNuTauNucleusProcess->RegisterMe(anutaunuclnc);
440
441 ph->RegisterProcess(theNuTauNucleusProcess, anutau);
442 ph->RegisterProcess(theNuTauNucleusProcess, nutau);
443
444 // nu_e nucleus interactions
445
446 G4ElNeutrinoNucleusProcess* theNuElNucleusProcess = new G4ElNeutrinoNucleusProcess(fNuDetectorName);
447 G4ElNeutrinoNucleusTotXsc* theNuElNucleusTotXsc = new G4ElNeutrinoNucleusTotXsc();
448
449 if(fNuETotXscActivated)
450 {
451 theNuElNucleusProcess->SetBiasingFactor(fNuNucleusBias);
452 }
453 theNuElNucleusProcess->AddDataSet(theNuElNucleusTotXsc);
454
455 G4NuElNucleusCcModel* nuelnuclcc = new G4NuElNucleusCcModel();
456 G4NuElNucleusNcModel* nuelnuclnc = new G4NuElNucleusNcModel();
457 G4ANuElNucleusCcModel* anuelnuclcc = new G4ANuElNucleusCcModel();
458 G4ANuElNucleusNcModel* anuelnuclnc = new G4ANuElNucleusNcModel();
459
460 theNuElNucleusProcess->RegisterMe(nuelnuclcc);
461 theNuElNucleusProcess->RegisterMe(nuelnuclnc);
462 theNuElNucleusProcess->RegisterMe(anuelnuclcc);
463 theNuElNucleusProcess->RegisterMe(anuelnuclnc);
464
465 ph->RegisterProcess(theNuElNucleusProcess, anuelectron);
466 ph->RegisterProcess(theNuElNucleusProcess, nuelectron);
467 }
468}
double G4double
Definition: G4Types.hh:83
void SetCrossSecFactor(G4double fac)
static G4AntiProton * AntiProton()
Definition: G4AntiProton.cc:92
static G4GenericIon * GenericIon()
Definition: G4GenericIon.cc:92
void AddDataSet(G4VCrossSectionDataSet *aDataSet)
void RegisterMe(G4HadronicInteraction *a)
static G4LossTableManager * Instance()
G4VEmProcess * GetGammaGeneralProcess()
void SetBiasingFactors(G4double bfCc, G4double bfNc)
void SetBiasingFactors(G4double bfCc, G4double bfNc)
G4bool RegisterProcess(G4VProcess *process, G4ParticleDefinition *particle)
static G4PhysicsListHelper * GetPhysicsListHelper()
static G4PionMinus * PionMinus()
Definition: G4PionMinus.cc:97
static G4PionPlus * PionPlus()
Definition: G4PionPlus.cc:97
static G4Proton * Proton()
Definition: G4Proton.cc:92
void SetCrossSecFactor(G4double fac)

◆ ElectroNuclear()

void G4EmExtraPhysics::ElectroNuclear ( G4bool  val)

Definition at line 183 of file G4EmExtraPhysics.cc.

184{
185 eActivated = val;
186}

Referenced by G4EmMessenger::SetNewValue().

◆ GammaNuclear()

void G4EmExtraPhysics::GammaNuclear ( G4bool  val)

Definition at line 171 of file G4EmExtraPhysics.cc.

172{
173 gnActivated = val;
174}

Referenced by G4EmMessenger::SetNewValue().

◆ GammaNuclearLEModelLimit()

void G4EmExtraPhysics::GammaNuclearLEModelLimit ( G4double  val)

Definition at line 260 of file G4EmExtraPhysics.cc.

261{
262 if(val <= CLHEP::MeV) {
263 fGNLowEnergyLimit = 0.0;
264
265 // lowenergy model should not be applied at high energy
266 } else if(val <= CLHEP::GeV) {
267 fGNLowEnergyLimit = val;
268 gLENDActivated = false;
269 }
270}

Referenced by G4EmMessenger::SetNewValue().

◆ GammaToMuMu()

void G4EmExtraPhysics::GammaToMuMu ( G4bool  val)

Definition at line 193 of file G4EmExtraPhysics.cc.

194{
195 gmumuActivated = val;
196}

Referenced by G4EmMessenger::SetNewValue().

◆ GammaToMuMuFactor()

void G4EmExtraPhysics::GammaToMuMuFactor ( G4double  val)

Definition at line 213 of file G4EmExtraPhysics.cc.

214{
215 if(val > 0.0) gmumuFactor = val;
216}

Referenced by G4EmMessenger::SetNewValue().

◆ LENDGammaNuclear()

void G4EmExtraPhysics::LENDGammaNuclear ( G4bool  val)

Definition at line 176 of file G4EmExtraPhysics.cc.

177{
178 gLENDActivated = val;
179 // LEND cannot be used with low-energy model
180 if(val) { fGNLowEnergyLimit = 0.0; }
181}

Referenced by G4EmMessenger::SetNewValue(), and Shielding::Shielding().

◆ MuonNuclear()

void G4EmExtraPhysics::MuonNuclear ( G4bool  val)

Definition at line 188 of file G4EmExtraPhysics.cc.

189{
190 munActivated = val;
191}

Referenced by G4EmMessenger::SetNewValue().

◆ MuonToMuMu()

void G4EmExtraPhysics::MuonToMuMu ( G4bool  val)

Definition at line 198 of file G4EmExtraPhysics.cc.

199{
200 mmumuActivated = val;
201}

Referenced by G4EmMessenger::SetNewValue().

◆ NeutrinoActivated()

void G4EmExtraPhysics::NeutrinoActivated ( G4bool  val)

Definition at line 230 of file G4EmExtraPhysics.cc.

231{
232 fNuActivated = val;
233}

Referenced by G4EmMessenger::SetNewValue().

◆ NuETotXscActivated()

void G4EmExtraPhysics::NuETotXscActivated ( G4bool  val)

Definition at line 235 of file G4EmExtraPhysics.cc.

236{
237 fNuETotXscActivated = val;
238}

Referenced by G4EmMessenger::SetNewValue().

◆ PositronToHadrons()

void G4EmExtraPhysics::PositronToHadrons ( G4bool  val)

Definition at line 208 of file G4EmExtraPhysics.cc.

209{
210 phadActivated = val;
211}

Referenced by G4EmMessenger::SetNewValue().

◆ PositronToHadronsFactor()

void G4EmExtraPhysics::PositronToHadronsFactor ( G4double  val)

Definition at line 223 of file G4EmExtraPhysics.cc.

224{
225 if(val > 0.0) phadFactor = val;
226}

Referenced by G4EmMessenger::SetNewValue().

◆ PositronToMuMu()

void G4EmExtraPhysics::PositronToMuMu ( G4bool  val)

Definition at line 203 of file G4EmExtraPhysics.cc.

204{
205 pmumuActivated = val;
206}

Referenced by G4EmMessenger::SetNewValue().

◆ PositronToMuMuFactor()

void G4EmExtraPhysics::PositronToMuMuFactor ( G4double  val)

Definition at line 218 of file G4EmExtraPhysics.cc.

219{
220 if(val > 0.0) pmumuFactor = val;
221}

Referenced by G4EmMessenger::SetNewValue().

◆ SetNuDetectorName()

void G4EmExtraPhysics::SetNuDetectorName ( const G4String dn)

Definition at line 272 of file G4EmExtraPhysics.cc.

273{
274 fNuDetectorName = dn;
275}

Referenced by G4EmMessenger::SetNewValue().

◆ SetNuEleCcBias()

void G4EmExtraPhysics::SetNuEleCcBias ( G4double  bf)

Definition at line 245 of file G4EmExtraPhysics.cc.

246{
247 if(bf > 0.0) fNuEleCcBias = bf;
248}

Referenced by G4EmMessenger::SetNewValue().

◆ SetNuEleNcBias()

void G4EmExtraPhysics::SetNuEleNcBias ( G4double  bf)

Definition at line 250 of file G4EmExtraPhysics.cc.

251{
252 if(bf > 0.0) fNuEleNcBias = bf;
253}

Referenced by G4EmMessenger::SetNewValue().

◆ SetNuNucleusBias()

void G4EmExtraPhysics::SetNuNucleusBias ( G4double  bf)

Definition at line 255 of file G4EmExtraPhysics.cc.

256{
257 if(bf > 0.0) fNuNucleusBias = bf;
258}

Referenced by G4EmMessenger::SetNewValue().

◆ SetUseGammaNuclearXS()

void G4EmExtraPhysics::SetUseGammaNuclearXS ( G4bool  val)

Definition at line 240 of file G4EmExtraPhysics.cc.

241{
242 fUseGammaNuclearXS = val;
243}

Referenced by G4EmMessenger::SetNewValue().

◆ Synch()

void G4EmExtraPhysics::Synch ( G4bool  val)

Definition at line 160 of file G4EmExtraPhysics.cc.

161{
162 synActivated = val;
163}

Referenced by G4EmMessenger::SetNewValue().

◆ SynchAll()

void G4EmExtraPhysics::SynchAll ( G4bool  val)

Definition at line 165 of file G4EmExtraPhysics.cc.

166{
167 synActivatedForAll = val;
168 if(synActivatedForAll) { synActivated = true; }
169}

Referenced by G4EmMessenger::SetNewValue().


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