G4PersistencyCenterMessenger Class Reference

#include <G4PersistencyCenterMessenger.hh>

Inheritance diagram for G4PersistencyCenterMessenger:

G4UImessenger

Public Member Functions

 G4PersistencyCenterMessenger (G4PersistencyCenter *p)
 ~G4PersistencyCenterMessenger ()
void SetNewValue (G4UIcommand *command, G4String newValues)
G4String GetCurrentValue (G4UIcommand *command)

Detailed Description

Definition at line 47 of file G4PersistencyCenterMessenger.hh.


Constructor & Destructor Documentation

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 }


Member Function Documentation

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 }


The documentation for this class was generated from the following files:
Generated on Mon May 27 17:52:53 2013 for Geant4 by  doxygen 1.4.7