20 virtual void endJob ();
25 typedef std::map<HcalDetId,SampleSet>
PathSet;
26 typedef std::map<HcalDetId,HcalElectronicsId>
IdMap;
37 template <
class DigiCollection>
38 void record(
const DigiCollection& digis) {
40 for (
typename DigiCollection::const_iterator digi=digis.begin(); digi!=digis.end(); digi++) {
43 for (
int i=0;
i<digi->size();
i++)
44 q.push_back(digi->sample(
i));
46 if (fullHistory_.find(digi->id())==fullHistory_.end()) fullHistory_.insert(std::pair<
HcalDetId,std::vector<SampleSet> >(digi->id(),std::vector<SampleSet>()));
47 if (IdSet.find(digi->id())==IdSet.end()) IdSet.insert(std::pair<HcalDetId,HcalElectronicsId>(digi->id(),
HcalElectronicsId()));
48 fullHistory_[digi->id()].push_back(q);
49 IdSet[digi->id()]=digi->elecId();
58 hbheLabel_(conf.getParameter<edm::InputTag>(
"hbheLabel")),
59 hoLabel_(conf.getParameter<edm::InputTag>(
"hoLabel")),
60 hfLabel_(conf.getParameter<edm::InputTag>(
"hfLabel")){
64 static const char*
det_names[] = {
"Zero",
"HcalBarrel",
"HcalEndcap",
"HcalForward",
"HcalOuter"};
70 PathSet::const_iterator iii;
71 IdMap::const_iterator ij;
73 for (iii=ps.begin();iii!=ps.end();iii++){
82 int header = ((ss[0].adc())&0x7F);
83 int ieta = ((ss[1].adc())&0x3F);
84 int z_ieta = (((ss[1].adc())>>6)&0x1);
85 int iphi = ((ss[2].adc())&0x7F);
86 int depth = ((ss[3].adc())&0x7);
87 int det = (((ss[3].adc())>>3)&0xF);
88 int spigot = ((ss[4].adc())&0xF);
89 int fiber = (((ss[4].adc())>>4)&0x7);
90 int crate = ((ss[5].adc())&0x1F);
91 int fiber_chan= (((ss[5].adc())>>5)&0x3);
92 int G_Dcc = ((ss[6].adc())&0x3F);
93 int H_slot = ((ss[7].adc())&0x1F);
94 int TB = (((ss[7].adc())>>5)&0x1);
95 int RBX_7 = (((ss[7].adc())>>6)&0x1);
96 int RBX = ((ss[8].adc())&0x7F);
97 int RM = ((ss[9].adc())&0x3);
98 int RM_card= (((ss[9].adc())>>2)&0x3);
99 int RM_chan= (((ss[9].adc())>>4)&0x7);
101 std::string det_name;
102 if (det>4 || det<0) {
104 snprintf(c,20,
"Det=%d",det);
111 }
else{eta_sign =
"-";}
120 is_header=
" Header found";
122 std::cout <<
" Digi ID: " << dd << is_header<<
" ieta: "<< eta_sign << ieta <<
" iphi: "<< iphi <<
" Depth: " << depth <<
" Detector: " << det_name <<
" Spigot: "<< spigot<<
"/"<<eid.
spigot() <<
" Fiber: " << fiber+1<<
"/"<<eid.
fiberIndex() <<
" Fiber Channel: "<< fiber_chan <<
"/"<<eid.
fiberChanId()<<
" Crate: " << crate<<
"/"<<eid.
readoutVMECrateId() <<
" Global Dcc: " << G_Dcc <<
"/"<<eid.
dccid() <<
" HTR Slot: " << H_slot <<
"/ " <<eid.
htrSlot()<<
" Top/Bottom: " << TB<<
"/"<< eid.
htrTopBottom() <<
" RBX: " << (RBX_7*128+
RBX) <<
" RM: " << RM+1 <<
" RM Card: " << RM_card+1 <<
" RM Channel: " << RM_chan << std::endl;
124 }
else if (ieta+64==0x75){
126 ieta = ((ss[2].adc())&0x3F);
127 z_ieta = (((ss[2].adc())>>6)&0x1);
128 iphi = ((ss[3].adc())&0x7F);
129 depth = ((ss[4].adc())&0x7);
130 det = (((ss[4].adc())>>3)&0xF);
131 spigot = ((ss[5].adc())&0xF);
132 fiber = (((ss[5].adc())>>4)&0x7);
133 crate = ((ss[6].adc())&0x1F);
134 fiber_chan= (((ss[6].adc())>>5)&0x3);
135 G_Dcc = ((ss[7].adc())&0x3F);
136 H_slot = ((ss[8].adc())&0x1F);
137 TB = (((ss[8].adc())>>5)&0x1);
138 RBX_7 = (((ss[8].adc())>>6)&0x1);
139 RBX = ((ss[9].adc())&0x7F);
145 std::cout <<
"Pathway match (SHIFT)"<<std::endl;
149 is_header=
" DATA SHIFT";
151 std::cout <<
" Digi ID: " << dd << is_header<<
" ieta: "<< eta_sign << ieta <<
" iphi: "<< iphi <<
" Depth: " << depth <<
" Detector: " << det_name <<
" Spigot: "<< spigot<<
"/"<<eid.
spigot() <<
" Fiber: " << fiber+1<<
"/"<<eid.
fiberIndex() <<
" Fiber Channel: "<< fiber_chan <<
"/"<<eid.
fiberChanId()<<
" Crate: " << crate<<
"/"<<eid.
readoutVMECrateId() <<
" Global Dcc: " << G_Dcc <<
"/"<<eid.
dccid() <<
" HTR Slot: " << H_slot <<
"/ " <<eid.
htrSlot()<<
" Top/Bottom: " << TB<<
"/"<< eid.
htrTopBottom() <<
" RBX: " << (RBX_7*128+
RBX) << std::endl;
154 }
else {
std::cout<<
" Digi ID: " <<dd <<
" +NO HEADER+ " <<
" RBX: " << (RBX_7*128+
RBX) << std::endl;
182 std::vector<SampleSet>::iterator
j;
187 std::map<HcalDetId,std::vector<SampleSet> >::iterator
i;
195 for (k=0; k<10; k++) {
196 for (ii=0; ii<128; ii++) c[ii]=0;
198 for (j=i->second.begin();j!=i->second.end();j++){
199 if (
int(j->size())>k)
205 for (kk=0;kk<128;kk++){
211 s.push_back(((c_max&0x7F)));
215 consensus[i->first]=
s;
int fiberIndex() const
get the fiber index [1-8] (which of eight fibers carried by a spigot) (valid only for non-trigger-cha...
HcalSubdetector subdet() const
get the subdetector
#define DEFINE_FWK_MODULE(type)
int htrSlot() const
get the htr slot
void record(const DigiCollection &digis)
int readoutVMECrateId() const
get the readout VME crate number
std::map< HcalDetId, std::vector< SampleSet > > fullHistory_
std::vector< HcalQIESample > SampleSet
int depth() const
get the tower depth
int htrTopBottom() const
get the htr top/bottom (1=top/0=bottom)
static const char * det_names[]
void process(const PathSet &ps, const IdMap &im)
int dccid() const
get the (Hcal local) DCC id
std::map< HcalDetId, SampleSet > PathSet
int fiberChanId() const
get the fiber channel id (which of three channels on a readout fiber) (valid only for non-trigger-cha...
std::map< HcalDetId, HcalElectronicsId > IdMap
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
int spigot() const
get the spigot (input number on DCC)
HcalCableMapper(edm::ParameterSet const &conf)
int ietaAbs() const
get the absolute value of the cell ieta
int iphi() const
get the cell iphi
virtual void analyze(edm::Event const &e, edm::EventSetup const &c)
Readout chain identification for Hcal [31:26] Unused (so far) [25] Trigger-chain id flag [24:20] Read...