Geant4  10.02.p03
G4MPImessenger Class Reference

#include <G4MPImessenger.hh>

Inheritance diagram for G4MPImessenger:
Collaboration diagram for G4MPImessenger:

Public Member Functions

 G4MPImessenger ()
 
 ~G4MPImessenger ()
 
virtual void SetNewValue (G4UIcommand *command, G4String newValue)
 
virtual G4String GetCurrentValue (G4UIcommand *command)
 
void SetTargetObject (G4MPImanager *mpi_manager)
 
- Public Member Functions inherited from G4UImessenger
 G4UImessenger ()
 
 G4UImessenger (const G4String &path, const G4String &dsc, G4bool commandsToBeBroadcasted=true)
 
virtual ~G4UImessenger ()
 
G4bool operator== (const G4UImessenger &messenger) const
 
G4bool CommandsShouldBeInMaster () const
 

Private Member Functions

 DISALLOW_COPY_AND_ASSIGN (G4MPImessenger)
 

Private Attributes

G4MPImanagerg4mpi_
 
G4UIdirectorydir_
 
G4UIcmdWithAnIntegerverbose_
 
G4UIcmdWithoutParameterstatus_
 
G4UIcmdWithAStringexecute_
 
G4UIcommandbeam_on_
 
G4UIcommanddot_beam_on_
 
G4UIcmdWithADoublemaster_weight_
 
G4UIcmdWithoutParametershow_seeds_
 
G4UIcmdWithAnIntegerset_master_seed_
 
G4UIcommandset_seed_
 

Additional Inherited Members

- Protected Member Functions inherited from G4UImessenger
G4String ItoS (G4int i)
 
G4String DtoS (G4double a)
 
G4String BtoS (G4bool b)
 
G4int StoI (G4String s)
 
G4double StoD (G4String s)
 
G4bool StoB (G4String s)
 
void AddUIcommand (G4UIcommand *newCommand)
 
void CreateDirectory (const G4String &path, const G4String &dsc, G4bool commandsToBeBroadcasted=true)
 
template<typename T >
T * CreateCommand (const G4String &cname, const G4String &dsc)
 
- Protected Attributes inherited from G4UImessenger
G4UIdirectorybaseDir
 
G4String baseDirName
 
G4bool commandsShouldBeInMaster
 

Detailed Description

Definition at line 45 of file G4MPImessenger.hh.

Constructor & Destructor Documentation

◆ G4MPImessenger()

G4MPImessenger::G4MPImessenger ( )

Definition at line 43 of file G4MPImessenger.cc.

