Geant4 10.7.0
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)
 
virtual ~G4EmExtraPhysics ()
 
void ConstructParticle ()
 
void ConstructProcess ()
 
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 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
 
void SetVerboseLevel (G4int value)
 
G4int GetVerboseLevel () const
 
G4int GetInstanceID () const
 
virtual void TerminateWorker ()
 

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
 
G4String namePhysics
 
G4int typePhysics
 
G4ParticleTabletheParticleTable
 
G4int g4vpcInstanceID
 
- 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 123 of file G4EmExtraPhysics.cc.

123 :
124 G4VPhysicsConstructor("G4GammaLeptoNuclearPhys"),
125 gnActivated (true),
126 eActivated (true),
127 gLENDActivated(false),
128 munActivated(true),
129 synActivated(false),
130 synActivatedForAll(false),
131 gmumuActivated(false),
132 pmumuActivated(false),
133 phadActivated (false),
134 fNuActivated (false),
135 fNuETotXscActivated (false),
136 fUseGammaNuclearXS(false),
137 gmumuFactor (1.0),
138 pmumuFactor (1.0),
139 phadFactor (1.0),
140 fNuEleCcBias(1.0),
141 fNuEleNcBias(1.0),
142 fNuNucleusBias(1.0),
143 fGNLowEnergyLimit(200*CLHEP::MeV),
144 fNuDetectorName("0"),
145 verbose(ver)
146{
147 theMessenger = new G4EmMessenger(this);
149 if(verbose > 1) G4cout << "### G4EmExtraPhysics" << G4endl;
150}
@ bEmExtra
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout

◆ G4EmExtraPhysics() [2/2]

G4EmExtraPhysics::G4EmExtraPhysics ( const G4String name)

Definition at line 152 of file G4EmExtraPhysics.cc.

◆ ~G4EmExtraPhysics()

G4EmExtraPhysics::~G4EmExtraPhysics ( )
virtual

Definition at line 156 of file G4EmExtraPhysics.cc.

157{
158 delete theMessenger;
159 theMessenger = nullptr;
160}

Member Function Documentation

◆ ConstructParticle()

void G4EmExtraPhysics::ConstructParticle ( )
virtual

Implements G4VPhysicsConstructor.

Definition at line 276 of file G4EmExtraPhysics.cc.

277{
283
290}
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 ( )
virtual

Implements G4VPhysicsConstructor.

Definition at line 292 of file G4EmExtraPhysics.cc.

