Print

Print


Commit in slic on MAIN
include/LcioManager.hh+3-11.52 -> 1.53
src/LcioManager.cc+74-611.69 -> 1.70
   /RunAction.cc+9-91.18 -> 1.19
+86-71
3 modified files
JM: Do not crash if LCIO file exists.  Instead cancel current run and return to G4 prompt.

slic/include
LcioManager.hh 1.52 -> 1.53
diff -u -r1.52 -r1.53
--- LcioManager.hh	9 May 2006 01:13:57 -0000	1.52
+++ LcioManager.hh	4 Aug 2006 23:10:51 -0000	1.53
@@ -1,4 +1,4 @@
-// $Header: /cvs/lcd/slic/include/LcioManager.hh,v 1.52 2006/05/09 01:13:57 jeremy Exp $
+// $Header: /cvs/lcd/slic/include/LcioManager.hh,v 1.53 2006/08/04 23:10:51 jeremy Exp $
 #ifndef slic_LcioManager_hh
 #define slic_LcioManager_hh 1
 
@@ -90,6 +90,7 @@
     static EFileExistsAction getFileExistsActionFromString( const std::string& fea);
 
     void setRunNumber(RunNumberType rnt);
+    const int getRunNumber();
 
     // run actions
     void beginRun(const G4Run*);
@@ -237,6 +238,7 @@
     bool m_enableDumpEvent;
     bool m_writerIsOpen;
     bool m_usingAutoname;
+    bool m_abortCurrentRun;
   };
 }
 

slic/src
LcioManager.cc 1.69 -> 1.70
diff -u -r1.69 -r1.70
--- LcioManager.cc	27 Jun 2006 21:46:10 -0000	1.69
+++ LcioManager.cc	4 Aug 2006 23:10:51 -0000	1.70
@@ -1,4 +1,4 @@
-// $Header: /cvs/lcd/slic/src/LcioManager.cc,v 1.69 2006/06/27 21:46:10 jeremy Exp $
+// $Header: /cvs/lcd/slic/src/LcioManager.cc,v 1.70 2006/08/04 23:10:51 jeremy Exp $
 #include "LcioManager.hh"
 
 // slic
@@ -65,23 +65,25 @@
       m_writerIsOpen(false),
       m_usingAutoname(false)
   {
-    // messenger
+    // Initialize the Geant4 UI messenger for the LCIO.
     m_messenger = new LcioMessenger(this);
 
-    // generator
+    // Initialize the LCIO-based event generator.
     m_eventGenerator = new LcioPrimaryGenerator(this);
 
-    // Mcp manager instance
+    // Initialize the LCIO MCParticle manager.
     m_mcpManager = LcioMcpManager::instance();
 
-    // HC builder
+    // Initialize the LCIO HitsCollectionBuilder.
     m_HCBuilder = new LcioHitsCollectionBuilder();
 
-    // create LCWriter
+    // Create the LCIO writer.
     createWriter();
 
+    // Create the LCIO file namer.
     m_namer = new LcioFileNamer();
 
+    // Set the default output file name.
     m_filename = m_defaultFileName;
   }
 
@@ -116,24 +118,24 @@
 
   void LcioManager::openLcioFile()
   {
-    // get full output path with extension to check its existence
+    // Get full output path with extension to check its existence.
     string fullFilename = getFullOutputPath( true );
 
-    // default to writing a new file
+    // Default to writing a new file.
     int writeMode = LCIO::WRITE_NEW;
 
-    // file exists?
+    // File exists?
     if ( FileUtil::fileExists( fullFilename ) ) {
 
-      // failure mode is on so die
+      // Failure mode is on, so kill the current run.
       if ( m_fileExistsAction == eFail ) {
-	std::cerr << "LCIO file <" << fullFilename << "> already exists and FileExistsAction = fail." << std::endl;
-	G4Exception("LCIO file already exists.");
+	std::cerr << "ERROR: LCIO file <" << fullFilename << "> already exists and FileExistsAction is fail." << std::endl;
+	m_abortCurrentRun = true;
       }
-      // or try to delete it
+      // Deletion mode is on, so try to remove the current file.
       else if ( m_fileExistsAction == eDelete ) {
 	if ( FileUtil::removeFile( fullFilename ) != 0 ) {
-	  // could not remove it!
+	  // Fatal error.  File could not be removed.
 	  std::cerr << "Unable to delete old LCIO file <" << fullFilename << ">" << std::endl;
 	  G4Exception("Unable to delete old LCIO file.");
 	}
@@ -141,18 +143,18 @@
 	  std::cout << "Deleted old LCIO file <" << fullFilename << ">" << std::endl;
 	}
       }
-      // or append to it
+      // Append mod is on.
       else if ( m_fileExistsAction == eAppend ) {
 	std::cout << "Appending to existing LCIO file <" << fullFilename << ">" << std::endl;
 	writeMode = LCIO::WRITE_APPEND;
       }
     }
