Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2025-02-09 23:41:47

0001 #ifndef ESDATAFORMATTER_H
0002 #define ESDATAFORMATTER_H
0003 
0004 #include <iostream>
0005 #include <vector>
0006 #include <bitset>
0007 #include <sstream>
0008 #include <map>
0009 
0010 #include "DataFormats/EcalDigi/interface/EcalDigiCollections.h"
0011 #include "DataFormats/EcalDigi/interface/ESDataFrame.h"
0012 #include "DataFormats/FEDRawData/interface/FEDRawDataCollection.h"
0013 #include "DataFormats/FEDRawData/interface/FEDRawData.h"
0014 #include "DataFormats/Provenance/interface/RunLumiEventNumber.h"
0015 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0016 
0017 class ESDataFormatter {
0018 public:
0019   struct Meta_Data {
0020     edm::RunNumber_t run_number = 0;
0021     edm::EventNumber_t orbit_number = 0;
0022     unsigned int bx = 0;
0023     edm::EventNumber_t lv1 = 0;
0024     unsigned int kchip_bc = 0;
0025     unsigned int kchip_ec = 0;
0026     Meta_Data() = default;
0027     Meta_Data(edm::RunNumber_t r,
0028               edm::EventNumber_t o,
0029               unsigned int b,
0030               edm::EventNumber_t l,
0031               unsigned int k_bc,
0032               unsigned int k_ec)
0033         : run_number(r), orbit_number(o), bx(b), lv1(l), kchip_bc(k_bc), kchip_ec(k_ec) {}
0034   };
0035 
0036   typedef std::vector<ESDataFrame> DetDigis;
0037   typedef std::map<int, DetDigis> Digis;
0038 
0039   typedef uint8_t Word8;
0040   typedef uint16_t Word16;
0041   typedef uint32_t Word32;
0042   typedef uint64_t Word64;
0043 
0044   ESDataFormatter(const edm::ParameterSet& ps)
0045       : pset_(ps),
0046         trgtype_(0),
0047         debug_(pset_.getUntrackedParameter<bool>("debugMode", false)),
0048         printInHex_(pset_.getUntrackedParameter<bool>("printInHex", false)) {}
0049   virtual ~ESDataFormatter() {}
0050 
0051   virtual void DigiToRaw(int fedId, Digis& digis, FEDRawData& fedRawData, const Meta_Data& meta_data) const = 0;
0052 
0053 protected:
0054   const edm::ParameterSet pset_;
0055   const int trgtype_;
0056   const bool debug_;
0057   const bool printInHex_;
0058 
0059   int formatMajor_;
0060   int formatMinor_;
0061 
0062   std::string print(const Word64& word) const;
0063   std::string print(const Word16& word) const;
0064 };
0065 
0066 #endif