1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
#ifndef ESDATAFORMATTER_H
#define ESDATAFORMATTER_H
#include <iostream>
#include <vector>
#include <bitset>
#include <sstream>
#include <map>
#include "DataFormats/EcalDigi/interface/EcalDigiCollections.h"
#include "DataFormats/EcalDigi/interface/ESDataFrame.h"
#include "DataFormats/FEDRawData/interface/FEDRawDataCollection.h"
#include "DataFormats/FEDRawData/interface/FEDRawData.h"
#include "DataFormats/Provenance/interface/RunLumiEventNumber.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
class ESDataFormatter {
public:
struct Meta_Data {
edm::RunNumber_t run_number = 0;
edm::EventNumber_t orbit_number = 0;
unsigned int bx = 0;
edm::EventNumber_t lv1 = 0;
unsigned int kchip_bc = 0;
unsigned int kchip_ec = 0;
Meta_Data() = default;
Meta_Data(edm::RunNumber_t r,
edm::EventNumber_t o,
unsigned int b,
edm::EventNumber_t l,
unsigned int k_bc,
unsigned int k_ec)
: run_number(r), orbit_number(o), bx(b), lv1(l), kchip_bc(k_bc), kchip_ec(k_ec) {}
};
typedef std::vector<ESDataFrame> DetDigis;
typedef std::map<int, DetDigis> Digis;
typedef uint8_t Word8;
typedef uint16_t Word16;
typedef uint32_t Word32;
typedef uint64_t Word64;
ESDataFormatter(const edm::ParameterSet& ps)
: pset_(ps),
trgtype_(0),
debug_(pset_.getUntrackedParameter<bool>("debugMode", false)),
printInHex_(pset_.getUntrackedParameter<bool>("printInHex", false)) {}
virtual ~ESDataFormatter() {}
virtual void DigiToRaw(int fedId, Digis& digis, FEDRawData& fedRawData, const Meta_Data& meta_data) const = 0;
protected:
const edm::ParameterSet pset_;
const int trgtype_;
const bool debug_;
const bool printInHex_;
int formatMajor_;
int formatMinor_;
std::string print(const Word64& word) const;
std::string print(const Word16& word) const;
};
#endif
|