-    // create a new file
+    // Create a new file if doesn't exist.
     else {
       std::cout << "Creating new Lcio file <" << fullFilename << ">" << std::endl;
     }
 
-    // open the file using the writer with the full path and no extension
+    // Open the file using the writer with the full path.
     if( m_writer ) {
       m_writer->open( getFullOutputPath(), writeMode );
       m_writerIsOpen = true;
@@ -183,9 +185,6 @@
   {
     m_runNumber = rnt;
 
-    // set G4Run # start
-    G4RunManager::GetRunManager()->SetRunIDCounter( m_runNumber );
-
 #ifdef SLIC_VERBOSE
     if ( verbose() > 0 ) {
       std::cout << "Set starting run number <" << m_runNumber << ">" << std::endl;
@@ -232,40 +231,51 @@
 
   void LcioManager::beginRun(const G4Run* aRun)
   {
-    // create new LCRunHeader
-    createRunHeader( aRun );
+    // Reset the abort run flag.
+    m_abortCurrentRun = false;
 
-    /*
-     * Make autoname from stored fields.
-     * Needs to be delayed until this point
-     * so that run and event IDs are correct.
-     */
+    // Automatically create LCIO output file name if option was selected.
     if ( m_usingAutoname ) {
       makeAutoname();
     }
 
-    // open the Lcio output file for writing
+    // Set the G4Run counter.
+    G4RunManager::GetRunManager()->SetRunIDCounter(m_runNumber);
+
+    // Open the LCIO output file for writing.
     openLcioFile();
 
-    // write the run header
-    m_writer->writeRunHeader( m_runHdr );
+    // Run aborted, because LCIO output file already exists.
+    if (m_abortCurrentRun) {
+      G4RunManager::GetRunManager()->AbortRun();
+    }
+    // Setup the run header.
+    else {
+      // create new LCRunHeader
+      createRunHeader( aRun );
+
+      // write the run header
+      m_writer->writeRunHeader( m_runHdr );
 
-    // incr run number
-    ++m_runNumber;
+      // Incr run number.
+      ++m_runNumber;
+    }
   }
 
   void LcioManager::endRun()
   {
-    // delete the run header
+    // Delete the LCIO run header object.
     deleteRunHeader();
 
-    // close the writer to flush it (may reopen)
+    // Close the writer to flush it (could be reopened).
     m_writer->close();
     m_writerIsOpen = false;
 
-    // set append for subsequent writes if interactive mode
-    if ( G4Application::instance()->getMode() == G4Application::eInteractive ) {
-      m_fileExistsAction = eAppend;
+    // Set append mode for subsequent writes if interactive mode and the run was not aborted.
+    if (!m_abortCurrentRun) {
+      if ( G4Application::instance()->getMode() == G4Application::eInteractive ) {
+	m_fileExistsAction = eAppend;
+      }
     }
   }
 
@@ -278,7 +288,7 @@
     m_runHdr->parameters().setValue( "APP_STRING", PackageInfo::getFullApplicationString() );
 
     // set run number
-    m_runHdr->setRunNumber( m_runNumber );
+    m_runHdr->setRunNumber(m_runNumber);
 
     // set detector name in LCIO header
     setDetectorName();
@@ -381,9 +391,9 @@
     assert( anEvent );
 
     LCEventImpl* lcevt = new LCEventImpl();
-    lcevt->setEventNumber( anEvent->GetEventID() );
-    lcevt->setRunNumber( m_runHdr->getRunNumber() );
-    lcevt->setDetectorName( m_runHdr->getDetectorName() );
+    lcevt->setEventNumber(anEvent->GetEventID() );
+    lcevt->setRunNumber(m_runHdr->getRunNumber() );
+    lcevt->setDetectorName(m_runHdr->getDetectorName() );
     setCurrentLCEvent( lcevt );
     return lcevt;
   }
@@ -396,34 +406,37 @@
 
   void LcioManager::endEvent(const G4Event*)
   {
-    // create LCEvent
-    createLCEvent();
+    if (!m_abortCurrentRun) {
 
-    // create Mcp coll in LcioMcpManager
-    m_mcpManager->endEvent( G4EventManager::GetEventManager()->GetNonconstCurrentEvent() );
+      // create LCEvent
+      createLCEvent();
 
-    // create mcp collection from input event
-    createFinalMcpCollection();
+      // create Mcp coll in LcioMcpManager
+      m_mcpManager->endEvent( G4EventManager::GetEventManager()->GetNonconstCurrentEvent() );
 
-    // create HC in current LCEvent from current G4Event using builder
-    createHitsCollections();
+      // create mcp collection from input event
+      createFinalMcpCollection();
 
-    // dump event stats to cout
-    if ( m_enableDumpEvent ) {
-      LCTOOLS::dumpEvent( m_currentLCEvent );
-    }
+      // create HC in current LCEvent from current G4Event using builder
+      createHitsCollections();
 
-    // set timestamp
-    setEventTimeStamp();
+      // dump event stats to cout
+      if ( m_enableDumpEvent ) {
+	LCTOOLS::dumpEvent( m_currentLCEvent );
+      }
 
-    // write event
-    m_writer->writeEvent( m_currentLCEvent );
+      // set timestamp
+      setEventTimeStamp();
 
-    // flush writer
-    m_writer->flush();
+      // write event
+      m_writer->writeEvent( m_currentLCEvent );
 
-    // delete event's transient objects, including current LCEvent
-    reset();
+      // flush writer
+      m_writer->flush();
+
+      // delete event's transient objects, including current LCEvent
+      reset();
+    }
   }
 
   void LcioManager::setEventTimeStamp()

slic/src
RunAction.cc 1.18 -> 1.19
diff -u -r1.18 -r1.19
--- RunAction.cc	19 Oct 2005 22:51:17 -0000	1.18
+++ RunAction.cc	4 Aug 2006 23:10:52 -0000	1.19
@@ -1,4 +1,4 @@
-// $Header: /cvs/lcd/slic/src/RunAction.cc,v 1.18 2005/10/19 22:51:17 jeremy Exp $
+// $Header: /cvs/lcd/slic/src/RunAction.cc,v 1.19 2006/08/04 23:10:52 jeremy Exp $
 
 // slic
 #include "LcioManager.hh"
@@ -23,22 +23,22 @@
 
   void RunAction::BeginOfRunAction (const G4Run *aRun)
   {
-    // start run clock
+    // Start the run clock.
     startRunTimer();
 
-    // start message
+    // Print the run start message.
     printBeginOfRunMessage(aRun, std::cout);
 
-    // event source mgr
-    EventSourceManager::instance()->beginRun( aRun );
-
-    // LcioManager's action
+    // Execute LcioManager's beginRun action.
     LcioManager::instance()->beginRun( aRun );
 
-    // GeometryManager's action
+    // Execute EventSourceManager's beginRun action
+    EventSourceManager::instance()->beginRun( aRun );
+
+    // Execute GeometryManager's beginRun action.
     GeometryManager::instance()->beginRun( aRun );
 
-    // EventDebugger
+    // Execute EventDebugger's beginRun action.
     EventDebugger::instance()->beginRun( aRun );
   }
 
CVSspam 0.2.8