#ifndef TBHEADERDECODER_H #define TBHEADERDECODER_H 1 // Gaudi #include "GaudiAlg/GaudiTool.h" #include "TbKernel/ITbGeometrySvc.h" #include "TbKernel/ITbPixelSvc.h" /** @class TbHeaderDecoder TbHeaderDecoder.h * * Tool to read SPIDR header from raw data file. * */ static const InterfaceID IID_TbHeaderDecoder("TbHeaderDecoder", 1, 0); class TbHeaderDecoder : public GaudiTool { public: // Return the interface ID static const InterfaceID& interfaceID() { return IID_TbHeaderDecoder; } /// Constructor TbHeaderDecoder(const std::string& type, const std::string& name, const IInterface* parent); /// Destructor virtual ~TbHeaderDecoder(); virtual StatusCode initialize(); void print(const bool& flag) { m_print = flag; } bool read(const char* data, const unsigned int& fmt, std::string& deviceId); bool readCommon(const char* data, unsigned int& size, unsigned int& fmt); private: /// Flag to activate print-out or not. bool m_print; /// Pointer to geometry service mutable ITbGeometrySvc* m_geomSvc; /// Access geometry service on-demand ITbGeometrySvc* geomSvc() const { if (!m_geomSvc) m_geomSvc = svc<ITbGeometrySvc>("TbGeometrySvc", true); return m_geomSvc; } /// Pointer to pixel service mutable ITbPixelSvc* m_pixelSvc; /// Access pixel service on-demand ITbPixelSvc* pixelSvc() const { if (!m_pixelSvc) m_pixelSvc = svc<ITbPixelSvc>("TbPixelSvc", true); return m_pixelSvc; } /// Read version 1 bool readV1(const char* data, std::string& deviceId); }; #endif