293{
299
302
303 if(gnActivated) { ConstructGammaElectroNuclear(); }
304
305 if(munActivated) {
306 G4MuonNuclearProcess* muNucProcess = new G4MuonNuclearProcess();
307 G4MuonVDNuclearModel* muNucModel = new G4MuonVDNuclearModel();
308 muNucProcess->RegisterMe(muNucModel);
309 ph->RegisterProcess( muNucProcess, muonplus);
310 ph->RegisterProcess( muNucProcess, muonminus);
311 }
312 if(gmumuActivated) {
314 theGammaToMuMu->SetCrossSecFactor(gmumuFactor);
317 if(sp) {
318 sp->AddMMProcess(theGammaToMuMu);
319 } else {
320 ph->RegisterProcess(theGammaToMuMu, gamma);
321 }
322 }
323 if(pmumuActivated) {
324 G4AnnihiToMuPair* thePosiToMuMu = new G4AnnihiToMuPair();
325 thePosiToMuMu->SetCrossSecFactor(pmumuFactor);
326 ph->RegisterProcess(thePosiToMuMu, positron);
327 }
328 if(phadActivated) {
329 G4eeToHadrons* thePosiToHadrons = new G4eeToHadrons();
330 thePosiToHadrons->SetCrossSecFactor(phadFactor);
331 ph->RegisterProcess(thePosiToHadrons, positron);
332 }
333 if(synActivated) {
335 ph->RegisterProcess( theSynchRad, electron);
336 ph->RegisterProcess( theSynchRad, positron);
337 if(synActivatedForAll) {
338 auto myParticleIterator=GetParticleIterator();
339 myParticleIterator->reset();
340 G4ParticleDefinition* particle = nullptr;
341
342 while( (*myParticleIterator)() ) {
343 particle = myParticleIterator->value();
344 if( particle->GetPDGStable() && particle->GetPDGCharge() != 0.0) {
345 if(verbose > 1) {
346 G4cout << "### G4SynchrotronRadiation for "
347 << particle->GetParticleName() << G4endl;
348 }
349 ph->RegisterProcess( theSynchRad, particle);
350 }
351 }
352 }
353 }
354 if( fNuActivated )
355 {
362
363 G4NeutrinoElectronProcess* theNuEleProcess =
364 new G4NeutrinoElectronProcess(fNuDetectorName);
366
367 if(fNuETotXscActivated)
368 {
369 G4double bftot = std::max(fNuEleCcBias,fNuEleNcBias);
370 theNuEleProcess->SetBiasingFactor(bftot);
371 }
372 else
373 {
374 theNuEleProcess->SetBiasingFactors(fNuEleCcBias,fNuEleNcBias);
375 theNuEleTotXsc->SetBiasingFactors(fNuEleCcBias,fNuEleNcBias);
376 }
377 theNuEleProcess->AddDataSet(theNuEleTotXsc);
378
381 theNuEleProcess->RegisterMe(ccModel);
382 theNuEleProcess->RegisterMe(ncModel);
383
384 ph->RegisterProcess(theNuEleProcess, anuelectron);
385 ph->RegisterProcess(theNuEleProcess, nuelectron);
386 ph->RegisterProcess(theNuEleProcess, anumuon);
387 ph->RegisterProcess(theNuEleProcess, numuon);
388 ph->RegisterProcess(theNuEleProcess, anutau);
389 ph->RegisterProcess(theNuEleProcess, nutau);
390
391 // nu_mu nucleus interactions
392
393 G4MuNeutrinoNucleusProcess* theNuMuNucleusProcess = new G4MuNeutrinoNucleusProcess(fNuDetectorName);
394 G4MuNeutrinoNucleusTotXsc* theNuMuNucleusTotXsc = new G4MuNeutrinoNucleusTotXsc();
395
396 if(fNuETotXscActivated)
397 {
398 theNuMuNucleusProcess->SetBiasingFactor(fNuNucleusBias);
399 }
400 theNuMuNucleusProcess->AddDataSet(theNuMuNucleusTotXsc);
401
402 G4NuMuNucleusCcModel* numunuclcc = new G4NuMuNucleusCcModel();
403 G4NuMuNucleusNcModel* numunuclnc = new G4NuMuNucleusNcModel();
404 G4ANuMuNucleusCcModel* anumunuclcc = new G4ANuMuNucleusCcModel();
405 G4ANuMuNucleusNcModel* anumunuclnc = new G4ANuMuNucleusNcModel();
406
407 theNuMuNucleusProcess->RegisterMe(numunuclcc);
408 theNuMuNucleusProcess->RegisterMe(numunuclnc);
409 theNuMuNucleusProcess->RegisterMe(anumunuclcc);
410 theNuMuNucleusProcess->RegisterMe(anumunuclnc);
411
412 ph->RegisterProcess(theNuMuNucleusProcess, anumuon);
413 ph->RegisterProcess(theNuMuNucleusProcess, numuon);
414
415 // nu_e nucleus interactions
416
417 G4ElNeutrinoNucleusProcess* theNuElNucleusProcess = new G4ElNeutrinoNucleusProcess(fNuDetectorName);
418 G4ElNeutrinoNucleusTotXsc* theNuElNucleusTotXsc = new G4ElNeutrinoNucleusTotXsc();
419
420 if(fNuETotXscActivated)
421 {
422 theNuElNucleusProcess->SetBiasingFactor(fNuNucleusBias);
423 }
424 theNuElNucleusProcess->AddDataSet(theNuElNucleusTotXsc);
425
426 G4NuElNucleusCcModel* nuelnuclcc = new G4NuElNucleusCcModel();
427 G4NuElNucleusNcModel* nuelnuclnc = new G4NuElNucleusNcModel();
428 G4ANuElNucleusCcModel* anuelnuclcc = new G4ANuElNucleusCcModel();
429 G4ANuElNucleusNcModel* anuelnuclnc = new G4ANuElNucleusNcModel();
430
431 theNuElNucleusProcess->RegisterMe(nuelnuclcc);
432 theNuElNucleusProcess->RegisterMe(nuelnuclnc);
433 theNuElNucleusProcess->RegisterMe(anuelnuclcc);
434 theNuElNucleusProcess->RegisterMe(anuelnuclnc);
435
436 ph->RegisterProcess(theNuElNucleusProcess, anuelectron);
437 ph->RegisterProcess(theNuElNucleusProcess, nuelectron);
438 }
439}
double G4double
Definition: G4Types.hh:83
void SetCrossSecFactor(G4double fac)
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 GetPDGStable() const
G4double GetPDGCharge() const
const G4String & GetParticleName() const
G4bool RegisterProcess(G4VProcess *process, G4ParticleDefinition *particle)
static G4PhysicsListHelper * GetPhysicsListHelper()
G4ParticleTable::G4PTblDicIterator * GetParticleIterator() const
void SetCrossSecFactor(G4double fac)

◆ ElectroNuclear()

void G4EmExtraPhysics::ElectroNuclear ( G4bool  val)

Definition at line 185 of file G4EmExtraPhysics.cc.

186{
187 eActivated = val;
188}

Referenced by G4EmMessenger::SetNewValue().

◆ GammaNuclear()

void G4EmExtraPhysics::GammaNuclear ( G4bool  val)

Definition at line 173 of file G4EmExtraPhysics.cc.

174{
175 gnActivated = val;
176}

Referenced by G4EmMessenger::SetNewValue().

◆ GammaNuclearLEModelLimit()

void G4EmExtraPhysics::GammaNuclearLEModelLimit ( G4double  val)

