Geant4  10.02.p03
G4MonopolePhysics Class Reference

#include <G4MonopolePhysics.hh>

Inheritance diagram for G4MonopolePhysics:
Collaboration diagram for G4MonopolePhysics:

Public Member Functions

 G4MonopolePhysics (const G4String &nam="Monopole Physics")
 
 ~G4MonopolePhysics ()
 
virtual void ConstructParticle ()
 
virtual void ConstructProcess ()
 
void SetMagneticCharge (G4double)
 
void SetElectricCharge (G4double)
 
void SetMonopoleMass (G4double)
 
- Public Member Functions inherited from G4VPhysicsConstructor
 G4VPhysicsConstructor (const G4String &="")
 
 G4VPhysicsConstructor (const G4String &name, G4int physics_type)
 
virtual ~G4VPhysicsConstructor ()
 
void SetPhysicsName (const G4String &="")
 
const G4StringGetPhysicsName () const
 
void SetPhysicsType (G4int)
 
G4int GetPhysicsType () const
 
void SetVerboseLevel (G4int value)
 
G4int GetVerboseLevel () const
 
G4int GetInstanceID () const
 

Private Member Functions

G4MonopolePhysicsoperator= (const G4MonopolePhysics &right)
 
 G4MonopolePhysics (const G4MonopolePhysics &)
 

Private Attributes

G4double fMagCharge
 
G4double fElCharge
 
G4double fMonopoleMass
 
G4MonopolePhysicsMessengerfMessenger
 
G4MonopolefMpl
 

Additional Inherited Members

- Static Public Member Functions inherited from G4VPhysicsConstructor
static const G4VPCManagerGetSubInstanceManager ()
 
- Protected Member Functions inherited from G4VPhysicsConstructor
G4bool RegisterProcess (G4VProcess *process, G4ParticleDefinition *particle)
 
G4ParticleTable::G4PTblDicIteratorGetParticleIterator () const
 
- 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 45 of file G4MonopolePhysics.hh.

Constructor & Destructor Documentation

◆ G4MonopolePhysics() [1/2]

G4MonopolePhysics::G4MonopolePhysics ( const G4String nam = "Monopole Physics")

Definition at line 70 of file G4MonopolePhysics.cc.

71  : G4VPhysicsConstructor(nam),
72  fMessenger(0), fMpl(0)
73 {
74  fMagCharge = 1.0;
75  // fMagCharge = -1.0;
76  // fElCharge = -50.0;
77  fElCharge = 0.0;
78  fMonopoleMass = 100.*GeV;
81 }
static const double GeV
Definition: G4SIunits.hh:214
G4VPhysicsConstructor(const G4String &="")
G4MonopolePhysicsMessenger * fMessenger
Here is the call graph for this function:

◆ ~G4MonopolePhysics()

G4MonopolePhysics::~G4MonopolePhysics ( )

Definition at line 85 of file G4MonopolePhysics.cc.

86 {
87  delete fMessenger;
88 }
G4MonopolePhysicsMessenger * fMessenger

◆ G4MonopolePhysics() [2/2]

G4MonopolePhysics::G4MonopolePhysics ( const G4MonopolePhysics )
private

Member Function Documentation

◆ ConstructParticle()

void G4MonopolePhysics::ConstructParticle ( void  )
virtual

Implements G4VPhysicsConstructor.

Definition at line 92 of file G4MonopolePhysics.cc.

93 {
95 }
static G4Monopole * MonopoleDefinition(G4double mass=100.*CLHEP::GeV, G4double magCharge=1.0, G4double elCharge=0.0)
Definition: G4Monopole.cc:93
Here is the call graph for this function:

◆ ConstructProcess()

void G4MonopolePhysics::ConstructProcess ( void  )
virtual

Implements G4VPhysicsConstructor.

Definition at line 99 of file G4MonopolePhysics.cc.