44  : G4UImessenger()
45 {
46  // /mpi
47  dir_ = new G4UIdirectory("/mpi/");
48  dir_-> SetGuidance("MPI control commands");
49 
50  // /mpi/verbose
51  verbose_ = new G4UIcmdWithAnInteger("/mpi/verbose", this);
52  verbose_-> SetGuidance("Set verbose level.");
53  verbose_-> SetParameterName("verbose", false, false);
54  verbose_->SetRange("verbose>=0 && verbose<=1");
55 
56  // /mpi/status
57  status_ = new G4UIcmdWithoutParameter("/mpi/status", this);
58  status_-> SetGuidance( "Show mpi status.");
59 
60  // /mpi/execute
61  execute_ = new G4UIcmdWithAString("/mpi/execute", this);
62  execute_-> SetGuidance("Execute a macro file. (=/control/execute)");
63  execute_-> SetParameterName("fileName", false, false);
64 
65  // /mpi/beamOn
66  beam_on_ = new G4UIcommand("/mpi/beamOn", this);
67  beam_on_-> SetGuidance("Start a parallel run w/ thread.");
68 
69  G4UIparameter* p1= new G4UIparameter("numberOfEvent", 'i', true);
70  p1-> SetDefaultValue(1);
71  p1-> SetParameterRange("numberOfEvent>=0");
72  beam_on_-> SetParameter(p1);
73 
74  G4UIparameter* p2= new G4UIparameter("divide", 'b', true);
75  p2-> SetDefaultValue(true);
76  beam_on_-> SetParameter(p2);
77 
78  // /mpi/.beamOn
79  dot_beam_on_ = new G4UIcommand("/mpi/.beamOn", this);
80  dot_beam_on_-> SetGuidance("Start a parallel run w/o thread.");
81 
82  p1= new G4UIparameter("numberOfEvent", 'i', true);
83  p1-> SetDefaultValue(1);
84  p1-> SetParameterRange("numberOfEvent>=0");
85  dot_beam_on_-> SetParameter(p1);
86 
87  p2= new G4UIparameter("divide", 'b', true);
88  p2-> SetDefaultValue(true);
89  dot_beam_on_-> SetParameter(p2);
90 
91  // /mpi/weightForMaster
92  master_weight_ = new G4UIcmdWithADouble("/mpi/masterWeight", this);
93  master_weight_-> SetGuidance("Set weight for master node.");
94  master_weight_-> SetParameterName("weight", false, false);
95  master_weight_-> SetRange("weight>=0. && weight<=1.");
96 
97  // /mpi/showSeeds
98  show_seeds_ = new G4UIcmdWithoutParameter("/mpi/showSeeds", this);
99  show_seeds_-> SetGuidance("Show seeds of MPI nodes.");
100 
101  // /mpi/setMasterSeed
102  set_master_seed_ = new G4UIcmdWithAnInteger("/mpi/setMasterSeed", this);
103  set_master_seed_-> SetGuidance("Set a master seed for the seed generator.");
104  set_master_seed_-> SetParameterName("seed", false, false);
105 
106  // /mpi/setSeed
107  set_seed_ = new G4UIcommand("/mpi/setSeed", this);
108  set_seed_-> SetGuidance("Set a seed for a specified node.");
109 
110  p1 = new G4UIparameter("node", 'i', false);
111  p1-> SetParameterRange("node>=0");
112  set_seed_-> SetParameter(p1);
113 
114  p2 = new G4UIparameter("seed", 'i', false);
115  set_seed_-> SetParameter(p2);
116 }
G4UIcommand * dot_beam_on_
G4UIcmdWithAnInteger * set_master_seed_
G4UIcmdWithAString * execute_
G4UIcmdWithoutParameter * status_
G4UIcommand * set_seed_
void SetRange(const char *rs)
Definition: G4UIcommand.hh:125
G4UIcmdWithAnInteger * verbose_
G4UIcmdWithoutParameter * show_seeds_
G4UIdirectory * dir_
G4UIcommand * beam_on_
G4UIcmdWithADouble * master_weight_
Here is the call graph for this function:

◆ ~G4MPImessenger()

G4MPImessenger::~G4MPImessenger ( )

Definition at line 119 of file G4MPImessenger.cc.

120 {
121  delete verbose_;
122  delete status_;
123  delete execute_;
124  delete beam_on_;
125  delete dot_beam_on_;
126  delete master_weight_;
127  delete show_seeds_;
128  delete set_master_seed_;
129  delete set_seed_;
130 
131  delete dir_;
132 }
G4UIcommand * dot_beam_on_
G4UIcmdWithAnInteger * set_master_seed_
G4UIcmdWithAString * execute_
G4UIcmdWithoutParameter * status_
G4UIcommand * set_seed_
G4UIcmdWithAnInteger * verbose_
G4UIcmdWithoutParameter * show_seeds_
G4UIdirectory * dir_
G4UIcommand * beam_on_
G4UIcmdWithADouble * master_weight_

Member Function Documentation

◆ DISALLOW_COPY_AND_ASSIGN()

G4MPImessenger::DISALLOW_COPY_AND_ASSIGN ( G4MPImessenger  )
private

◆ GetCurrentValue()

G4String G4MPImessenger::GetCurrentValue ( G4UIcommand command)
virtual

Reimplemented from G4UImessenger.

Definition at line 188 of file G4MPImessenger.cc.

189 {
190  G4String cv;
191 
192  if ( command == verbose_ ) {
193  cv = verbose_-> ConvertToString(g4mpi_->GetVerbose());
194  } else if ( command == master_weight_ ) {
195  cv= master_weight_-> ConvertToString(g4mpi_->GetMasterWeight());
196  }
197 
198  return cv;
199 }
G4int GetVerbose() const
G4double GetMasterWeight() const
G4MPImanager * g4mpi_
G4UIcmdWithAnInteger * verbose_
G4UIcmdWithADouble * master_weight_
Here is the call graph for this function:

◆ SetNewValue()

void G4MPImessenger::SetNewValue ( G4UIcommand command,
G4String  newValue 
)
virtual

Reimplemented from G4UImessenger.

Definition at line 135 of file G4MPImessenger.cc.