Definition at line 257 of file G4EmExtraPhysics.cc.

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

Referenced by G4EmMessenger::SetNewValue().

◆ GammaToMuMu()

void G4EmExtraPhysics::GammaToMuMu ( G4bool  val)

Definition at line 195 of file G4EmExtraPhysics.cc.

196{
197 gmumuActivated = val;
198}

Referenced by G4EmMessenger::SetNewValue().

◆ GammaToMuMuFactor()

void G4EmExtraPhysics::GammaToMuMuFactor ( G4double  val)

Definition at line 210 of file G4EmExtraPhysics.cc.

211{
212 if(val > 0.0) gmumuFactor = val;
213}

Referenced by G4EmMessenger::SetNewValue().

◆ LENDGammaNuclear()

void G4EmExtraPhysics::LENDGammaNuclear ( G4bool  val)

Definition at line 178 of file G4EmExtraPhysics.cc.

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

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

◆ MuonNuclear()

void G4EmExtraPhysics::MuonNuclear ( G4bool  val)

Definition at line 190 of file G4EmExtraPhysics.cc.

191{
192 munActivated = val;
193}

Referenced by G4EmMessenger::SetNewValue().

◆ NeutrinoActivated()

void G4EmExtraPhysics::NeutrinoActivated ( G4bool  val)

Definition at line 227 of file G4EmExtraPhysics.cc.

228{
229 fNuActivated = val;
230}

Referenced by G4EmMessenger::SetNewValue().

◆ NuETotXscActivated()

void G4EmExtraPhysics::NuETotXscActivated ( G4bool  val)

Definition at line 232 of file G4EmExtraPhysics.cc.

233{
234 fNuETotXscActivated = val;
235}

Referenced by G4EmMessenger::SetNewValue().

◆ PositronToHadrons()

void G4EmExtraPhysics::PositronToHadrons ( G4bool  val)

Definition at line 205 of file G4EmExtraPhysics.cc.

206{
207 phadActivated = val;
208}

Referenced by G4EmMessenger::SetNewValue().

◆ PositronToHadronsFactor()

void G4EmExtraPhysics::PositronToHadronsFactor ( G4double  val)

Definition at line 220 of file G4EmExtraPhysics.cc.

221{
222 if(val > 0.0) phadFactor = val;
223}

Referenced by G4EmMessenger::SetNewValue().

◆ PositronToMuMu()

void G4EmExtraPhysics::PositronToMuMu ( G4bool  val)

Definition at line 200 of file G4EmExtraPhysics.cc.

201{
202 pmumuActivated = val;
203}

Referenced by G4EmMessenger::SetNewValue().

◆ PositronToMuMuFactor()

void G4EmExtraPhysics::PositronToMuMuFactor ( G4double  val)

Definition at line 215 of file G4EmExtraPhysics.cc.

216{
217 if(val > 0.0) pmumuFactor = val;
218}

Referenced by G4EmMessenger::SetNewValue().

◆ SetNuDetectorName()

void G4EmExtraPhysics::SetNuDetectorName ( const G4String dn)

Definition at line 269 of file G4EmExtraPhysics.cc.

270{
271 fNuDetectorName = dn;
272}

Referenced by G4EmMessenger::SetNewValue().

◆ SetNuEleCcBias()

void G4EmExtraPhysics::SetNuEleCcBias ( G4double  bf)

Definition at line 242 of file G4EmExtraPhysics.cc.

243{
244 if(bf > 0.0) fNuEleCcBias = bf;
245}

Referenced by G4EmMessenger::SetNewValue().

◆ SetNuEleNcBias()

void G4EmExtraPhysics::SetNuEleNcBias ( G4double  bf)

Definition at line 247 of file G4EmExtraPhysics.cc.

248{
249 if(bf > 0.0) fNuEleNcBias = bf;
250}

Referenced by G4EmMessenger::SetNewValue().

◆ SetNuNucleusBias()

void G4EmExtraPhysics::SetNuNucleusBias ( G4double  bf)

Definition at line 252 of file G4EmExtraPhysics.cc.

253{
254 if(bf > 0.0) fNuNucleusBias = bf;
255}

Referenced by G4EmMessenger::SetNewValue().

◆ SetUseGammaNuclearXS()

void G4EmExtraPhysics::SetUseGammaNuclearXS ( G4bool  val)

Definition at line 237 of file G4EmExtraPhysics.cc.

238{
239 fUseGammaNuclearXS = val;
240}

Referenced by G4EmMessenger::SetNewValue().

◆ Synch()

void G4EmExtraPhysics::Synch ( G4bool  val)

Definition at line 162 of file G4EmExtraPhysics.cc.

163{
164 synActivated = val;
165}

Referenced by G4EmMessenger::SetNewValue().

◆ SynchAll()

void G4EmExtraPhysics::SynchAll ( G4bool  val)

Definition at line 167 of file G4EmExtraPhysics.cc.

168{
169 synActivatedForAll = val;
170 if(synActivatedForAll) { synActivated = true; }
171}

Referenced by G4EmMessenger::SetNewValue().


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