|
Gaudi Framework, version v22r4 |
| Home | Generated: Fri Sep 2 2011 |
Extension of OutputStream to write run records after last event. More...
#include <SequentialOutputStream.h>


Public Member Functions | |
| SequentialOutputStream (const std::string &nam, ISvcLocator *svc) | |
| Standard algorithm Constructor. | |
| virtual | ~SequentialOutputStream () |
| Standard Destructor. | |
| virtual StatusCode | execute () |
| Working entry point. | |
Protected Member Functions | |
| virtual StatusCode | writeObjects () |
| OutputStream override: Select the different objects and write them to file. | |
Private Member Functions | |
| void | makeFilename () |
Private Attributes | |
| unsigned int | m_eventsPerFile |
| unsigned int | m_nNumbersAdded |
| bool | m_numericFilename |
| unsigned int | m_events |
| Number of events written to this output stream. | |
| unsigned int | m_iFile |
Extension of OutputStream to write run records after last event.
Definition at line 13 of file SequentialOutputStream.h.
| SequentialOutputStream::SequentialOutputStream | ( | const std::string & | nam, |
| ISvcLocator * | svc | ||
| ) |
Standard algorithm Constructor.
Definition at line 27 of file SequentialOutputStream.cpp.
: OutputStream( name, svc ), m_events( 0 ), m_iFile( 1 ) { declareProperty( "EventsPerFile", m_eventsPerFile = boost::numeric::bounds< unsigned int>::highest() ); declareProperty( "NumericFilename", m_numericFilename = false ); declareProperty( "NumbersAdded", m_nNumbersAdded = 6 ); }
| virtual SequentialOutputStream::~SequentialOutputStream | ( | ) | [inline, virtual] |
| StatusCode SequentialOutputStream::execute | ( | void | ) | [virtual] |
Working entry point.
Reimplemented from OutputStream.
Definition at line 51 of file SequentialOutputStream.cpp.
{
// Clear any previously existing item list
clearSelection();
// Test whether this event should be output
if ( isEventAccepted() ) {
StatusCode sc = writeObjects();
clearSelection();
m_events++;
return sc;
}
return StatusCode::SUCCESS;
}
| void SequentialOutputStream::makeFilename | ( | ) | [private] |
Definition at line 66 of file SequentialOutputStream.cpp.
{
if ( m_events % m_eventsPerFile != 0 ) return;
bf::path outputPath( m_outputName );
string filename = outputPath.filename();
bf::path dir = outputPath.parent_path();
string stem = outputPath.stem();
string extension = outputPath.extension();
if ( !dir.empty() ) {
if ( !bf::exists( dir ) ) {
stringstream stream;
stream << "Directory " << dir << " does not exist.";
throw GaudiException( stream.str(), "error", StatusCode::FAILURE );
}
}
if ( m_numericFilename ) {
if ( m_events == 0 ) {
try {
m_iFile = lexical_cast< unsigned int >( stem );
} catch( const bad_lexical_cast& /* cast */ ) {
stringstream stream;
stream << "Filename " << filename
<< " is not a number, which was needed.";
throw GaudiException( stream.str(), "error", StatusCode::FAILURE );
}
}
stringstream iFileStream;
iFileStream << m_iFile;
string iFile( iFileStream.str() );
unsigned int length = 0;
if ( stem.length() > iFile.length() ) {
length = stem.length() - iFile.length();
}
stringstream name;
if ( !dir.empty() ) {
name << dir << "/";
}
for ( unsigned int i = 0; i < length; ++i ) {
name << "0";
}
name << iFile << extension;
m_outputName = name.str();
} else {
if ( m_iFile != 1 ) {
size_t pos = stem.rfind( "_" );
stem = stem.substr( 0, pos );
}
stringstream iFileStream;
iFileStream << m_iFile;
string iFile( iFileStream.str() );
unsigned int length = 0;
if ( m_nNumbersAdded > iFile.length() ) {
length = m_nNumbersAdded - iFile.length();
}
stringstream name;
name << dir << "/" << stem;
for ( unsigned int i = 0; i < length; ++i ) {
if ( i == 0 ) name << "_";
name << "0";
}
name << iFile << extension;
m_outputName = name.str();
}
++m_iFile;
}
| StatusCode SequentialOutputStream::writeObjects | ( | ) | [protected, virtual] |
OutputStream override: Select the different objects and write them to file.
Reimplemented from OutputStream.
Definition at line 38 of file SequentialOutputStream.cpp.
{
try {
makeFilename();
} catch ( const GaudiException& except ) {
MsgStream log(msgSvc(), name());
log << MSG::ERROR << except.message() << endmsg;
return StatusCode::FAILURE;
}
return OutputStream::writeObjects();
}
unsigned int SequentialOutputStream::m_events [private] |
Number of events written to this output stream.
Reimplemented from OutputStream.
Definition at line 37 of file SequentialOutputStream.h.
unsigned int SequentialOutputStream::m_eventsPerFile [private] |
Definition at line 32 of file SequentialOutputStream.h.
unsigned int SequentialOutputStream::m_iFile [private] |
Definition at line 38 of file SequentialOutputStream.h.
unsigned int SequentialOutputStream::m_nNumbersAdded [private] |
Definition at line 33 of file SequentialOutputStream.h.
Definition at line 34 of file SequentialOutputStream.h.