Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4ProductionCutsTableMessenger.cc
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//
26// G4ProductionCutsTableMessenger class implementation
27//
28// Author: H.Kurashige, 02 March 2008 - First version
29// --------------------------------------------------------------------
30
33
34#include "G4UIdirectory.hh"
38#include "G4UIcmdWithAString.hh"
39#include "G4ios.hh"
40#include "G4Tokenizer.hh"
41
42#include <sstream>
43
44// --------------------------------------------------------------------
45G4ProductionCutsTableMessenger::
46G4ProductionCutsTableMessenger(G4ProductionCutsTable* pTable)
47 : theCutsTable(pTable)
48{
49 // /cuts/ directory
50 theDirectory = new G4UIdirectory("/cuts/");
51 theDirectory->SetGuidance("Commands for G4VUserPhysicsList.");
52
53 // /cuts/verbose command
54 verboseCmd = new G4UIcmdWithAnInteger("/cuts/verbose",this);
55 verboseCmd->SetGuidance("Set the Verbose level of G4ProductionCutsTable.");
56 verboseCmd->SetGuidance(" 0 : Silent (default)");
57 verboseCmd->SetGuidance(" 1 : Display warning messages");
58 verboseCmd->SetGuidance(" 2 : Display more info");
59 verboseCmd->SetGuidance(" 2 : Display debug info");
60 verboseCmd->SetParameterName("level",true);
61 verboseCmd->SetDefaultValue(0);
62 verboseCmd->SetRange("level >=0 && level <=3");
63
64 // /cuts/setLowEdge command
65 setLowEdgeCmd = new G4UIcmdWithADoubleAndUnit("/cuts/setLowEdge",this);
66 setLowEdgeCmd->SetGuidance("Set low edge energy value ");
67 setLowEdgeCmd->SetParameterName("edge",false);
68 setLowEdgeCmd->SetDefaultValue(0.99);
69 setLowEdgeCmd->SetRange("edge >0.0");
70 setLowEdgeCmd->SetDefaultUnit("keV");
71 setLowEdgeCmd->AvailableForStates(G4State_PreInit);
72
73 // /cuts/setHighEdge command
74 setHighEdgeCmd = new G4UIcmdWithADoubleAndUnit("/cuts/setHighEdge",this);
75 setHighEdgeCmd->SetGuidance("Set high edge energy value ");
76 setHighEdgeCmd->SetParameterName("edge",false);
77 setHighEdgeCmd->SetDefaultValue(100.0);
78 setHighEdgeCmd->SetRange("edge >0.0");
79 setHighEdgeCmd->SetDefaultUnit("TeV");
80 setHighEdgeCmd->AvailableForStates(G4State_PreInit);
81
82 // /cuts/setMaxCutEnergy command
83 setMaxEnergyCutCmd = new G4UIcmdWithADoubleAndUnit("/cuts/setMaxCutEnergy",this);
84 setMaxEnergyCutCmd->SetGuidance("Set maximum of cut energy value ");
85 setMaxEnergyCutCmd->SetParameterName("cut",false);
86 setMaxEnergyCutCmd->SetDefaultValue(10.0);
87 setMaxEnergyCutCmd->SetRange("cut >0.0");
88 setMaxEnergyCutCmd->SetDefaultUnit("GeV");
89 setMaxEnergyCutCmd->AvailableForStates(G4State_PreInit);
90
91 // /cuts/dump command
92 dumpCmd = new G4UIcmdWithoutParameter("/cuts/dump",this);
93 dumpCmd->SetGuidance("Dump couples in G4ProductionCutsTable. ");
94}
95
96// --------------------------------------------------------------------
98{
99 delete dumpCmd;
100 delete setMaxEnergyCutCmd;
101 delete setHighEdgeCmd;
102 delete setLowEdgeCmd;
103 delete verboseCmd;
104 delete theDirectory;
105}
106
107// --------------------------------------------------------------------
109 G4String newValue)
110{
111 if( command==verboseCmd )
112 {
113 theCutsTable->SetVerboseLevel(verboseCmd->GetNewIntValue(newValue));
114 }
115 else if( command==dumpCmd )
116 {
117 theCutsTable-> DumpCouples();
118 }
119 else if( command==setLowEdgeCmd )
120 {
121 G4double lowEdge = setLowEdgeCmd->GetNewDoubleValue(newValue);
123 theCutsTable->SetEnergyRange(lowEdge, highEdge);
124 }
125 else if( command==setHighEdgeCmd )
126 {
127 G4double highEdge = setHighEdgeCmd->GetNewDoubleValue(newValue);
129 theCutsTable->SetEnergyRange(lowEdge, highEdge);
130 }
131 else if( command==setMaxEnergyCutCmd )
132 {
133 G4double cut = setHighEdgeCmd->GetNewDoubleValue(newValue);
135 }
136}
137
138// --------------------------------------------------------------------
140{
141 G4String cv;
142
143 if( command==verboseCmd )
144 {
145 cv = verboseCmd->ConvertToString(theCutsTable->GetVerboseLevel());
146 }
147 else if( command==setLowEdgeCmd )
148 {
150 cv = setLowEdgeCmd->ConvertToString( lowEdge, "keV" );
151 }
152 else if( command==setHighEdgeCmd )
153 {
155 cv = setHighEdgeCmd->ConvertToString( highEdge, "TeV" );
156 }
157 else if( command==setMaxEnergyCutCmd )
158 {
160 cv = setMaxEnergyCutCmd->ConvertToString( cut, "GeV" );
161 }
162
163 return cv;
164}
@ G4State_PreInit
double G4double
Definition: G4Types.hh:83
virtual void SetNewValue(G4UIcommand *command, G4String newValues)
virtual G4String GetCurrentValue(G4UIcommand *command)
G4double GetLowEdgeEnergy() const
void SetMaxEnergyCut(G4double value)
void SetVerboseLevel(G4int value)
G4double GetHighEdgeEnergy() const
void SetEnergyRange(G4double lowedge, G4double highedge)
void SetDefaultUnit(const char *defUnit)
static G4double GetNewDoubleValue(const char *paramString)
void SetParameterName(const char *theName, G4bool omittable, G4bool currentAsDefault=false)
void SetParameterName(const char *theName, G4bool omittable, G4bool currentAsDefault=false)
static G4int GetNewIntValue(const char *paramString)
void SetDefaultValue(G4int defVal)
static G4String ConvertToString(G4bool boolVal)
Definition: G4UIcommand.cc:446
void SetGuidance(const char *aGuidance)
Definition: G4UIcommand.hh:157
void SetRange(const char *rs)
Definition: G4UIcommand.hh:121
void AvailableForStates(G4ApplicationState s1)
Definition: G4UIcommand.cc:287