Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions
G4MonopolePhysics Class Reference

#include <G4MonopolePhysics.hh>

Inheritance diagram for G4MonopolePhysics:
G4VPhysicsConstructor

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)
 
- 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.

References bUnknown, python.hepunit::GeV, and G4VPhysicsConstructor::SetPhysicsType().

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 &="")
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.

References G4Monopole::MonopoleDefinition().

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
void G4MonopolePhysics::ConstructProcess ( void  )
virtual

Implements G4VPhysicsConstructor.

Definition at line 99 of file G4MonopolePhysics.cc.

References G4ProcessManager::AddProcess(), G4cout, G4endl, G4lrint(), G4ParticleDefinition::GetPDGCharge(), G4PhysicsListHelper::GetPhysicsListHelper(), G4ParticleDefinition::GetProcessManager(), python.hepunit::keV, G4Monopole::MagneticCharge(), G4INCL::Math::max(), G4PhysicsListHelper::RegisterProcess(), G4ProcessManager::RemoveProcess(), G4VEnergyLossProcess::SetDEDXBinning(), G4VEnergyLossProcess::SetMaxKinEnergy(), G4VEnergyLossProcess::SetMinKinEnergy(), python.hepunit::TeV, and G4VPhysicsConstructor::verboseLevel.

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
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)
int G4lrint(double ad)
Definition: templates.hh:163
T max(const T t1, const T t2)
brief Return the largest of the two arguments
static G4PhysicsListHelper * GetPhysicsListHelper()
#define G4endl
Definition: G4ios.hh:61
double G4double
Definition: G4Types.hh:76
G4double GetPDGCharge() const
G4VProcess * RemoveProcess(G4VProcess *aProcess)
void SetDEDXBinning(G4int nbins)
void SetMinKinEnergy(G4double e)
void G4MonopolePhysics::SetElectricCharge ( G4double  val)

Definition at line 148 of file G4MonopolePhysics.cc.

Referenced by G4MonopolePhysicsMessenger::SetNewValue().

149 {
150  fElCharge = val;
151 }
void G4MonopolePhysics::SetMagneticCharge ( G4double  val)

Definition at line 141 of file G4MonopolePhysics.cc.

Referenced by G4MonopolePhysicsMessenger::SetNewValue().

142 {
143  fMagCharge = val;
144 }
void G4MonopolePhysics::SetMonopoleMass ( G4double  mass)

Definition at line 155 of file G4MonopolePhysics.cc.

Referenced by G4MonopolePhysicsMessenger::SetNewValue().

156 {
157  fMonopoleMass = mass;
158 }

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