LcioMcpMessenger.cc

Go to the documentation of this file.
00001 // $Header: /cvs/lcd/slic/src/LcioMcpMessenger.cc,v 1.11 2007/04/27 01:54:35 jeremy Exp $
00002 #include "LcioMcpMessenger.hh"
00003 
00004 // slic
00005 #include "LcioManager.hh"
00006 #include "LcioMcpManager.hh"
00007 #include "TrajectoryManager.hh"
00008 #include "StringUtil.hh"
00009 
00010 // geant4
00011 #include "G4UIparameter.hh"
00012 
00013 namespace slic
00014 {
00015 
00016   LcioMcpMessenger::LcioMcpMessenger()
00017   {
00018     defineCommands();
00019   }
00020 
00021   LcioMcpMessenger::~LcioMcpMessenger()
00022   {}
00023 
00024   void LcioMcpMessenger::SetNewValue(G4UIcommand* cmd, G4String newVals)
00025   {
00026     std::istringstream is ( ( const char* ) newVals );
00027     std::string s;
00028     is >> s;
00029 
00030     LcioMcpManager* mgr = LcioMcpManager::instance();
00031 
00032     // set minimum tracking distance
00033     if ( cmd == m_minTrackingDistanceCmd ) {
00034       mgr->setMinimumTrackingDistance( m_minTrackingDistanceCmd->GetNewDoubleValue( newVals ) );
00035     }
00036     else if ( cmd == m_printFinalCollection ) {
00037       mgr->enablePrintFinal( m_printFinalCollection->GetNewBoolValue( newVals.c_str() ) );
00038     }
00039     else if ( cmd == m_printInitialCollection ) {
00040       mgr->enablePrintInitial( m_printInitialCollection->GetNewBoolValue( newVals.c_str() ) );
00041     }
00042     // Enable writing of initial MCParticle collection to event.
00043     else if ( cmd == m_writeInitialCollection ) {
00044       mgr->setWriteInitialMCParticleCollection( m_writeInitialCollection->GetNewBoolValue(newVals.c_str() ) );
00045     }
00046     else {
00047       G4Exception( "LcioMessenger::setNewValue() - unknown command" );
00048     }
00049 
00050     return;
00051   }
00052 
00053   void LcioMcpMessenger::defineCommands()
00054   {
00055     // Mcp dir
00056     m_mcpDir = new G4UIdirectory( "/mcp/" );
00057     m_mcpDir->SetGuidance( "LCIO Monte Carlo Particle commands. [SLIC]" );
00058 
00059     // minimumTrackingDistance
00060     m_minTrackingDistanceCmd = new G4UIcmdWithADoubleAndUnit( "/mcp/minimumTrackingDistance", this );
00061     m_minTrackingDistanceCmd->SetGuidance( "Set the minimum travel distance for an input particle to be tracked in Geant4." );
00062     m_minTrackingDistanceCmd->SetParameterName("minimumTrackingDistance", false, true);
00063     m_minTrackingDistanceCmd->SetDefaultUnit("mm");
00064     m_minTrackingDistanceCmd->SetDefaultValue(0.1);
00065     m_minTrackingDistanceCmd->SetRange("minimumTrackingDistance > 0.");
00066 
00067     // Enable printing of MCParticle collections during the event. 
00068     m_printInitialCollection = new G4UIcmdWithABool( "/mcp/printInitialCollection", this );
00069     m_printInitialCollection->SetGuidance( "Enable printing of the initial MCParticle collection during event processing." );
00070     m_printInitialCollection->SetParameterName("enable", true);
00071     m_printInitialCollection->SetDefaultValue(true);
00072 
00073     // Enable printing of MCParticle collections during the event. 
00074     m_printFinalCollection = new G4UIcmdWithABool( "/mcp/printFinalCollection", this );
00075     m_printFinalCollection->SetGuidance( "Enable printing of the final MCParticle collection during event processing." );
00076     m_printFinalCollection->SetParameterName("enable", true);
00077     m_printFinalCollection->SetDefaultValue(true);
00078 
00079     m_writeInitialCollection = new G4UIcmdWithABool( "/mcp/writeInitialCollection", this );
00080     m_writeInitialCollection->SetGuidance( "Write the initial MCParticle collection from StdHep conversion to the LCEvent." );
00081     m_writeInitialCollection->SetParameterName( "enable", true );
00082     m_writeInitialCollection->SetDefaultValue(false);
00083   }
00084 }

Generated on Thu Nov 15 15:24:16 2007 for Simulator for the Linear Collider by  doxygen 1.5.4