00001 #ifndef SCTDATA_IO_RAWSCANRESULTSTREAMER_V2_H
00002 #define SCTDATA_IO_RAWSCANRESULTSTREAMER_V2_H
00003
00004 #include "../RawScanResultIOHelper.h"
00005 #include "ScanResultStreamer_v1.h"
00006
00007 class SctData::RawScanResult;
00008 class TH2D;
00009
00010 using namespace Sct;
00011
00012 namespace SctData {
00013 namespace IO {
00014
00015
00019 class RawScanResultStreamer_v3 : public Sct::Streamer {
00020 public:
00021
00022 virtual void write(OStream& out, const Streamable& ob, const IOManager& manager) const ;
00023 virtual shared_ptr<Streamable> read(IStream& in, const IOManager& manager) const ;
00024 virtual void read(IStream& in, Streamable& ob, const IOManager& manager) const ;
00025 virtual unsigned getVersion() const throw() {return s_version;}
00026
00027 private:
00031 void readData(IStream& in, RawScanResult& raw) const;
00032
00036 void readSliceData(unsigned int size, unsigned short width, IStream& in, RawScanResult& raw) const;
00037
00041 void readRootData(unsigned int size, unsigned short width, IStream& in, RawScanResult& raw) const;
00042
00046 void readRawData(unsigned int size, unsigned short width, IStream& in, RawScanResult& raw) const;
00047
00048 void setHistSize(RawScanResult& raw, unsigned nbinsx, short unsigned ilink) const;
00049
00054 static void createOccupancyHistogram(const RawScanResultIOHelper& helper, const RawScanResult& raw, unsigned ichip);
00055
00057 static unsigned getOccWordPosition(unsigned ichip, unsigned ibin, unsigned ipt);
00058
00059
00060 mutable RawScanResultIOHelper helper;
00061 RawScanResultStreamer_v3() throw();
00062 static unsigned s_version;
00063 static bool inMap;
00064 };
00065
00066 }
00067 }
00068 #endif //#ifndef SCTDATA_IO_RAWSCANRESULTSTREAMER_V2_H