Geant4 VMC
Version 6.8
Toggle main menu visibility
Loading...
Searching...
No Matches
source
physics_monopole
src
G4MonopolePhysicsMessenger.cxx
Go to the documentation of this file.
1
//
2
// ********************************************************************
3
// * License and Disclaimer *
4
// * *
5
// * The Geant4 software is copyright of the Copyright Holders of *
6
// * the Geant4 Collaboration. It is provided under the terms and *
7
// * conditions of the Geant4 Software License, included in the file *
8
// * LICENSE and available at http://cern.ch/geant4/license . These *
9
// * include a list of copyright holders. *
10
// * *
11
// * Neither the authors of this software system, nor their employing *
12
// * institutes,nor the agencies providing financial support for this *
13
// * work make any representation or warranty, express or implied, *
14
// * regarding this software system or assume any liability for its *
15
// * use. Please see the license in the file LICENSE and URL above *
16
// * for the full disclaimer and the limitation of liability. *
17
// * *
18
// * This code implementation is the result of the scientific and *
19
// * technical work of the GEANT4 collaboration. *
20
// * By using, copying, modifying or distributing the software (or *
21
// * any work based on the software) you agree to acknowledge its *
22
// * use in resulting scientific publications, and indicate your *
23
// * acceptance of all terms of the Geant4 Software license. *
24
// ********************************************************************
25
//
28
//
29
// $Id: G4MonopolePhysicsMessenger.cc 107526 2017-11-21 07:17:43Z gcosmo $
30
//
31
// 12.07.10 S.Burdin (changed the magnetic and electric charge variables
32
// from integer to double)
33
//
34
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
35
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
36
37
#include "
G4MonopolePhysicsMessenger.hh
"
38
39
#include "
G4MonopolePhysics.hh
"
40
#include "G4UIcmdWithADouble.hh"
41
#include "G4UIcmdWithADoubleAndUnit.hh"
42
#include "G4UIcommand.hh"
43
#include "G4UIdirectory.hh"
44
45
#include <sstream>
46
47
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
48
49
G4MonopolePhysicsMessenger::G4MonopolePhysicsMessenger
(
G4MonopolePhysics
* p)
50
:
G4UImessenger
(),
fPhys
(p)
51
{
52
fPhysicsDir
=
new
G4UIdirectory(
"/monopole/"
);
53
fPhysicsDir
->SetGuidance(
"histograms control"
);
54
55
fPhysicsCmd
=
new
G4UIcommand
(
"/monopole/setup"
,
this
);
56
fPhysicsCmd
->SetGuidance(
"Setup monopole"
);
57
//
58
G4UIparameter* qmag =
new
G4UIparameter(
"qmag"
,
'd'
,
false
);
59
qmag->SetGuidance(
"Magnetic charge"
);
60
qmag->SetDefaultValue(
"1"
);
61
fPhysicsCmd
->SetParameter(qmag);
62
63
G4UIparameter* q =
new
G4UIparameter(
"qelec"
,
'd'
,
false
);
64
q->SetGuidance(
"Electric charge charge"
);
65
q->SetDefaultValue(
"0"
);
66
fPhysicsCmd
->SetParameter(q);
67
//
68
G4UIparameter* mass =
new
G4UIparameter(
"mass"
,
'd'
,
false
);
69
mass->SetGuidance(
"mass"
);
70
mass->SetParameterRange(
"mass>0."
);
71
qmag->SetDefaultValue(
"100"
);
72
fPhysicsCmd
->SetParameter(mass);
73
//
74
G4UIparameter* unit =
new
G4UIparameter(
"unit"
,
's'
,
false
);
75
fPhysicsCmd
->SetParameter(unit);
76
qmag->SetDefaultValue(
"GeV"
);
77
fPhysicsCmd
->AvailableForStates(G4State_PreInit);
78
79
fMCmd
=
new
G4UIcmdWithADouble(
"/monopole/magCharge"
,
this
);
80
fMCmd
->SetGuidance(
"Set monopole magnetic charge number"
);
81
fMCmd
->SetParameterName(
"Qmag"
,
false
);
82
fMCmd
->AvailableForStates(G4State_PreInit);
83
84
fZCmd
=
new
G4UIcmdWithADouble(
"/monopole/elCharge"
,
this
);
85
fZCmd
->SetGuidance(
"Set monopole electric charge number"
);
86
fZCmd
->SetParameterName(
"Qel"
,
false
);
87
fZCmd
->AvailableForStates(G4State_PreInit);
88
89
fMassCmd
=
new
G4UIcmdWithADoubleAndUnit(
"/monopole/Mass"
,
this
);
90
fMassCmd
->SetGuidance(
"Set monopole fMass"
);
91
fMassCmd
->SetParameterName(
"Mass"
,
false
);
92
fMassCmd
->SetRange(
"Mass>0."
);
93
fMassCmd
->SetUnitCategory(
"Energy"
);
94
fMassCmd
->AvailableForStates(G4State_PreInit);
95
}
96
97
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
98
99
G4MonopolePhysicsMessenger::~G4MonopolePhysicsMessenger
()
100
{
101
delete
fPhysicsCmd
;
102
delete
fMCmd
;
103
delete
fZCmd
;
104
delete
fMassCmd
;
105
delete
fPhysicsDir
;
106
}
107
108
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
109
110
void
G4MonopolePhysicsMessenger::SetNewValue
(
111
G4UIcommand
* command, G4String newValue)
112
{
113
if
(command ==
fPhysicsCmd
) {
114
G4double q, m;
115
G4double mass;
116
G4String unts;
117
std::istringstream is(newValue);
118
is >> m >> q >> mass >> unts;
119
G4String unit = unts;
120
G4double vUnit = G4UIcommand::ValueOf(unit);
121
fPhys
->SetMagneticCharge(m);
122
fPhys
->SetElectricCharge(q);
123
fPhys
->SetMonopoleMass(mass * vUnit);
124
}
125
if
(command ==
fMCmd
) {
126
fPhys
->SetMagneticCharge(
fMCmd
->GetNewDoubleValue(newValue));
127
}
128
if
(command ==
fZCmd
) {
129
fPhys
->SetElectricCharge(
fZCmd
->GetNewDoubleValue(newValue));
130
}
131
if
(command ==
fMassCmd
) {
132
fPhys
->SetMonopoleMass(
fMassCmd
->GetNewDoubleValue(newValue));
133
}
134
}
135
136
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4MonopolePhysicsMessenger.hh
Definition of the G4MonopolePhysicsMessenger class.
G4MonopolePhysics.hh
Definition of the G4MonopolePhysics class.
G4MonopolePhysicsMessenger::fPhys
G4MonopolePhysics * fPhys
Definition
G4MonopolePhysicsMessenger.hh:59
G4MonopolePhysicsMessenger::fMCmd
G4UIcmdWithADouble * fMCmd
Definition
G4MonopolePhysicsMessenger.hh:63
G4MonopolePhysicsMessenger::fMassCmd
G4UIcmdWithADoubleAndUnit * fMassCmd
Definition
G4MonopolePhysicsMessenger.hh:65
G4MonopolePhysicsMessenger::SetNewValue
virtual void SetNewValue(G4UIcommand *, G4String)
Definition
G4MonopolePhysicsMessenger.cxx:110
G4MonopolePhysicsMessenger::fPhysicsDir
G4UIdirectory * fPhysicsDir
Definition
G4MonopolePhysicsMessenger.hh:61
G4MonopolePhysicsMessenger::fZCmd
G4UIcmdWithADouble * fZCmd
Definition
G4MonopolePhysicsMessenger.hh:64
G4MonopolePhysicsMessenger::G4MonopolePhysicsMessenger
G4MonopolePhysicsMessenger(G4MonopolePhysics *)
Definition
G4MonopolePhysicsMessenger.cxx:49
G4MonopolePhysicsMessenger::~G4MonopolePhysicsMessenger
~G4MonopolePhysicsMessenger()
Definition
G4MonopolePhysicsMessenger.cxx:99
G4MonopolePhysicsMessenger::fPhysicsCmd
G4UIcommand * fPhysicsCmd
Definition
G4MonopolePhysicsMessenger.hh:62
G4MonopolePhysics
Definition
Doxymodules.h:52
G4UIcommand
G4UImessenger
Generated on
for Geant4 VMC by
1.17.0