100 {
101  if(verboseLevel > 0) {
102  G4cout << "G4MonopolePhysics::ConstructProcess" << G4endl;
103  }
104 
106  G4ProcessManager* pmanager = fMpl->GetProcessManager();
107 
108  // defined monopole parameters and binning
109 
110  G4double magn = fMpl->MagneticCharge();
111  G4double emin = fMonopoleMass/20000.;
112  if(emin < keV) { emin = keV; }
113  G4double emax = std::max(10.*TeV, fMonopoleMass*100);
114  G4int nbin = G4lrint(10*std::log10(emax/emin));
115 
116  // dedicated trasporation
117  if(magn != 0.0) {
118  pmanager->RemoveProcess(0);
119  pmanager->AddProcess(new G4MonopoleTransportation(fMpl),-1, 0, 0);
120  }
121 
122  if(fMpl->GetPDGCharge() != 0.0) {
123  G4hIonisation* hhioni = new G4hIonisation();
124  hhioni->SetDEDXBinning(nbin);
125  hhioni->SetMinKinEnergy(emin);
126  hhioni->SetMaxKinEnergy(emax);
127  ph->RegisterProcess(hhioni, fMpl);
128  }
129  if(magn != 0.0) {
130  G4mplIonisation* mplioni = new G4mplIonisation(magn);
131  mplioni->SetDEDXBinning(nbin);
132  mplioni->SetMinKinEnergy(emin);
133  mplioni->SetMaxKinEnergy(emax);
134  ph->RegisterProcess(mplioni, fMpl);
135  }
136  ph->RegisterProcess(new G4StepLimiter(), fMpl);
137 }
G4ProcessManager * GetProcessManager() const
int G4int
Definition: G4Types.hh:78
G4GLOB_DLL std::ostream G4cout
G4bool RegisterProcess(G4VProcess *process, G4ParticleDefinition *particle)
G4int AddProcess(G4VProcess *aProcess, G4int ordAtRestDoIt=ordInActive, G4int ordAlongSteptDoIt=ordInActive, G4int ordPostStepDoIt=ordInActive)
G4double MagneticCharge() const
Definition: G4Monopole.cc:125
void SetMaxKinEnergy(G4double e)
static const G4double emax
int G4lrint(double ad)
Definition: templates.hh:163
static G4PhysicsListHelper * GetPhysicsListHelper()
#define G4endl
Definition: G4ios.hh:61
static const double TeV
Definition: G4SIunits.hh:215
static const double keV
Definition: G4SIunits.hh:213
double G4double
Definition: G4Types.hh:76
G4VProcess * RemoveProcess(G4VProcess *aProcess)
G4double GetPDGCharge() const
void SetDEDXBinning(G4int nbins)
void SetMinKinEnergy(G4double e)
Here is the call graph for this function:

◆ operator=()

G4MonopolePhysics& G4MonopolePhysics::operator= ( const G4MonopolePhysics right)
private

◆ SetElectricCharge()

void G4MonopolePhysics::SetElectricCharge ( G4double  val)

Definition at line 148 of file G4MonopolePhysics.cc.

149 {
150  fElCharge = val;
151 }
Here is the caller graph for this function:

◆ SetMagneticCharge()

void G4MonopolePhysics::SetMagneticCharge ( G4double  val)

Definition at line 141 of file G4MonopolePhysics.cc.

142 {
143  fMagCharge = val;
144 }
Here is the caller graph for this function:

◆ SetMonopoleMass()

void G4MonopolePhysics::SetMonopoleMass ( G4double  mass)

Definition at line 155 of file G4MonopolePhysics.cc.

156 {
157  fMonopoleMass = mass;
158 }
Here is the caller graph for this function:

Member Data Documentation

◆ fElCharge

G4double G4MonopolePhysics::fElCharge
private

Definition at line 72 of file G4MonopolePhysics.hh.

◆ fMagCharge

G4double G4MonopolePhysics::fMagCharge
private

Definition at line 71 of file G4MonopolePhysics.hh.

◆ fMessenger

G4MonopolePhysicsMessenger* G4MonopolePhysics::fMessenger
private

Definition at line 75 of file G4MonopolePhysics.hh.

◆ fMonopoleMass

G4double G4MonopolePhysics::fMonopoleMass
private

Definition at line 73 of file G4MonopolePhysics.hh.

◆ fMpl

G4Monopole* G4MonopolePhysics::fMpl
private

Definition at line 76 of file G4MonopolePhysics.hh.


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