#include <G4PersistencyCenterMessenger.hh>
Inheritance diagram for G4PersistencyCenterMessenger:
Public Member Functions | |
G4PersistencyCenterMessenger (G4PersistencyCenter *p) | |
~G4PersistencyCenterMessenger () | |
void | SetNewValue (G4UIcommand *command, G4String newValues) |
G4String | GetCurrentValue (G4UIcommand *command) |
Definition at line 47 of file G4PersistencyCenterMessenger.hh.
G4PersistencyCenterMessenger::G4PersistencyCenterMessenger | ( | G4PersistencyCenter * | p | ) |
Definition at line 34 of file G4PersistencyCenterMessenger.cc.
References G4UIcmdWithAString::SetCandidates(), G4UIcmdWithAnInteger::SetDefaultValue(), G4UIcommand::SetGuidance(), G4UIcmdWithAString::SetParameterName(), G4UIcmdWithAnInteger::SetParameterName(), and G4UIcommand::SetRange().
00035 : pc(p) 00036 { 00037 std::string name = "/persistency/"; 00038 directory=new G4UIdirectory(name.c_str()); 00039 directory->SetGuidance("Control commands for Persistency package"); 00040 00041 std::string cmd = name + "verbose"; 00042 00043 verboseCmd = new G4UIcmdWithAnInteger(cmd.c_str(),this); 00044 verboseCmd->SetGuidance("Set the verbose level of G4PersistencyManager."); 00045 verboseCmd->SetGuidance(" 0 : Silent (default)"); 00046 verboseCmd->SetGuidance(" 1 : Display main topics"); 00047 verboseCmd->SetGuidance(" 2 : Display event-level topics"); 00048 verboseCmd->SetGuidance(" 3 : Display debug information"); 00049 verboseCmd->SetParameterName("level",true); 00050 verboseCmd->SetDefaultValue(0); 00051 verboseCmd->SetRange("level >=0 && level <=3"); 00052 00053 std::string vname = name + "select"; 00054 00055 cmd = vname; 00056 select = new G4UIcmdWithAString(cmd.c_str(),this); 00057 select->SetGuidance("Selection of a persistency package"); 00058 select->SetParameterName("Persistency package name", true, true); 00059 select->SetCandidates("ODBMS ROOT None"); 00060 00061 vname = name + "store/"; 00062 00063 subdir1 = new G4UIdirectory(vname.c_str()); 00064 subdir1->SetGuidance("Specifiy object types for store"); 00065 00066 wrObj.push_back("HepMC"); 00067 wrObj.push_back("MCTruth"); 00068 wrObj.push_back("Hits"); 00069 00070 std::string guidance; 00071 int i; 00072 00073 for ( i = 0; i < 3; i++ ) 00074 { 00075 cmd = vname + wrObj[i]; 00076 guidance = "Store " + wrObj[i] + " objects for output"; 00077 storeObj.push_back(new G4UIcmdWithAString(cmd.c_str(),this)); 00078 storeObj[i]->SetGuidance(guidance.c_str()); 00079 if ( wrObj[i] == "HepMC" ) { 00080 storeObj[i]->SetCandidates("on off recycle"); 00081 } else { 00082 storeObj[i]->SetCandidates("on off"); 00083 } 00084 } 00085 00086 vname += "using/"; 00087 subdir2 = new G4UIdirectory(vname.c_str()); 00088 subdir2->SetGuidance("Select I/O manager for store"); 00089 00090 cmd = vname + "hitIO"; 00091 regHitIO = new G4UIcmdWithAString(cmd.c_str(),this); 00092 regHitIO->SetGuidance("Resiter Hits I/O Manager"); 00093 regHitIO->SetParameterName("Name of Hits I/O Manager", true, true); 00094 00095 vname = name + "set/"; 00096 subdir3 = new G4UIdirectory(vname.c_str()); 00097 subdir3->SetGuidance("Set various parameters"); 00098 00099 vname += "writeFile/"; 00100 subdir4 = new G4UIdirectory(vname.c_str()); 00101 subdir4->SetGuidance("Set output file names for object types"); 00102 00103 for ( i = 0; i < 3; i++ ) 00104 { 00105 cmd = vname + wrObj[i]; 00106 guidance = "Set an output file name for " + wrObj[i] + "."; 00107 setWrFile.push_back(new G4UIcmdWithAString(cmd.c_str(),this)); 00108 setWrFile[i]->SetGuidance(guidance.c_str()); 00109 setWrFile[i]->SetParameterName("file name", true, true); 00110 } 00111 00112 vname = name + "set/ReadFile/"; 00113 subdir5 = new G4UIdirectory(vname.c_str()); 00114 subdir5->SetGuidance("Set input file names for object types"); 00115 00116 rdObj.push_back("Hits"); 00117 00118 cmd = vname + rdObj[0]; 00119 guidance = "Set an input file name for " + rdObj[0] + "."; 00120 setRdFile.push_back(new G4UIcmdWithAString(cmd.c_str(),this)); 00121 setRdFile[0]->SetGuidance(guidance.c_str()); 00122 setRdFile[0]->SetParameterName("file name", true, true); 00123 00124 cmd = name + "printall"; 00125 printAll = new G4UIcmdWithoutParameter(cmd.c_str(),this); 00126 printAll->SetGuidance("Print all parameters."); 00127 00128 }
G4PersistencyCenterMessenger::~G4PersistencyCenterMessenger | ( | ) |
Definition at line 131 of file G4PersistencyCenterMessenger.cc.
00132 { 00133 delete directory; 00134 delete subdir1; 00135 delete subdir2; 00136 delete subdir3; 00137 delete subdir4; 00138 delete subdir5; 00139 delete verboseCmd; 00140 delete select; 00141 delete regHitIO; 00142 for ( int i = 0; i < 3; i++ ) 00143 { 00144 delete storeObj[i]; 00145 delete setWrFile[i]; 00146 } 00147 delete setRdFile[0]; 00148 delete printAll; 00149 }
G4String G4PersistencyCenterMessenger::GetCurrentValue | ( | G4UIcommand * | command | ) | [virtual] |
Reimplemented from G4UImessenger.
Definition at line 203 of file G4PersistencyCenterMessenger.cc.
References G4PersistencyCenter::CurrentHCIOmanager(), G4PersistencyCenter::CurrentReadFile(), G4PersistencyCenter::CurrentStoreMode(), G4PersistencyCenter::CurrentSystem(), G4PersistencyCenter::CurrentWriteFile(), kOff, kOn, kRecycle, and G4PersistencyCenter::VerboseLevel().
00204 { 00205 G4String ustr="Undefined"; 00206 00207 if (command==select) 00208 { 00209 return pc->VerboseLevel(); 00210 } 00211 else if (command==select) 00212 { 00213 return pc->CurrentSystem(); 00214 } 00215 else if (command==regHitIO) 00216 { 00217 return pc->CurrentHCIOmanager(); 00218 } 00219 else if (command==setRdFile[0]) 00220 { 00221 return pc->CurrentReadFile(rdObj[0]); 00222 } 00223 else 00224 { 00225 for( int i=0; i<3; i++ ) { 00226 if( command==storeObj[i] ) 00227 { 00228 switch (pc->CurrentStoreMode(wrObj[i])) { 00229 case kOn: 00230 return "on"; 00231 break; 00232 case kOff: 00233 return "off"; 00234 break; 00235 case kRecycle: 00236 return "recycle"; 00237 break; 00238 default: 00239 return "?????"; 00240 break; 00241 }; 00242 } 00243 else if( command==setWrFile[i] ) 00244 { 00245 return pc->CurrentWriteFile(wrObj[i]); 00246 } 00247 } 00248 } 00249 00250 return ustr; 00251 }
void G4PersistencyCenterMessenger::SetNewValue | ( | G4UIcommand * | command, | |
G4String | newValues | |||
) | [virtual] |
Reimplemented from G4UImessenger.
Definition at line 152 of file G4PersistencyCenterMessenger.cc.
References G4PersistencyCenter::AddHCIOmanager(), G4cerr, G4endl, G4UIcmdWithAnInteger::GetNewIntValue(), kOff, kOn, kRecycle, G4PersistencyCenter::PrintAll(), G4PersistencyCenter::SelectSystem(), G4PersistencyCenter::SetStoreMode(), G4PersistencyCenter::SetVerboseLevel(), and G4PersistencyCenter::SetWriteFile().
00153 { 00154 if (command==verboseCmd) 00155 { 00156 pc->SetVerboseLevel(verboseCmd->GetNewIntValue(newValues)); 00157 } 00158 else if (command==select) 00159 { 00160 pc->SelectSystem(newValues); 00161 } 00162 else if (command==regHitIO) 00163 { 00164 pc->AddHCIOmanager(PopWord(newValues,1," "),PopWord(newValues,2," ")); 00165 } 00166 else if (command==setRdFile[0]) 00167 { 00168 pc -> SetReadFile ( rdObj[0],newValues); 00169 } 00170 else if (command==printAll) 00171 { 00172 pc->PrintAll(); 00173 } 00174 else 00175 { 00176 for( int i=0; i<3; i++ ) { 00177 if( command==storeObj[i] ) 00178 { 00179 StoreMode mode = kOff; 00180 if( newValues == "on" ) { 00181 mode = kOn; 00182 } else if ( newValues == "off" ) { 00183 mode = kOff; 00184 } else if ( newValues == "recycle" ) { 00185 mode = kRecycle; 00186 } else { 00187 G4cerr << "Unrecognized keyword - \"" << newValues << "\"." 00188 << G4endl; 00189 } 00190 pc->SetStoreMode(wrObj[i],mode); 00191 break; 00192 } 00193 else if( command==setWrFile[i] ) 00194 { 00195 pc->SetWriteFile(wrObj[i],newValues); 00196 break; 00197 } 00198 } 00199 } 00200 }