CMS 3D CMS Logo

PixelDataFormatter.h

Go to the documentation of this file.
00001 #ifndef PixelDataFormatter_H
00002 #define PixelDataFormatter_H
00003 
00034 #include "DataFormats/SiPixelDigi/interface/PixelDigi.h"
00035 #include "DataFormats/SiPixelRawData/interface/SiPixelRawDataError.h"
00036 #include "DataFormats/Common/interface/DetSetVector.h"
00037 #include "EventFilter/SiPixelRawToDigi/interface/ErrorChecker.h"
00038 
00039 #include <boost/cstdint.hpp>
00040 #include <vector>
00041 #include <map>
00042 
00043 class FEDRawData;
00044 
00045 class SiPixelFedCablingMap;
00046 class SiPixelFrameConverter;
00047 
00048 class PixelDataFormatter {
00049 
00050 public:
00051 
00052   typedef std::vector<PixelDigi> DetDigis;
00053   typedef std::map<uint32_t, DetDigis> Digis;
00054 //  typedef std::vector< edm::DetSet<PixelDigi> > Digis;
00055   typedef std::pair<DetDigis::const_iterator, DetDigis::const_iterator> Range;
00056   
00057   typedef std::vector<SiPixelRawDataError> DetErrors;
00058   typedef std::map<uint32_t, DetErrors> Errors;
00059 
00060   PixelDataFormatter(const SiPixelFedCablingMap * map);
00061 
00062   void setErrorStatus(bool ErrorStatus, bool OrderStatus);
00063 
00064   int nDigis() const { return theDigiCounter; }
00065   int nWords() const { return theWordCounter; }
00066 
00067   void interpretRawData(bool& errorsInEvent, int fedId,  const FEDRawData & data, Digis & digis, Errors & errors);
00068 
00069   FEDRawData * formatData( unsigned int lvl1_ID, int fedId, const Digis & digis);
00070 
00071 private:
00072   mutable int theDigiCounter;
00073   mutable int theWordCounter;
00074 
00075   const SiPixelFedCablingMap * theCablingMap;
00076   bool includeErrors;
00077   bool checkOrder;
00078   ErrorChecker errorcheck;
00079 
00080   typedef unsigned int Word32;
00081   typedef long long Word64;
00082 //  typedef uint32_t Word32;
00083 //  typedef uint64_t Word64;
00084 
00085   int checkError(const Word32& data) const;
00086 
00087   int digi2word( const SiPixelFrameConverter* converter,
00088                   uint32_t detId, const PixelDigi& digi,
00089                   std::vector<Word32> & words) const;
00090 
00091   int word2digi( const SiPixelFrameConverter* converter, 
00092                     const bool includeError,
00093                     const Word32& word, 
00094                     Digis & digis) const;
00095 
00096   std::string print(const PixelDigi & digi) const;
00097   std::string print(const Word64    & word) const;
00098 
00099   uint32_t errorDetId(const SiPixelFrameConverter* converter, 
00100                       int fedId, int errorType, const Word32 & word) const;
00101 
00102   static const int LINK_bits,  ROC_bits,  DCOL_bits,  PXID_bits,  ADC_bits;
00103   static const int LINK_shift, ROC_shift, DCOL_shift, PXID_shift, ADC_shift;
00104 };
00105 
00106 #endif

Generated on Tue Jun 9 17:34:49 2009 for CMSSW by  doxygen 1.5.4