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