18 std::vector<HOHXLogicalMapEntry>& HOHXEntries,
19 std::vector<CALIBLogicalMapEntry>& CALIBEntries,
20 std::vector<ZDCLogicalMapEntry>& ZDCEntries,
21 std::vector<HTLogicalMapEntry>& HTEntries,
22 std::vector<uint32_t>& LinearIndex2Entry,
23 std::vector<uint32_t>& HbHash2Entry,
24 std::vector<uint32_t>& HeHash2Entry,
25 std::vector<uint32_t>& HfHash2Entry,
26 std::vector<uint32_t>& HtHash2Entry,
27 std::vector<uint32_t>& HoHash2Entry,
28 std::vector<uint32_t>& HxCalibHash2Entry,
29 std::vector<uint32_t>& ZdcHash2Entry) : topo_(topo)
70 answer|=(vectorid&0x3)<<1;
80 static FILE* CALIBmap;
86 stringstream mystream;
87 string HBEFmapstr, HOXmapstr, CALIBmapstr, ZDCmapstr, HTmapstr;
94 strftime(tempbuff,128,
"%d.%b.%Y",localtime(&myTime) );
99 if (mapIOV==1) IOVlabel =
"A";
100 else if (mapIOV==2) IOVlabel =
"B";
101 else if (mapIOV==3) IOVlabel =
"C";
102 else if (mapIOV==4) IOVlabel =
"D";
105 HBEFmapstr =
"./HCALmapHBEF_"+IOVlabel+
".txt";
106 HOXmapstr =
"./HCALmapHO_"+IOVlabel+
".txt";
107 CALIBmapstr =
"./HCALmapCALIB_"+IOVlabel+
".txt";
108 ZDCmapstr =
"./ZDCmap_"+IOVlabel+
".txt";
109 HTmapstr =
"./HCALmapHT_"+IOVlabel+
".txt";
117 HBEFmap = fopen(HBEFmapstr.c_str(),
"w");
118 HOXmap = fopen(HOXmapstr.c_str(),
"w");
119 CALIBmap = fopen(CALIBmapstr.c_str(),
"w");
120 ZDCmap = fopen(ZDCmapstr.c_str(),
"w");
121 HTmap = fopen(HTmapstr.c_str(),
"w");
125 fprintf(HBEFmap,
"## file created %s ##\n",date.c_str());
128 else cout <<HBEFmapstr<<
" not found!"<<endl;
131 fprintf(HOXmap,
"## file created %s ##\n",date.c_str());
134 else cout <<HOXmapstr<<
" not found!"<<endl;
137 fprintf(CALIBmap,
"## file created %s ##\n",date.c_str());
140 else cout <<CALIBmapstr<<
" not found!"<<endl;
143 fprintf(ZDCmap,
"## file created %s ##\n",date.c_str());
146 else cout <<ZDCmapstr<<
" not found!"<<endl;
149 fprintf(HTmap,
"## file created %s ##\n",date.c_str());
152 else cout <<HTmapstr<<
" not found!"<<endl;
162 theemapHelper.
mapEId2chId( it->getHcalElectronicsId(), it->getDetId() );}
164 theemapHelper.
mapEId2chId( it->getHcalElectronicsId(), it->getDetId() );}
166 theemapHelper.
mapEId2chId( it->getHcalElectronicsId(), it->getDetId() );}
168 theemapHelper.
mapEId2chId( it->getHcalElectronicsId(), it->getDetId() );}
169 for (std::vector<HTLogicalMapEntry>::iterator it =
HTEntries_.begin(); it!=
HTEntries_.end(); ++it) {
170 theemapHelper.
mapEId2tId( it->getHcalTrigElectronicsId(), it->getDetId() );}
171 return std::make_unique<HcalElectronicsMap>(theemapHelper);
176 int titlecounter = 0;
179 titlecounter = titlecounter % 21;
180 if (titlecounter == 0){
181 fprintf(hbefmapfile,
"# side eta phi dphi depth det rbx wedge rm pixel qie adc");
182 fprintf(hbefmapfile,
" rm_fi fi_ch crate htr fpga htr_fi dcc_sl spigo dcc slb slbin slbin2");
183 fprintf(hbefmapfile,
" slnam rctcra rctcar rctcon rctnam fedid\n");
186 fprintf(hbefmapfile,
"%s",it->printLMapLine());
192 int titlecounter = 0;
195 titlecounter = titlecounter % 21;
196 if (titlecounter == 0){
197 fprintf(hoxmapfile,
"# side eta phi dphi depth det rbx sector rm pixel qie adc");
198 fprintf(hoxmapfile,
" rm_fi fi_ch let_code crate htr fpga htr_fi dcc_sl spigo dcc fedid\n");
201 fprintf(hoxmapfile,
"%s",it->printLMapLine());
207 int titlecounter = 0;
210 titlecounter = titlecounter % 21;
211 if (titlecounter == 0){
212 fprintf(calibmapfile,
"# side eta phi dphi det rbx sector rm rm_fi ");
213 fprintf(calibmapfile,
" fi_ch crate htr fpga htr_fi dcc_sl spigo dcc fedid ch_type name\n");
216 fprintf(calibmapfile,
"%s",it->printLMapLine());
222 int titlecounter = 0;
225 titlecounter = titlecounter % 21;
226 if (titlecounter == 0){
227 fprintf(zdcmapfile,
"# side x y dx depth det det_ch cable rm qie ");
228 fprintf(zdcmapfile,
" adc rm_fi fi_ch crate htr fpga htr_fi dcc_sl spigo dcc fedid\n");
231 fprintf(zdcmapfile,
"%s",it->printLMapLine());
237 int titlecounter = 0;
239 for (std::vector<HTLogicalMapEntry>::iterator it =
HTEntries_.begin(); it!=
HTEntries_.end(); ++it) {
240 titlecounter = titlecounter % 21;
241 if (titlecounter == 0){
242 fprintf(htmapfile,
"# side eta phi dphi depth det wedge crate");
243 fprintf(htmapfile,
" htr fpga dcc_sl spigo dcc slb slbin slbin2 nDat ");
244 fprintf(htmapfile,
" slnam rctcra rctcar rctcon rctnam fedid\n");
247 fprintf(htmapfile,
"%s",it->printLMapLine());
255 if ( !(entry&0
x1) )
return DetId(0);
256 if ( ((entry>>1)&0x3)==0)
return HBHEHFEntries_.at(entry>>3).getDetId();
257 if ( ((entry>>1)&0x3)==1)
return HOHXEntries_.at(entry>>3).getDetId();
258 if ( ((entry>>1)&0x3)==2)
return CALIBEntries_.at(entry>>3).getDetId();
259 if ( ((entry>>1)&0x3)==3)
return ZDCEntries_.at(entry>>3).getDetId();
305 int HBHEHF_EID_pass=0;
306 int HBHEHF_EID_fail=0;
309 int CALIB_EID_pass=0;
310 int CALIB_EID_fail=0;
314 int HBHEHF_FEID_pass=0;
315 int HBHEHF_FEID_fail=0;
316 int HOHX_FEID_pass=0;
317 int HOHX_FEID_fail=0;
318 int CALIB_FEID_pass=0;
319 int CALIB_FEID_fail=0;
321 cout <<
"\nRunning the id function checker..." << endl;
325 const DetId did0=it->getDetId();
327 if (did0==did1) HBHEHF_EID_pass++;
328 else HBHEHF_EID_fail++;
332 if (hfeid0==hfeid1) HBHEHF_FEID_pass++;
333 else HBHEHF_FEID_fail++;
337 const DetId did0=it->getDetId();
339 if (did0==did1) HOHX_EID_pass++;
340 else HOHX_EID_fail++;
344 if (hfeid0==hfeid1) HOHX_FEID_pass++;
345 else HOHX_FEID_fail++;
349 const DetId did0=it->getDetId();
351 if (did0==did1) CALIB_EID_pass++;
352 else CALIB_EID_fail++;
356 if (hfeid0==hfeid1) CALIB_FEID_pass++;
357 else CALIB_FEID_fail++;
361 const DetId did0=it->getDetId();
363 if (did0==did1) ZDC_EID_pass++;
367 cout <<
"Checking detIds from electronics ids..." << endl;
368 cout <<
"HBHEHF EID (pass,fail) = (" << HBHEHF_EID_pass <<
"," << HBHEHF_EID_fail <<
")" << endl;
369 cout <<
"HOHX EID (pass,fail) = (" << HOHX_EID_pass <<
"," << HOHX_EID_fail <<
")" << endl;
370 cout <<
"CALIB EID (pass,fail) = (" << CALIB_EID_pass <<
"," << CALIB_EID_fail <<
")" << endl;
371 cout <<
"ZDC EID (pass,fail) = (" << ZDC_EID_pass <<
"," << ZDC_EID_fail <<
")" << endl;
373 cout <<
"Checking frontEndIds from electronics ids..." << endl;
374 cout <<
"HBHEHF FEID (pass,fail) = (" << HBHEHF_FEID_pass <<
"," << HBHEHF_FEID_fail <<
")" << endl;
375 cout <<
"HOHX FEID (pass,fail) = (" << HOHX_FEID_pass <<
"," << HOHX_FEID_fail <<
")" << endl;
376 cout <<
"CALIB FEID (pass,fail) = (" << CALIB_FEID_pass <<
"," << CALIB_FEID_fail <<
")" << endl;
381 std::vector<int> HB_Hashes_;
382 std::vector<int> HE_Hashes_;
383 std::vector<int> HF_Hashes_;
384 std::vector<int> HO_Hashes_;
385 std::vector<int> CALIBHX_Hashes_;
386 std::vector<int> ZDC_Hashes_;
387 std::vector<int> HT_Hashes_;
389 int numfails[7] = {0,0,0,0,0,0,0};
390 int numpass[7] = {0,0,0,0,0,0,0};
391 int numnotdense[7] = {0,0,0,0,0,0,0};
393 cout <<
"\nRunning the hash checker for detIds..." << endl;
398 else if (it->getDetId().subdetId()==
HcalEndcap) {
417 ZDC_Hashes_.push_back(
HcalZDCDetId(it->getDetId()).denseIndex());
419 for (std::vector<HTLogicalMapEntry>::iterator it =
HTEntries_.begin(); it!=
HTEntries_.end(); ++it) {
423 sort(HB_Hashes_.begin() , HB_Hashes_.end());
424 sort(HE_Hashes_.begin() , HE_Hashes_.end());
425 sort(HF_Hashes_.begin() , HF_Hashes_.end());
426 sort(HO_Hashes_.begin() , HO_Hashes_.end());
427 sort(CALIBHX_Hashes_.begin(), CALIBHX_Hashes_.end());
428 sort(ZDC_Hashes_.begin() , ZDC_Hashes_.end());
429 sort(HT_Hashes_.begin() , HT_Hashes_.end());
431 for(
unsigned int i = 0;
i<HB_Hashes_.size()-1;
i++) {
432 int diff = HB_Hashes_.at(
i+1)-HB_Hashes_.at(
i);
433 if (diff==0) numfails[0]++;
434 else if (diff>1) numnotdense[0]++;
437 for(
unsigned int i = 0;
i<HE_Hashes_.size()-1;
i++) {
438 int diff = HE_Hashes_.at(
i+1)-HE_Hashes_.at(
i);
439 if (diff==0) numfails[1]++;
440 else if (diff>1) numnotdense[1]++;
443 for(
unsigned int i = 0;
i<HF_Hashes_.size()-1;
i++) {
444 int diff = HF_Hashes_.at(
i+1)-HF_Hashes_.at(
i);
445 if (diff==0) numfails[2]++;
446 else if (diff>1) numnotdense[2]++;
449 for(
unsigned int i = 0;
i<HO_Hashes_.size()-1;
i++) {
450 int diff = HO_Hashes_.at(
i+1)-HO_Hashes_.at(
i);
451 if (diff==0) numfails[3]++;
452 else if (diff>1) numnotdense[3]++;
455 for(
unsigned int i = 0;
i<CALIBHX_Hashes_.size()-1;
i++) {
456 int diff = CALIBHX_Hashes_.at(
i+1)-CALIBHX_Hashes_.at(
i);
457 if (diff==0) numfails[4]++;
458 else if (diff>1) numnotdense[4]++;
461 for(
unsigned int i = 0;
i<ZDC_Hashes_.size()-1;
i++) {
462 int diff = ZDC_Hashes_.at(
i+1)-ZDC_Hashes_.at(
i);
463 if (diff==0) numfails[5]++;
464 else if (diff>1) numnotdense[5]++;
467 for(
unsigned int i = 0;
i<HT_Hashes_.size()-1;
i++) {
468 int diff = HT_Hashes_.at(
i+1)-HT_Hashes_.at(
i);
469 if (diff==0) numfails[6]++;
470 else if (diff>1) numnotdense[6]++;
473 cout <<
"HB HashIds (pass, collisions, non-dense) = (" << numpass[0] <<
"," << numfails[0] <<
"," << numnotdense[0] <<
")" << endl;
474 cout <<
"HE HashIds (pass, collisions, non-dense) = (" << numpass[1] <<
"," << numfails[1] <<
"," << numnotdense[1] <<
")" << endl;
475 cout <<
"HF HashIds (pass, collisions, non-dense) = (" << numpass[2] <<
"," << numfails[2] <<
"," << numnotdense[2] <<
")" << endl;
476 cout <<
"HO HashIds (pass, collisions, non-dense) = (" << numpass[3] <<
"," << numfails[3] <<
"," << numnotdense[3] <<
")" << endl;
477 cout <<
"CALIB/HX HashIds (pass, collisions, non-dense) = (" << numpass[4] <<
"," << numfails[4] <<
"," << numnotdense[4] <<
")" << endl;
478 cout <<
"ZDC HashIds (pass, collisions, non-dense) = (" << numpass[5] <<
"," << numfails[5] <<
"," << numnotdense[5] <<
")" << endl;
479 cout <<
"HT HashIds (pass, collisions, non-dense) = (" << numpass[6] <<
"," << numfails[6] <<
"," << numnotdense[6] <<
")" << endl;
483 std::vector<int> Electronics_Hashes_;
489 cout <<
"\nRunning the hash checker for electronics Ids..." << endl;
491 Electronics_Hashes_.push_back((it->getHcalElectronicsId()).linearIndex());
494 Electronics_Hashes_.push_back((it->getHcalElectronicsId()).linearIndex());
497 Electronics_Hashes_.push_back((it->getHcalElectronicsId()).linearIndex());
500 Electronics_Hashes_.push_back((it->getHcalElectronicsId()).linearIndex());
502 for (std::vector<HTLogicalMapEntry>::iterator it =
HTEntries_.begin(); it!=
HTEntries_.end(); ++it) {
503 Electronics_Hashes_.push_back((it->getHcalTrigElectronicsId()).linearIndex());
506 sort(Electronics_Hashes_.begin() , Electronics_Hashes_.end());
508 for(
unsigned int i = 0;
i<Electronics_Hashes_.size()-1;
i++) {
509 int diff = Electronics_Hashes_.at(
i+1)-Electronics_Hashes_.at(
i);
510 if (diff==0) numfails++;
511 else if (diff>1) numnotdense++;
514 cout <<
"Electronics Id linearIndex (pass, collisions, nondense) = (" << numpass <<
"," << numfails <<
"," << numnotdense <<
")" << endl;
bool mapEId2chId(HcalElectronicsId fElectronicsId, DetId fId)
CalibDetType calibFlavor() const
get the flavor of this calibration detid
static uint32_t makeEntryNumber(bool, int, int)
void printCalibMap(FILE *calibmapfile)
std::vector< uint32_t > HeHash2Entry_
std::unique_ptr< HcalElectronicsMap > generateHcalElectronicsMap()
void printHTMap(FILE *htmapfile)
unsigned int detId2denseIdHT(const DetId &id) const
return a linear packed id from HT
unsigned int detId2denseIdHF(const DetId &id) const
return a linear packed id from HF
std::vector< HBHEHFLogicalMapEntry > HBHEHFEntries_
void printHOXMap(FILE *hoxmapfile)
void printZDCMap(FILE *zdcmapfile)
unsigned int detId2denseIdHB(const DetId &id) const
return a linear packed id from HB
std::vector< uint32_t > HbHash2Entry_
std::vector< uint32_t > LinearIndex2Entry_
std::vector< uint32_t > HoHash2Entry_
std::vector< uint32_t > ZdcHash2Entry_
const HcalTopology * topo_
void checkElectronicsHashIds()
std::vector< HTLogicalMapEntry > HTEntries_
void printMap(unsigned int mapIOV)
bool mapEId2tId(HcalElectronicsId fElectronicsId, HcalTrigTowerDetId fTriggerId)
const HcalFrontEndId getHcalFrontEndId(const DetId &)
std::vector< HOHXLogicalMapEntry > HOHXEntries_
void printHBEFMap(FILE *hbefmapfile)
std::vector< uint32_t > HtHash2Entry_
std::vector< CALIBLogicalMapEntry > CALIBEntries_
const DetId getDetId(const HcalElectronicsId &)
std::vector< ZDCLogicalMapEntry > ZDCEntries_
std::vector< uint32_t > HxCalibHash2Entry_
int linearIndex() const
get a fast, compact, unique index for linear lookups
unsigned int detId2denseIdHO(const DetId &id) const
return a linear packed id from HO
unsigned int detId2denseIdHE(const DetId &id) const
return a linear packed id from HE
HcalGenericSubdetector genericSubdet() const
std::vector< uint32_t > HfHash2Entry_
unsigned int detId2denseIdCALIB(const DetId &id) const
return a linear packed id from CALIB
Readout chain identification for Hcal.
HcalLogicalMap(const HcalTopology *, std::vector< HBHEHFLogicalMapEntry > &, std::vector< HOHXLogicalMapEntry > &, std::vector< CALIBLogicalMapEntry > &, std::vector< ZDCLogicalMapEntry > &, std::vector< HTLogicalMapEntry > &, std::vector< uint32_t > &, std::vector< uint32_t > &, std::vector< uint32_t > &, std::vector< uint32_t > &, std::vector< uint32_t > &, std::vector< uint32_t > &, std::vector< uint32_t > &, std::vector< uint32_t > &)