Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2023-03-17 10:59:20

0001 #ifndef EventFilter_CSCRawToDigi_CSCDMBTrailer_h
0002 #define EventFilter_CSCRawToDigi_CSCDMBTrailer_h
0003 
0004 #include <cassert>
0005 #include <iosfwd>
0006 #include <cstring>  // bzero
0007 #include <memory>
0008 #include "FWCore/Utilities/interface/Exception.h"
0009 #include "DataFormats/CSCDigi/interface/CSCDMBStatusDigi.h"
0010 #include "EventFilter/CSCRawToDigi/interface/CSCVDMBTrailerFormat.h"
0011 #include "EventFilter/CSCRawToDigi/interface/CSCDMBHeader.h"
0012 
0013 struct CSCDMBTrailer2005;
0014 struct CSCDMBTrailer2013;
0015 
0016 class CSCDMBTrailer {
0017 public:
0018   CSCDMBTrailer(uint16_t firmware_version = 2005);
0019 
0020   CSCDMBTrailer(const uint16_t* buf, uint16_t firmware_version = 2005);
0021 
0022   ///@@ NEEDS TO BE DONE
0023   void setEventInformation(const CSCDMBHeader& header) { return theTrailerFormat->setEventInformation(header); };
0024 
0025   unsigned crateID() const { return theTrailerFormat->crateID(); };
0026   unsigned dmbID() const { return theTrailerFormat->dmbID(); };
0027 
0028   unsigned dmb_l1a() const { return theTrailerFormat->dmb_l1a(); };
0029   unsigned dmb_bxn() const { return theTrailerFormat->dmb_bxn(); };
0030 
0031   unsigned alct_endtimeout() const { return theTrailerFormat->alct_endtimeout(); };
0032   unsigned tmb_endtimeout() const { return theTrailerFormat->tmb_endtimeout(); };
0033   unsigned cfeb_endtimeout() const { return theTrailerFormat->cfeb_endtimeout(); };
0034 
0035   unsigned alct_starttimeout() const { return theTrailerFormat->alct_starttimeout(); };
0036   unsigned tmb_starttimeout() const { return theTrailerFormat->tmb_starttimeout(); };
0037   unsigned cfeb_starttimeout() const { return theTrailerFormat->cfeb_starttimeout(); };
0038 
0039   unsigned cfeb_movlp() const { return theTrailerFormat->cfeb_movlp(); };
0040   unsigned dmb_l1pipe() const { return theTrailerFormat->dmb_l1pipe(); };
0041 
0042   unsigned alct_empty() const { return theTrailerFormat->alct_empty(); };
0043   unsigned tmb_empty() const { return theTrailerFormat->tmb_empty(); };
0044   unsigned cfeb_empty() const { return theTrailerFormat->cfeb_empty(); };
0045 
0046   unsigned alct_half() const { return theTrailerFormat->alct_half(); };
0047   unsigned tmb_half() const { return theTrailerFormat->tmb_half(); };
0048   unsigned cfeb_half() const { return theTrailerFormat->cfeb_half(); };
0049 
0050   unsigned alct_full() const { return theTrailerFormat->alct_full(); };
0051   unsigned tmb_full() const { return theTrailerFormat->tmb_full(); };
0052   unsigned cfeb_full() const { return theTrailerFormat->cfeb_full(); };
0053 
0054   unsigned crc22() const { return theTrailerFormat->crc22(); };
0055   unsigned crc_lo_parity() const { return theTrailerFormat->crc_lo_parity(); };
0056   unsigned crc_hi_parity() const { return theTrailerFormat->crc_hi_parity(); };
0057 
0058   unsigned short* data() { return theTrailerFormat->data(); };
0059   unsigned short* data() const { return theTrailerFormat->data(); };
0060 
0061   unsigned sizeInWords() const { return theTrailerFormat->sizeInWords(); };
0062 
0063   bool check() const { return theTrailerFormat->check(); };
0064 
0065   /// will throw if the cast fails
0066   CSCDMBTrailer2005 dmbTrailer2005() const;
0067   CSCDMBTrailer2013 dmbTrailer2013() const;
0068 
0069 private:
0070   std::shared_ptr<CSCVDMBTrailerFormat> theTrailerFormat;
0071   int theFirmwareVersion;
0072 };
0073 
0074 #endif