21 void endJob()
override;
26 typedef std::map<HcalDetId, SampleSet>
PathSet;
27 typedef std::map<HcalDetId, HcalElectronicsId>
IdMap;
37 template <
class DigiCollection>
39 for (
typename DigiCollection::const_iterator digi = digis.begin(); digi != digis.end(); digi++) {
41 for (
int i = 0;
i < digi->size();
i++)
42 q.push_back(digi->sample(
i));
44 if (fullHistory_.find(digi->id()) == fullHistory_.end())
45 fullHistory_.insert(std::pair<
HcalDetId, std::vector<SampleSet>>(digi->id(), std::vector<SampleSet>()));
46 if (IdSet.find(digi->id()) == IdSet.end())
47 IdSet.insert(std::pair<HcalDetId, HcalElectronicsId>(digi->id(),
HcalElectronicsId()));
48 fullHistory_[digi->id()].push_back(
q);
49 IdSet[digi->id()] = digi->elecId();
59 constexpr
char const *
det_names[] = {
"Zero",
"HcalBarrel",
"HcalEndcap",
"HcalForward",
"HcalOuter"};
62 PathSet::const_iterator iii;
63 IdMap::const_iterator ij;
65 for (iii = ps.begin(); iii != ps.end(); iii++) {
73 int ieta = ((
ss[1].adc()) & 0x3F);
74 int z_ieta = (((
ss[1].adc()) >> 6) & 0x1);
75 int iphi = ((
ss[2].adc()) & 0x7F);
76 int depth = ((
ss[3].adc()) & 0x7);
77 int det = (((
ss[3].adc()) >> 3) & 0xF);
78 int spigot = ((
ss[4].adc()) & 0xF);
79 int fiber = (((
ss[4].adc()) >> 4) & 0x7);
80 int crate = ((
ss[5].adc()) & 0x1F);
81 int fiber_chan = (((
ss[5].adc()) >> 5) & 0x3);
82 int G_Dcc = ((
ss[6].adc()) & 0x3F);
83 int H_slot = ((
ss[7].adc()) & 0x1F);
84 int TB = (((
ss[7].adc()) >> 5) & 0x1);
85 int RBX_7 = (((
ss[7].adc()) >> 6) & 0x1);
86 int RBX = ((
ss[8].adc()) & 0x7F);
87 int RM = ((
ss[9].adc()) & 0x3);
88 int RM_card = (((
ss[9].adc()) >> 2) & 0x3);
89 int RM_chan = (((
ss[9].adc()) >> 4) & 0x7);
92 if (det > 4 || det < 0) {
94 snprintf(
c, 20,
"Det=%d", det);
107 if ((spigot ==
eid.spigot()) && (fiber + 1 ==
eid.fiberIndex()) && (fiber_chan ==
eid.fiberChanId()) &&
108 (H_slot ==
eid.htrSlot()) && (G_Dcc ==
eid.dccid()) && (crate ==
eid.readoutVMECrateId()) &&
110 (det ==
dd.subdet())) {
113 is_header =
" Header found";
116 <<
" Digi ID: " <<
dd << is_header <<
" ieta: " << eta_sign <<
ieta <<
" iphi: " <<
iphi 117 <<
" Depth: " <<
depth <<
" Detector: " << det_name <<
" Spigot: " << spigot <<
"/" <<
eid.spigot()
118 <<
" Fiber: " << fiber + 1 <<
"/" <<
eid.fiberIndex() <<
" Fiber Channel: " << fiber_chan <<
"/" 119 <<
eid.fiberChanId() <<
" Crate: " << crate <<
"/" <<
eid.readoutVMECrateId() <<
" Global Dcc: " << G_Dcc
120 <<
"/" <<
eid.dccid() <<
" HTR Slot: " << H_slot <<
"/ " <<
eid.htrSlot() <<
" Top/Bottom: " << TB <<
"/" 121 <<
eid.htrTopBottom() <<
" RBX: " << (RBX_7 * 128 + RBX) <<
" RM: " << RM + 1 <<
" RM Card: " << RM_card + 1
122 <<
" RM Channel: " << RM_chan;
124 }
else if (
ieta + 64 == 0x75) {
125 ieta = ((
ss[2].adc()) & 0x3F);
126 iphi = ((
ss[3].adc()) & 0x7F);
128 det = (((
ss[4].adc()) >> 3) & 0xF);
129 spigot = ((
ss[5].adc()) & 0xF);
130 fiber = (((
ss[5].adc()) >> 4) & 0x7);
131 crate = ((
ss[6].adc()) & 0x1F);
132 fiber_chan = (((
ss[6].adc()) >> 5) & 0x3);
133 G_Dcc = ((
ss[7].adc()) & 0x3F);
134 H_slot = ((
ss[8].adc()) & 0x1F);
135 TB = (((
ss[8].adc()) >> 5) & 0x1);
136 RBX_7 = (((
ss[8].adc()) >> 6) & 0x1);
137 RBX = ((
ss[9].adc()) & 0x7F);
140 if ((spigot ==
eid.spigot()) && (fiber + 1 ==
eid.fiberIndex()) && (fiber_chan ==
eid.fiberChanId()) &&
141 (H_slot ==
eid.htrSlot()) && (G_Dcc ==
eid.dccid()) && (TB ==
eid.htrTopBottom()) &&
142 (crate ==
eid.readoutVMECrateId()) && (
iphi ==
dd.iphi()) && (
depth ==
dd.depth()) && (det ==
dd.subdet()) &&
146 is_header =
" DATA SHIFT";
149 <<
" Digi ID: " <<
dd << is_header <<
" ieta: " << eta_sign <<
ieta <<
" iphi: " <<
iphi 150 <<
" Depth: " <<
depth <<
" Detector: " << det_name <<
" Spigot: " << spigot <<
"/" <<
eid.spigot()
151 <<
" Fiber: " << fiber + 1 <<
"/" <<
eid.fiberIndex() <<
" Fiber Channel: " << fiber_chan <<
"/" 152 <<
eid.fiberChanId() <<
" Crate: " << crate <<
"/" <<
eid.readoutVMECrateId() <<
" Global Dcc: " << G_Dcc
153 <<
"/" <<
eid.dccid() <<
" HTR Slot: " << H_slot <<
"/ " <<
eid.htrSlot() <<
" Top/Bottom: " << TB <<
"/" 154 <<
eid.htrTopBottom() <<
" RBX: " << (RBX_7 * 128 + RBX);
157 edm::LogVerbatim(
"HcalCableMapper") <<
" Digi ID: " <<
dd <<
" +NO HEADER+ RBX: " << (RBX_7 * 128 + RBX);
173 std::vector<SampleSet>::iterator
j;
178 std::map<HcalDetId, std::vector<SampleSet>>::iterator
i;
186 for (
k = 0;
k < 10;
k++) {
187 for (
ii = 0;
ii < 128;
ii++)
190 for (
j =
i->second.begin();
j !=
i->second.end();
j++) {
191 if (
int(
j->size()) >
k)
196 for (
kk = 0;
kk < 128;
kk++) {
197 if (
c[
kk] >
c[c_max]) {
202 s.push_back(((c_max & 0x7F)));
206 consensus[
i->first] =
s;
Log< level::Info, true > LogVerbatim
const edm::EDGetTokenT< HFDigiCollection > tok_hf_
const edm::EDGetTokenT< HBHEDigiCollection > tok_hbhe_
void analyze(edm::Event const &iEvent, edm::EventSetup const &iSetup) override
constexpr char const * det_names[]
void record(const DigiCollection &digis)
example_stream void analyze(const edm::Event &, const edm::EventSetup &) override
std::vector< HcalQIESample > SampleSet
std::map< HcalDetId, std::vector< SampleSet > > fullHistory_
void process(const PathSet &ps, const IdMap &im)
#define DEFINE_FWK_MODULE(type)
const edm::EDGetTokenT< HODigiCollection > tok_ho_
std::map< HcalDetId, HcalElectronicsId > IdMap
HcalCableMapper(edm::ParameterSet const &conf)
std::map< HcalDetId, SampleSet > PathSet
Readout chain identification for Hcal.