Newer
Older
TB_Chris / TbIO / src / .svn / text-base / TbHeaderDecoder.h.svn-base
  1. #ifndef TBHEADERDECODER_H
  2. #define TBHEADERDECODER_H 1
  3.  
  4. // Gaudi
  5. #include "GaudiAlg/GaudiTool.h"
  6.  
  7. #include "TbKernel/ITbGeometrySvc.h"
  8. #include "TbKernel/ITbPixelSvc.h"
  9.  
  10. /** @class TbHeaderDecoder TbHeaderDecoder.h
  11. *
  12. * Tool to read SPIDR header from raw data file.
  13. *
  14. */
  15.  
  16. static const InterfaceID IID_TbHeaderDecoder("TbHeaderDecoder", 1, 0);
  17.  
  18. class TbHeaderDecoder : public GaudiTool {
  19. public:
  20. // Return the interface ID
  21. static const InterfaceID& interfaceID() { return IID_TbHeaderDecoder; }
  22.  
  23. /// Constructor
  24. TbHeaderDecoder(const std::string& type, const std::string& name,
  25. const IInterface* parent);
  26. /// Destructor
  27. virtual ~TbHeaderDecoder();
  28.  
  29. virtual StatusCode initialize();
  30.  
  31. void print(const bool& flag) { m_print = flag; }
  32. bool read(const char* data, const unsigned int& fmt,
  33. std::string& deviceId);
  34. bool readCommon(const char* data, unsigned int& size, unsigned int& fmt);
  35.  
  36. private:
  37. /// Flag to activate print-out or not.
  38. bool m_print;
  39.  
  40. /// Pointer to geometry service
  41. mutable ITbGeometrySvc* m_geomSvc;
  42. /// Access geometry service on-demand
  43. ITbGeometrySvc* geomSvc() const {
  44. if (!m_geomSvc) m_geomSvc = svc<ITbGeometrySvc>("TbGeometrySvc", true);
  45. return m_geomSvc;
  46. }
  47.  
  48. /// Pointer to pixel service
  49. mutable ITbPixelSvc* m_pixelSvc;
  50. /// Access pixel service on-demand
  51. ITbPixelSvc* pixelSvc() const {
  52. if (!m_pixelSvc) m_pixelSvc = svc<ITbPixelSvc>("TbPixelSvc", true);
  53. return m_pixelSvc;
  54. }
  55. /// Read version 1
  56. bool readV1(const char* data, std::string& deviceId);
  57. };
  58.  
  59. #endif