Geant4  10.03.p03
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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
 

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::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;
79  fMessenger = new G4MonopolePhysicsMessenger(this);
81 }
G4VPhysicsConstructor(const G4String &="")
static constexpr double GeV
Definition: G4SIunits.hh:217

Here is the call graph for this function:

G4MonopolePhysics::~G4MonopolePhysics ( )

Definition at line 85 of file G4MonopolePhysics.cc.

86 {
87  delete fMessenger;
88 }

Member Function Documentation

void G4MonopolePhysics::ConstructParticle ( void  )
virtual

Implements G4VPhysicsConstructor.

Definition at line 92 of file G4MonopolePhysics.cc.

93 {
94  fMpl = G4Monopole::MonopoleDefinition(fMonopoleMass, fMagCharge, fElCharge);
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:

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 }
int G4int
Definition: G4Types.hh:78
static constexpr double TeV
Definition: G4SIunits.hh:218
G4GLOB_DLL std::ostream G4cout
G4double MagneticCharge() const
Definition: G4Monopole.cc:125
G4bool RegisterProcess(G4VProcess *process, G4ParticleDefinition *particle)
G4int AddProcess(G4VProcess *aProcess, G4int ordAtRestDoIt=ordInActive, G4int ordAlongSteptDoIt=ordInActive, G4int ordPostStepDoIt=ordInActive)
void SetMaxKinEnergy(G4double e)
static const G4double emax
int G4lrint(double ad)
Definition: templates.hh:163
T max(const T t1, const T t2)
brief Return the largest of the two arguments
G4ProcessManager * GetProcessManager() const
static G4PhysicsListHelper * GetPhysicsListHelper()
#define G4endl
Definition: G4ios.hh:61
double G4double
Definition: G4Types.hh:76
G4double GetPDGCharge() const
static constexpr double keV
Definition: G4SIunits.hh:216
G4VProcess * RemoveProcess(G4VProcess *aProcess)
void SetDEDXBinning(G4int nbins)
void SetMinKinEnergy(G4double e)

Here is the call graph for this function:

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:

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:

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:


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