136 {
137  if ( command == verbose_ ) { // /mpi/verbose
138  G4int lv = verbose_-> GetNewIntValue(newValue);
139  g4mpi_-> SetVerbose(lv);
140 
141  } else if ( command == status_ ) { // /mpi/status
142  g4mpi_-> ShowStatus();
143 
144  } else if ( command == execute_ ) { // /mpi/execute
146  g4mpi_-> ExecuteMacroFile(UI-> FindMacroPath(newValue));
147 
148  } else if ( command == beam_on_ ) { // /mpi/beamOn
149  std::istringstream is(newValue);
150  G4int nevent;
151  G4bool qdivide;
152  is >> nevent >> qdivide;
153  g4mpi_-> BeamOn(nevent, qdivide);
154 
155  } else if ( command == dot_beam_on_ ) { // /mpi/.beamOn
156  std::istringstream is(newValue);
157  G4int nevent;
158  G4bool qdivide;
159  is >> nevent >> qdivide;
160  g4mpi_-> BeamOn(nevent, qdivide);
161 
162  } else if ( command == master_weight_ ) { // /mpi/masterWeight
163  G4double weight= master_weight_-> GetNewDoubleValue(newValue);
164  g4mpi_-> SetMasterWeight(weight);
165 
166  } else if ( command == show_seeds_ ) { // /mpi/showSeeds
167  g4mpi_-> ShowSeeds();
168 
169  } else if ( command == set_master_seed_ ) { // /mpi/setMasterSeed
170  std::istringstream is(newValue);
171  G4long seed;
172  is >> seed;
173  g4mpi_-> GetSeedGenerator()-> SetMasterSeed(seed);
174  g4mpi_-> DistributeSeeds();
175 
176  } else if ( command == set_seed_ ) { // /mpi/setSeed
177  std::istringstream is(newValue);
178  G4int inode;
179  G4long seed;
180  is >> inode >> seed;
181  g4mpi_-> SetSeed(inode, seed);
182  }
183 
184  return;
185 }
G4UIcommand * dot_beam_on_
G4UIcmdWithAnInteger * set_master_seed_
long G4long
Definition: G4Types.hh:80
G4MPImanager * g4mpi_
G4UIcmdWithAString * execute_
double weight
Definition: plottest35.C:25
G4UIcmdWithoutParameter * status_
int G4int
Definition: G4Types.hh:78
static G4UImanager * GetUIpointer()
Definition: G4UImanager.cc:58
G4UIcommand * set_seed_
bool G4bool
Definition: G4Types.hh:79
G4UIcmdWithAnInteger * verbose_
G4UIcmdWithoutParameter * show_seeds_
double G4double
Definition: G4Types.hh:76
G4UIcommand * beam_on_
G4UIcmdWithADouble * master_weight_
Int_t nevent
Here is the call graph for this function:

◆ SetTargetObject()

void G4MPImessenger::SetTargetObject ( G4MPImanager mpi_manager)
inline

Definition at line 78 of file G4MPImessenger.hh.

79 {
80  g4mpi_ = mpi_manager;
81 }
G4MPImanager * g4mpi_

Member Data Documentation

◆ beam_on_

G4UIcommand* G4MPImessenger::beam_on_
private

Definition at line 68 of file G4MPImessenger.hh.

◆ dir_

G4UIdirectory* G4MPImessenger::dir_
private

Definition at line 61 of file G4MPImessenger.hh.

◆ dot_beam_on_

G4UIcommand* G4MPImessenger::dot_beam_on_
private

Definition at line 69 of file G4MPImessenger.hh.

◆ execute_

G4UIcmdWithAString* G4MPImessenger::execute_
private

Definition at line 66 of file G4MPImessenger.hh.

◆ g4mpi_

G4MPImanager* G4MPImessenger::g4mpi_
private

Definition at line 58 of file G4MPImessenger.hh.

◆ master_weight_

G4UIcmdWithADouble* G4MPImessenger::master_weight_
private

Definition at line 70 of file G4MPImessenger.hh.

◆ set_master_seed_

G4UIcmdWithAnInteger* G4MPImessenger::set_master_seed_
private

Definition at line 73 of file G4MPImessenger.hh.

◆ set_seed_

G4UIcommand* G4MPImessenger::set_seed_
private

Definition at line 74 of file G4MPImessenger.hh.

◆ show_seeds_

G4UIcmdWithoutParameter* G4MPImessenger::show_seeds_
private

Definition at line 72 of file G4MPImessenger.hh.

◆ status_

G4UIcmdWithoutParameter* G4MPImessenger::status_
private

Definition at line 64 of file G4MPImessenger.hh.

◆ verbose_

G4UIcmdWithAnInteger* G4MPImessenger::verbose_
private

Definition at line 63 of file G4MPImessenger.hh.


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