| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

In This Package:

DaqRootWriter Class Reference

#include <DaqRootWriter.h>

Inheritance diagram for DaqRootWriter:

[legend]
Collaboration diagram for DaqRootWriter:
[legend]
List of all members.

Public Member Functions

 DaqRootWriter (const std::string &name, ISvcLocator *pSvcLocator)
virtual ~DaqRootWriter ()
virtual StatusCode initialize ()
virtual StatusCode finalize ()
virtual StatusCode execute ()
DayaBay::ReadoutHeaderGetCurrentHeaderObject () const
virtual StatusCode sysInitialize ()
virtual StatusCode sysExecute ()
virtual StatusCode preExecute ()
virtual StatusCode postExecute ()
virtual StatusCode sysFinalize ()
IDataProviderSvcarcSvc () const
void putTES (DataObject *obj, std::string location) const
TYPE * getTES (std::string location) const
TYPE * getAES (std::string location, int index) const
std::vector< DataObject * > getAEScollection (std::string location) const
int getExecNum ()
std::string Location () const
void put (IDataProviderSvc *svc, DataObject *object, const std::string &address, const bool useRootInTES=true) const
void put (DataObject *object, const std::string &address, const bool useRootInTES=true) const
Gaudi::Utils::GetData< TYPE
>::return_type 
get (IDataProviderSvc *svc, const std::string &location, const bool useRootInTES=true) const
Gaudi::Utils::GetData< TYPE
>::return_type 
get (const std::string &location, const bool useRootInTES=true) const
TYPE * getDet (IDataProviderSvc *svc, const std::string &location) const
TYPE * getDet (const std::string &location) const
bool exist (IDataProviderSvc *svc, const std::string &location, const bool useRootInTES=true) const
bool exist (const std::string &location, const bool useRootInTES=true) const
bool existDet (IDataProviderSvc *svc, const std::string &location) const
bool existDet (const std::string &location) const
TYPE * getOrCreate (IDataProviderSvc *svc, const std::string &location, const bool useRootInTES=true) const
TYPE * getOrCreate (const std::string &location, const bool useRootInTES=true) const
bool registerContext () const
INTupleSvcevtColSvc () const
IAlgContextSvccontextSvc () const
TOOL * tool (const std::string &type, const std::string &name, const IInterface *parent=0, bool create=true) const
TOOL * tool (const std::string &type, const IInterface *parent=0, bool create=true) const
SERVICE * svc (const std::string &name, const bool create=true) const
IUpdateManagerSvcupdMgrSvc () const
IDataProviderSvcfastContainersSvc () const
StatusCode Error (const std::string &msg, const StatusCode st=StatusCode::FAILURE, const size_t mx=10) const
StatusCode Warning (const std::string &msg, const StatusCode st=StatusCode::FAILURE, const size_t mx=10) const
StatusCode Print (const std::string &msg, const StatusCode st=StatusCode::SUCCESS, const MSG::Level lev=MSG::INFO) const
StatusCode Assert (const bool ok, const std::string &message="", const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
StatusCode Assert (const bool ok, const char *message, const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
StatusCode Exception (const std::string &msg, const GaudiException &exc, const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
StatusCode Exception (const std::string &msg, const std::exception &exc, const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
StatusCode Exception (const std::string &msg="no message", const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
MsgStreammsgStream (const MSG::Level level) const
MsgStreamalways () const
MsgStreamfatal () const
MsgStreamerr () const
MsgStreamerror () const
MsgStreamwarning () const
MsgStreaminfo () const
MsgStreamdebug () const
MsgStreamverbose () const
MsgStreammsg () const
const Statisticscounters () const
StatEntitycounter (const std::string &tag) const
MSG::Level msgLevel () const
bool msgLevel (const MSG::Level level) const
void resetMsgStream () const
bool typePrint () const
bool propsPrint () const
bool statPrint () const
bool errorsPrint () const
long printStat (const MSG::Level level=MSG::ALWAYS) const
long printErrors (const MSG::Level level=MSG::ALWAYS) const
long printProps (const MSG::Level level=MSG::ALWAYS) const
void registerCondition (const std::string &condition, StatusCode(CallerClass::*mf)()=NULL)
void registerCondition (const std::string &condition, CondType *&condPtrDest, StatusCode(CallerClass::*mf)()=NULL)
void registerCondition (char *condition, StatusCode(CallerClass::*mf)()=NULL)
void registerCondition (TargetClass *condition, StatusCode(CallerClass::*mf)()=NULL)
StatusCode runUpdate ()
TransientFastContainer< T > * getFastContainer (const std::string &location, typename TransientFastContainer< T >::size_type initial=0)
StatusCode release (const IInterface *interface) const
unsigned long release ()
const std::string & context () const
const std::string & rootInTES () const
double globalTimeOffset () const
virtual StatusCode sysStart ()
virtual StatusCode sysReinitialize ()
virtual StatusCode sysRestart ()
virtual StatusCode sysStop ()
virtual StatusCode sysBeginRun ()
virtual StatusCode sysEndRun ()
virtual const std::string & name () const
virtual const std::string & version () const
virtual StatusCode configure ()
virtual StatusCode terminate ()
virtual StatusCode start ()
virtual StatusCode stop ()
virtual StatusCode reinitialize ()
virtual StatusCode restart ()
virtual bool isExecuted () const
virtual void setExecuted (bool state)
virtual void resetExecuted ()
virtual StatusCode beginRun ()
virtual StatusCode endRun ()
virtual Gaudi::StateMachine::State FSMState () const
virtual Gaudi::StateMachine::State targetFSMState () const
virtual bool isEnabled () const
virtual bool filterPassed () const
virtual void setFilterPassed (bool state)
StatusCode service (const std::string &name, T *&psvc, bool createIf=true) const
StatusCode service (const std::string &svcType, const std::string &svcName, T *&psvc) const
void setOutputLevel (int level)
IAuditorSvcauditorSvc () const
IChronoStatSvcchronoSvc () const
IChronoStatSvcchronoStatService () const
IDataProviderSvcdetSvc () const
IDataProviderSvcdetDataService () const
IConversionSvcdetCnvSvc () const
IConversionSvcdetDataCnvService () const
IDataProviderSvceventSvc () const
IDataProviderSvcevtSvc () const
IDataProviderSvceventDataService () const
IConversionSvceventCnvSvc () const
IConversionSvceventDataCnvService () const
IHistogramSvchistoSvc () const
IHistogramSvchistogramDataService () const
IMessageSvcmsgSvc () const
IMessageSvcmessageService () const
INTupleSvcntupleSvc () const
INTupleSvcntupleService () const
IRndmGenSvcrandSvc () const
IToolSvctoolSvc () const
IExceptionSvcexceptionSvc () const
ISvcLocatorserviceLocator () const
ISvcLocatorsvcLoc () const
StatusCode createSubAlgorithm (const std::string &type, const std::string &name, Algorithm *&pSubAlg)
std::vector< Algorithm * > * subAlgorithms () const
virtual StatusCode setProperty (const Property &p)
virtual StatusCode setProperty (const std::string &s)
virtual StatusCode setProperty (const std::string &n, const std::string &v)
StatusCode setProperty (const std::string &name, const TYPE &value)
virtual StatusCode getProperty (Property *p) const
virtual const PropertygetProperty (const std::string &name) const
virtual StatusCode getProperty (const std::string &n, std::string &v) const
virtual const std::vector<
Property * > & 
getProperties () const
StatusCode setProperties ()
PropertydeclareProperty (const std::string &name, T &property, const std::string &doc="none") const
PropertydeclareRemoteProperty (const std::string &name, IProperty *rsvc, const std::string &rname="") const
IMonitorSvcmonitorSvc () const
void declareInfo (const std::string &name, const T &var, const std::string &desc) const
void declareInfo (const std::string &name, const std::string &format, const void *var, int size, const std::string &desc) const
unsigned long addRef ()
StatusCode queryInterface (const InterfaceID &riid, void **)

Static Public Member Functions

static const InterfaceIDinterfaceID ()
static const InterfaceIDinterfaceID ()
static const InterfaceIDinterfaceID ()

Public Attributes

 SUCCESS
 NO_INTERFACE
 VERSMISMATCH
 LAST_ERROR

Protected Types

typedef std::map< std::string,
StatEntity
Statistics
typedef std::map< std::string,
unsigned int > 
Counter
typedef std::vector< IAlgTool * > AlgTools
typedef std::pair< IInterface *,
std::string > 
ServiceEntry
typedef std::vector< ServiceEntryServices

Protected Member Functions

virtual DybDaq::DaqToOStreamcreateDaqToOStream (const DybDaq::FileTraits &traits)
 Creates the DaqToOStream into which the DAQ bytes wiull be written.
virtual StatusCode writeData (const DayaBay::DaqCrate *daqCrate)
 Writes the data block.
virtual void wroteFileHead ()
 Called when the file header records have all been written.
virtual void wroteData ()
 Called when a file data record has all been written.
virtual void wroteFileFoot ()
 Called when the file footer records have all been written.
virtual StatusCode writeFileHead (const DayaBay::DaqCrate *daqCrate)
virtual StatusCode writeFileFoot ()
DayaBay::ReadoutHeaderMakeHeaderObject ()
void InitializeHeader (DayaBay::HeaderObject *header)
void AppendInputHeader (const DayaBay::HeaderObject *header) const
StatusCode releaseTool (const IAlgTool *tool) const
StatusCode releaseSvc (const IInterface *svc) const
bool isInitialized () const
bool isFinalized () const
int outputLevel () const
IntegerPropertyoutputLevelProperty ()
void initOutputLevel (Property &prop)

Protected Attributes

DayaBay::HeaderObjectm_headerObject
bool m_pullMode
std::string m_location

Static Protected Attributes

static const bool IgnoreRootInTES
static const bool UseRootInTES

Private Member Functions

DayaBay::DaqBlockcreateDaqBlock ()
 Creates a new DaqBlock from the current stream and reset that stream.
StatusCode writeDaqBlock (DayaBay::DaqBlock *daqBlock, unsigned int deltaEvents)
 Writes supplied DaqBlock to ROOT file.

Private Attributes

std::string m_daqBlockLocation
 Location in file where DAQ block will be saved.
DybDaq::DaqToStrStreamm_strStream
 The current DaqToStrStream into which data is being written.
IDybStorageSvcm_storageSvc
 The Storage service used to write the DaqBlocks.

Detailed Description

Definition at line 28 of file DaqRootWriter.h.


Constructor & Destructor Documentation

DaqRootWriter::DaqRootWriter ( const std::string &  name,
ISvcLocator pSvcLocator 
)

Definition at line 31 of file DaqRootWriter.cc.

00032                                                :
00033     DaqFormatWriter(name,
00034                     svc),
00035     m_storageSvc(0) {
00036     declareProperty("DaqBlockLocation",
00037                     m_daqBlockLocation=DayaBay::DaqBlockHeaderLocation::Default,
00038                     "Location in file where DAQ block will be saved.");
00039 }

DaqRootWriter::~DaqRootWriter (  )  [virtual]

Definition at line 41 of file DaqRootWriter.cc.

00041                               {
00042 }


Member Function Documentation

StatusCode DaqRootWriter::initialize (  )  [virtual]

Reimplemented from DybDaq::DaqFormatWriter.

Definition at line 44 of file DaqRootWriter.cc.

00045 {
00046     StatusCode sc = DaqFormatWriter::initialize();
00047     if(sc.isFailure()) {
00048         return sc;
00049     }
00050 
00051     // Initialize the necessary services
00052     sc = service("DybStorageSvc",
00053                  m_storageSvc,
00054                  true);
00055     if(sc.isFailure()) {
00056         m_storageSvc = 0;
00057         warning() << "No Storage Service was found, so this module will be disabled" << endreq;
00058     }
00059     return StatusCode::SUCCESS;
00060 }

StatusCode DaqRootWriter::finalize (  )  [virtual]

Reimplemented from DybDaq::DaqFormatWriter.

Definition at line 62 of file DaqRootWriter.cc.

00063 {
00064     if(0 != m_storageSvc) {
00065         m_storageSvc->release();
00066     }
00067     return DaqFormatWriter::finalize();
00068 }

DaqToOStream * DaqRootWriter::createDaqToOStream ( const DybDaq::FileTraits traits  )  [protected, virtual]

Creates the DaqToOStream into which the DAQ bytes wiull be written.

Implements DybDaq::DaqFormatWriter.

Definition at line 70 of file DaqRootWriter.cc.

00070                                                                         {
00071     m_strStream = new DaqToStrStream(traits);
00072     return  m_strStream;
00073 }

StatusCode DaqRootWriter::writeData ( const DayaBay::DaqCrate daqCrate  )  [protected, virtual]

Writes the data block.

Reimplemented from DybDaq::DaqFormatWriter.

Definition at line 75 of file DaqRootWriter.cc.

00075                                                             {
00076   if (0 == m_strStream) {
00077       return StatusCode::FAILURE;
00078     }
00079     const EventReadout& eventReadout = daqCrate->eventReadout();
00080     m_strStream->eventSaved(eventReadout.bufferSize());
00081     return StatusCode::SUCCESS;
00082 }

void DaqRootWriter::wroteFileHead (  )  [protected, virtual]

Called when the file header records have all been written.

Implements DybDaq::DaqFormatWriter.

Definition at line 84 of file DaqRootWriter.cc.

00084                                   {
00085   writeDaqBlock(createDaqBlock(),
00086                 m_strStream->getFileBlockCount());
00087 }

void DaqRootWriter::wroteData (  )  [protected, virtual]

Called when a file data record has all been written.

Implements DybDaq::DaqFormatWriter.

Definition at line 89 of file DaqRootWriter.cc.

00089                               {
00090   // Never called
00091 }

void DaqRootWriter::wroteFileFoot (  )  [protected, virtual]

Called when the file footer records have all been written.

Implements DybDaq::DaqFormatWriter.

Definition at line 93 of file DaqRootWriter.cc.

00093                                   {
00094   writeDaqBlock(createDaqBlock(),
00095                 m_strStream->getFileBlockCount());
00096 }

DaqBlock * DaqRootWriter::createDaqBlock (  )  [private]

Creates a new DaqBlock from the current stream and reset that stream.

Definition at line 98 of file DaqRootWriter.cc.

00098                                         {
00099     string content = m_strStream->str();
00100     m_strStream->splitStream();
00101     unsigned int length = content.length();
00102     DaqBlock::RawData* rawData = new DaqBlock::RawData(length / ByteBuffer::BYTES_IN_INT);
00103     std::memcpy(&((*rawData)[0]),
00104                 content.data(),
00105                 length);
00106     DaqBlock* result = new DaqBlock();
00107     result->setBytes(rawData);
00108     return result;
00109 }

StatusCode DaqRootWriter::writeDaqBlock ( DayaBay::DaqBlock daqBlock,
unsigned int  deltaEvents 
) [private]

Writes supplied DaqBlock to ROOT file.

Definition at line 111 of file DaqRootWriter.cc.

00112                                                                   {
00113     if (0 == m_storageSvc) {
00114         return StatusCode::SUCCESS;;
00115     }
00116 
00117     DaqBlockHeader* daqHeader = new DaqBlockHeader();
00118     daqHeader->setDeltaEvents(deltaEvents);
00119     daqHeader->setDaqBlock(daqBlock);
00120 
00121     DataSvcHelpers::RegistryEntry regEntry = DataSvcHelpers::RegistryEntry(m_daqBlockLocation);
00122     regEntry.setObject(daqHeader);
00123     debug() << "Storing DAQ Block" << endreq;
00124     StatusCode sc = m_storageSvc->store(daqHeader,
00125                                         m_daqBlockLocation);
00126     if(sc.isFailure()){
00127         error() << "Failed to store Run Header to output file" << endreq;
00128         return sc;
00129     }
00130     debug() << "Stored DAQ Block" << endreq;
00131 
00132     return StatusCode::SUCCESS;
00133 }


Member Data Documentation

std::string DaqRootWriter::m_daqBlockLocation [private]

Location in file where DAQ block will be saved.

Definition at line 83 of file DaqRootWriter.h.

DybDaq::DaqToStrStream* DaqRootWriter::m_strStream [private]

The current DaqToStrStream into which data is being written.

Definition at line 88 of file DaqRootWriter.h.

IDybStorageSvc* DaqRootWriter::m_storageSvc [private]

The Storage service used to write the DaqBlocks.

Definition at line 93 of file DaqRootWriter.h.


The documentation for this class was generated from the following files:
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 20:47:45 2011 for DybIO by doxygen 1.4.7