File indexing completed on 2024-04-06 12:02:15
0001 #include "DataFormats/HcalDetId/interface/HcalGenericDetId.h"
0002 #include "DataFormats/HcalDetId/interface/HcalOtherDetId.h"
0003 #include "Geometry/CaloTopology/interface/HcalTopology.h"
0004 #include "CondFormats/HcalObjects/interface/HcalLogicalMap.h"
0005
0006 #include <string>
0007 #include <cstring>
0008 #include <iostream>
0009 #include <fstream>
0010 #include <sstream>
0011 #include <cstdio>
0012 #include <ctime>
0013 #include <memory>
0014
0015 using namespace std;
0016
0017 HcalLogicalMap::HcalLogicalMap(const HcalTopology* topo,
0018 std::vector<HBHEHFLogicalMapEntry>& HBHEHFEntries,
0019 std::vector<HOHXLogicalMapEntry>& HOHXEntries,
0020 std::vector<CALIBLogicalMapEntry>& CALIBEntries,
0021 std::vector<ZDCLogicalMapEntry>& ZDCEntries,
0022 std::vector<HTLogicalMapEntry>& HTEntries,
0023 std::vector<uint32_t>& LinearIndex2Entry,
0024 std::vector<uint32_t>& HbHash2Entry,
0025 std::vector<uint32_t>& HeHash2Entry,
0026 std::vector<uint32_t>& HfHash2Entry,
0027 std::vector<uint32_t>& HtHash2Entry,
0028 std::vector<uint32_t>& HoHash2Entry,
0029 std::vector<uint32_t>& HxCalibHash2Entry,
0030 std::vector<uint32_t>& ZdcHash2Entry)
0031 : topo_(topo)
0032
0033 {
0034 HBHEHFEntries_.resize(HBHEHFEntries.size());
0035 HOHXEntries_.resize(HOHXEntries.size());
0036 CALIBEntries_.resize(CALIBEntries.size());
0037 ZDCEntries_.resize(ZDCEntries.size());
0038 HTEntries_.resize(HTEntries.size());
0039
0040 LinearIndex2Entry_.resize(LinearIndex2Entry.size());
0041 HbHash2Entry_.resize(HbHash2Entry.size());
0042 HeHash2Entry_.resize(HeHash2Entry.size());
0043 HfHash2Entry_.resize(HfHash2Entry.size());
0044 HtHash2Entry_.resize(HtHash2Entry.size());
0045 HoHash2Entry_.resize(HoHash2Entry.size());
0046 HxCalibHash2Entry_.resize(HxCalibHash2Entry.size());
0047 ZdcHash2Entry_.resize(ZdcHash2Entry.size());
0048
0049 copy(HBHEHFEntries.begin(), HBHEHFEntries.end(), HBHEHFEntries_.begin());
0050 copy(HOHXEntries.begin(), HOHXEntries.end(), HOHXEntries_.begin());
0051 copy(CALIBEntries.begin(), CALIBEntries.end(), CALIBEntries_.begin());
0052 copy(ZDCEntries.begin(), ZDCEntries.end(), ZDCEntries_.begin());
0053 copy(HTEntries.begin(), HTEntries.end(), HTEntries_.begin());
0054 copy(LinearIndex2Entry.begin(), LinearIndex2Entry.end(), LinearIndex2Entry_.begin());
0055 copy(HbHash2Entry.begin(), HbHash2Entry.end(), HbHash2Entry_.begin());
0056 copy(HeHash2Entry.begin(), HeHash2Entry.end(), HeHash2Entry_.begin());
0057 copy(HfHash2Entry.begin(), HfHash2Entry.end(), HfHash2Entry_.begin());
0058 copy(HtHash2Entry.begin(), HtHash2Entry.end(), HtHash2Entry_.begin());
0059 copy(HoHash2Entry.begin(), HoHash2Entry.end(), HoHash2Entry_.begin());
0060 copy(HxCalibHash2Entry.begin(), HxCalibHash2Entry.end(), HxCalibHash2Entry_.begin());
0061 copy(ZdcHash2Entry.begin(), ZdcHash2Entry.end(), ZdcHash2Entry_.begin());
0062 }
0063
0064 HcalLogicalMap::~HcalLogicalMap() {}
0065
0066 uint32_t HcalLogicalMap::makeEntryNumber(bool isvalid, int vectorid, int entry) {
0067 uint32_t answer = 0;
0068 answer |= isvalid;
0069 answer |= (vectorid & 0x3) << 1;
0070 answer |= entry << 3;
0071 return answer;
0072 }
0073
0074 void HcalLogicalMap::printMap(unsigned int mapIOV) {
0075 using namespace std;
0076
0077 static FILE* HBEFmap;
0078 static FILE* HOXmap;
0079 static FILE* CALIBmap;
0080 static FILE* ZDCmap;
0081 static FILE* HTmap;
0082
0083 char tempbuff[30];
0084
0085 stringstream mystream;
0086 string HBEFmapstr, HOXmapstr, CALIBmapstr, ZDCmapstr, HTmapstr;
0087 string date;
0088 string IOVlabel;
0089
0090 time_t myTime;
0091 time(&myTime);
0092
0093 strftime(tempbuff, 128, "%d.%b.%Y", localtime(&myTime));
0094 mystream << tempbuff;
0095 date = mystream.str();
0096
0097 mystream.str("");
0098 if (mapIOV == 1)
0099 IOVlabel = "A";
0100 else if (mapIOV == 2)
0101 IOVlabel = "B";
0102 else if (mapIOV == 3)
0103 IOVlabel = "C";
0104 else if (mapIOV == 4)
0105 IOVlabel = "D";
0106 else
0107 IOVlabel = "E";
0108
0109 HBEFmapstr = "./HCALmapHBEF_" + IOVlabel + ".txt";
0110 HOXmapstr = "./HCALmapHO_" + IOVlabel + ".txt";
0111 CALIBmapstr = "./HCALmapCALIB_" + IOVlabel + ".txt";
0112 ZDCmapstr = "./ZDCmap_" + IOVlabel + ".txt";
0113 HTmapstr = "./HCALmapHT_" + IOVlabel + ".txt";
0114
0115
0116
0117
0118
0119
0120
0121 HBEFmap = fopen(HBEFmapstr.c_str(), "w");
0122 HOXmap = fopen(HOXmapstr.c_str(), "w");
0123 CALIBmap = fopen(CALIBmapstr.c_str(), "w");
0124 ZDCmap = fopen(ZDCmapstr.c_str(), "w");
0125 HTmap = fopen(HTmapstr.c_str(), "w");
0126
0127
0128 if (HBEFmap) {
0129 fprintf(HBEFmap, "## file created %s ##\n", date.c_str());
0130 printHBEFMap(HBEFmap);
0131 } else
0132 cout << HBEFmapstr << " not found!" << endl;
0133
0134 if (HOXmap) {
0135 fprintf(HOXmap, "## file created %s ##\n", date.c_str());
0136 printHOXMap(HOXmap);
0137 } else
0138 cout << HOXmapstr << " not found!" << endl;
0139
0140 if (CALIBmap) {
0141 fprintf(CALIBmap, "## file created %s ##\n", date.c_str());
0142 printCalibMap(CALIBmap);
0143 } else
0144 cout << CALIBmapstr << " not found!" << endl;
0145
0146 if (ZDCmap) {
0147 fprintf(ZDCmap, "## file created %s ##\n", date.c_str());
0148 printZDCMap(ZDCmap);
0149 } else
0150 cout << ZDCmapstr << " not found!" << endl;
0151
0152 if (HTmap) {
0153 fprintf(HTmap, "## file created %s ##\n", date.c_str());
0154 printHTMap(HTmap);
0155 } else
0156 cout << HTmapstr << " not found!" << endl;
0157 }
0158
0159
0160 std::unique_ptr<HcalElectronicsMap> HcalLogicalMap::generateHcalElectronicsMap() {
0161 HcalElectronicsMapAddons::Helper theemapHelper;
0162
0163 for (std::vector<HBHEHFLogicalMapEntry>::iterator it = HBHEHFEntries_.begin(); it != HBHEHFEntries_.end(); ++it) {
0164 theemapHelper.mapEId2chId(it->getHcalElectronicsId(), it->getDetId());
0165 }
0166 for (std::vector<HOHXLogicalMapEntry>::iterator it = HOHXEntries_.begin(); it != HOHXEntries_.end(); ++it) {
0167 theemapHelper.mapEId2chId(it->getHcalElectronicsId(), it->getDetId());
0168 }
0169 for (std::vector<CALIBLogicalMapEntry>::iterator it = CALIBEntries_.begin(); it != CALIBEntries_.end(); ++it) {
0170 theemapHelper.mapEId2chId(it->getHcalElectronicsId(), it->getDetId());
0171 }
0172 for (std::vector<ZDCLogicalMapEntry>::iterator it = ZDCEntries_.begin(); it != ZDCEntries_.end(); ++it) {
0173 theemapHelper.mapEId2chId(it->getHcalElectronicsId(), it->getDetId());
0174 }
0175 for (std::vector<HTLogicalMapEntry>::iterator it = HTEntries_.begin(); it != HTEntries_.end(); ++it) {
0176 theemapHelper.mapEId2tId(it->getHcalTrigElectronicsId(), it->getDetId());
0177 }
0178 return std::make_unique<HcalElectronicsMap>(theemapHelper);
0179 }
0180
0181
0182 void HcalLogicalMap::printHBEFMap(FILE* hbefmapfile) {
0183 int titlecounter = 0;
0184
0185 for (std::vector<HBHEHFLogicalMapEntry>::iterator it = HBHEHFEntries_.begin(); it != HBHEHFEntries_.end(); ++it) {
0186 titlecounter = titlecounter % 21;
0187 if (titlecounter == 0) {
0188 fprintf(hbefmapfile, "# side eta phi dphi depth det rbx wedge rm pixel qie adc");
0189 fprintf(hbefmapfile, " rm_fi fi_ch crate htr fpga htr_fi dcc_sl spigo dcc slb slbin slbin2");
0190 fprintf(hbefmapfile, " slnam rctcra rctcar rctcon rctnam fedid\n");
0191 }
0192 titlecounter++;
0193 fprintf(hbefmapfile, "%s", it->printLMapLine());
0194 }
0195 }
0196
0197 void HcalLogicalMap::printHOXMap(FILE* hoxmapfile) {
0198 int titlecounter = 0;
0199
0200 for (std::vector<HOHXLogicalMapEntry>::iterator it = HOHXEntries_.begin(); it != HOHXEntries_.end(); ++it) {
0201 titlecounter = titlecounter % 21;
0202 if (titlecounter == 0) {
0203 fprintf(hoxmapfile, "# side eta phi dphi depth det rbx sector rm pixel qie adc");
0204 fprintf(hoxmapfile, " rm_fi fi_ch let_code crate htr fpga htr_fi dcc_sl spigo dcc fedid\n");
0205 }
0206 titlecounter++;
0207 fprintf(hoxmapfile, "%s", it->printLMapLine());
0208 }
0209 }
0210
0211 void HcalLogicalMap::printCalibMap(FILE* calibmapfile) {
0212 int titlecounter = 0;
0213
0214 for (std::vector<CALIBLogicalMapEntry>::iterator it = CALIBEntries_.begin(); it != CALIBEntries_.end(); ++it) {
0215 titlecounter = titlecounter % 21;
0216 if (titlecounter == 0) {
0217 fprintf(calibmapfile, "# side eta phi dphi det rbx sector rm rm_fi ");
0218 fprintf(calibmapfile, " fi_ch crate htr fpga htr_fi dcc_sl spigo dcc fedid ch_type name\n");
0219 }
0220 titlecounter++;
0221 fprintf(calibmapfile, "%s", it->printLMapLine());
0222 }
0223 }
0224
0225 void HcalLogicalMap::printZDCMap(FILE* zdcmapfile) {
0226 int titlecounter = 0;
0227
0228 for (std::vector<ZDCLogicalMapEntry>::iterator it = ZDCEntries_.begin(); it != ZDCEntries_.end(); ++it) {
0229 titlecounter = titlecounter % 21;
0230 if (titlecounter == 0) {
0231 fprintf(zdcmapfile, "# side x y dx depth det det_ch cable rm qie ");
0232 fprintf(zdcmapfile, " adc rm_fi fi_ch crate htr fpga htr_fi dcc_sl spigo dcc fedid\n");
0233 }
0234 titlecounter++;
0235 fprintf(zdcmapfile, "%s", it->printLMapLine());
0236 }
0237 }
0238
0239 void HcalLogicalMap::printHTMap(FILE* htmapfile) {
0240 int titlecounter = 0;
0241
0242 for (std::vector<HTLogicalMapEntry>::iterator it = HTEntries_.begin(); it != HTEntries_.end(); ++it) {
0243 titlecounter = titlecounter % 21;
0244 if (titlecounter == 0) {
0245 fprintf(htmapfile, "# side eta phi dphi depth det wedge crate");
0246 fprintf(htmapfile, " htr fpga dcc_sl spigo dcc slb slbin slbin2 nDat ");
0247 fprintf(htmapfile, " slnam rctcra rctcar rctcon rctnam fedid\n");
0248 }
0249 titlecounter++;
0250 fprintf(htmapfile, "%s", it->printLMapLine());
0251 }
0252 }
0253
0254 const DetId HcalLogicalMap::getDetId(const HcalElectronicsId& eid) {
0255 const uint32_t entry = LinearIndex2Entry_.at(eid.linearIndex());
0256 if (!(entry & 0x1))
0257 return DetId(0);
0258 if (((entry >> 1) & 0x3) == 0)
0259 return HBHEHFEntries_.at(entry >> 3).getDetId();
0260 if (((entry >> 1) & 0x3) == 1)
0261 return HOHXEntries_.at(entry >> 3).getDetId();
0262 if (((entry >> 1) & 0x3) == 2)
0263 return CALIBEntries_.at(entry >> 3).getDetId();
0264 if (((entry >> 1) & 0x3) == 3)
0265 return ZDCEntries_.at(entry >> 3).getDetId();
0266 return DetId(0);
0267 }
0268
0269 const HcalFrontEndId HcalLogicalMap::getHcalFrontEndId(const DetId& did) {
0270 const HcalGenericDetId hgdi(did);
0271
0272 const HcalGenericDetId::HcalGenericSubdetector hgsd = hgdi.genericSubdet();
0273 if (hgsd == HcalGenericDetId::HcalGenBarrel) {
0274 const int hashedId = topo_->detId2denseIdHB(did);
0275 const uint32_t entry = HbHash2Entry_.at(hashedId) - 1;
0276 return HBHEHFEntries_.at(entry).getHcalFrontEndId();
0277 } else if (hgsd == HcalGenericDetId::HcalGenEndcap) {
0278 const int hashedId = topo_->detId2denseIdHE(did);
0279 const uint32_t entry = HeHash2Entry_.at(hashedId) - 1;
0280 return HBHEHFEntries_.at(entry).getHcalFrontEndId();
0281 } else if (hgsd == HcalGenericDetId::HcalGenForward) {
0282 const int hashedId = topo_->detId2denseIdHF(did);
0283 const uint32_t entry = HfHash2Entry_.at(hashedId) - 1;
0284 return HBHEHFEntries_.at(entry).getHcalFrontEndId();
0285 } else if (hgsd == HcalGenericDetId::HcalGenOuter) {
0286 const int hashedId = topo_->detId2denseIdHO(did);
0287 const uint32_t entry = HoHash2Entry_.at(hashedId) - 1;
0288 return HOHXEntries_.at(entry).getHcalFrontEndId();
0289 } else if (hgsd == HcalGenericDetId::HcalGenCalibration) {
0290 HcalCalibDetId hcid(did);
0291 if (hcid.calibFlavor() == HcalCalibDetId::HOCrosstalk) {
0292 const int hashedId = topo_->detId2denseIdCALIB(did);
0293 const uint32_t entry = HxCalibHash2Entry_.at(hashedId) - 1;
0294 return HOHXEntries_.at(entry).getHcalFrontEndId();
0295 } else if (hcid.calibFlavor() == HcalCalibDetId::CalibrationBox) {
0296 const int hashedId = topo_->detId2denseIdCALIB(did);
0297 const uint32_t entry = HxCalibHash2Entry_.at(hashedId) - 1;
0298 return CALIBEntries_.at(entry).getHcalFrontEndId();
0299 }
0300 }
0301 return HcalFrontEndId(0);
0302 }
0303
0304 void HcalLogicalMap::checkIdFunctions() {
0305 int HBHEHF_EID_pass = 0;
0306 int HBHEHF_EID_fail = 0;
0307 int HOHX_EID_pass = 0;
0308 int HOHX_EID_fail = 0;
0309 int CALIB_EID_pass = 0;
0310 int CALIB_EID_fail = 0;
0311 int ZDC_EID_pass = 0;
0312 int ZDC_EID_fail = 0;
0313
0314 int HBHEHF_FEID_pass = 0;
0315 int HBHEHF_FEID_fail = 0;
0316 int HOHX_FEID_pass = 0;
0317 int HOHX_FEID_fail = 0;
0318 int CALIB_FEID_pass = 0;
0319 int CALIB_FEID_fail = 0;
0320
0321 cout << "\nRunning the id function checker..." << endl;
0322
0323 for (std::vector<HBHEHFLogicalMapEntry>::iterator it = HBHEHFEntries_.begin(); it != HBHEHFEntries_.end(); ++it) {
0324 const HcalElectronicsId heid = it->getHcalElectronicsId();
0325 const DetId did0 = it->getDetId();
0326 const DetId did1 = getDetId(heid);
0327 if (did0 == did1)
0328 HBHEHF_EID_pass++;
0329 else
0330 HBHEHF_EID_fail++;
0331
0332 const HcalFrontEndId hfeid0 = it->getHcalFrontEndId();
0333 const HcalFrontEndId hfeid1 = getHcalFrontEndId(did0);
0334 if (hfeid0 == hfeid1)
0335 HBHEHF_FEID_pass++;
0336 else
0337 HBHEHF_FEID_fail++;
0338 }
0339 for (std::vector<HOHXLogicalMapEntry>::iterator it = HOHXEntries_.begin(); it != HOHXEntries_.end(); ++it) {
0340 const HcalElectronicsId heid = it->getHcalElectronicsId();
0341 const DetId did0 = it->getDetId();
0342 const DetId did1 = getDetId(heid);
0343 if (did0 == did1)
0344 HOHX_EID_pass++;
0345 else
0346 HOHX_EID_fail++;
0347
0348 const HcalFrontEndId hfeid0 = it->getHcalFrontEndId();
0349 const HcalFrontEndId hfeid1 = getHcalFrontEndId(did0);
0350 if (hfeid0 == hfeid1)
0351 HOHX_FEID_pass++;
0352 else
0353 HOHX_FEID_fail++;
0354 }
0355 for (std::vector<CALIBLogicalMapEntry>::iterator it = CALIBEntries_.begin(); it != CALIBEntries_.end(); ++it) {
0356 const HcalElectronicsId heid = it->getHcalElectronicsId();
0357 const DetId did0 = it->getDetId();
0358 const DetId did1 = getDetId(heid);
0359 if (did0 == did1)
0360 CALIB_EID_pass++;
0361 else
0362 CALIB_EID_fail++;
0363
0364 const HcalFrontEndId hfeid0 = it->getHcalFrontEndId();
0365 const HcalFrontEndId hfeid1 = getHcalFrontEndId(did0);
0366 if (hfeid0 == hfeid1)
0367 CALIB_FEID_pass++;
0368 else
0369 CALIB_FEID_fail++;
0370 }
0371 for (std::vector<ZDCLogicalMapEntry>::iterator it = ZDCEntries_.begin(); it != ZDCEntries_.end(); ++it) {
0372 const HcalElectronicsId heid = it->getHcalElectronicsId();
0373 const DetId did0 = it->getDetId();
0374 const DetId did1 = getDetId(heid);
0375 if (did0 == did1)
0376 ZDC_EID_pass++;
0377 else
0378 ZDC_EID_fail++;
0379 }
0380
0381 cout << "Checking detIds from electronics ids..." << endl;
0382 cout << "HBHEHF EID (pass,fail) = (" << HBHEHF_EID_pass << "," << HBHEHF_EID_fail << ")" << endl;
0383 cout << "HOHX EID (pass,fail) = (" << HOHX_EID_pass << "," << HOHX_EID_fail << ")" << endl;
0384 cout << "CALIB EID (pass,fail) = (" << CALIB_EID_pass << "," << CALIB_EID_fail << ")" << endl;
0385 cout << "ZDC EID (pass,fail) = (" << ZDC_EID_pass << "," << ZDC_EID_fail << ")" << endl;
0386 cout << endl;
0387 cout << "Checking frontEndIds from electronics ids..." << endl;
0388 cout << "HBHEHF FEID (pass,fail) = (" << HBHEHF_FEID_pass << "," << HBHEHF_FEID_fail << ")" << endl;
0389 cout << "HOHX FEID (pass,fail) = (" << HOHX_FEID_pass << "," << HOHX_FEID_fail << ")" << endl;
0390 cout << "CALIB FEID (pass,fail) = (" << CALIB_FEID_pass << "," << CALIB_FEID_fail << ")" << endl;
0391 }
0392
0393 void HcalLogicalMap::checkHashIds() {
0394 std::vector<int> HB_Hashes_;
0395 std::vector<int> HE_Hashes_;
0396 std::vector<int> HF_Hashes_;
0397 std::vector<int> HO_Hashes_;
0398 std::vector<int> CALIBHX_Hashes_;
0399 std::vector<int> ZDC_Hashes_;
0400 std::vector<int> HT_Hashes_;
0401
0402 int numfails[7] = {0, 0, 0, 0, 0, 0, 0};
0403 int numpass[7] = {0, 0, 0, 0, 0, 0, 0};
0404 int numnotdense[7] = {0, 0, 0, 0, 0, 0, 0};
0405
0406 cout << "\nRunning the hash checker for detIds..." << endl;
0407 for (std::vector<HBHEHFLogicalMapEntry>::iterator it = HBHEHFEntries_.begin(); it != HBHEHFEntries_.end(); ++it) {
0408 if (it->getDetId().subdetId() == HcalBarrel) {
0409 HB_Hashes_.push_back(topo_->detId2denseIdHB(it->getDetId()));
0410 } else if (it->getDetId().subdetId() == HcalEndcap) {
0411 HE_Hashes_.push_back(topo_->detId2denseIdHE(it->getDetId()));
0412 } else if (it->getDetId().subdetId() == HcalForward) {
0413 HF_Hashes_.push_back(topo_->detId2denseIdHF(it->getDetId()));
0414 }
0415 }
0416 for (std::vector<HOHXLogicalMapEntry>::iterator it = HOHXEntries_.begin(); it != HOHXEntries_.end(); ++it) {
0417 if (HcalGenericDetId(it->getDetId().rawId()).isHcalCalibDetId()) {
0418 CALIBHX_Hashes_.push_back(topo_->detId2denseIdCALIB(it->getDetId()));
0419 } else {
0420 HO_Hashes_.push_back(topo_->detId2denseIdHO(it->getDetId()));
0421 }
0422 }
0423 for (std::vector<CALIBLogicalMapEntry>::iterator it = CALIBEntries_.begin(); it != CALIBEntries_.end(); ++it) {
0424 CALIBHX_Hashes_.push_back(topo_->detId2denseIdCALIB(it->getDetId()));
0425 }
0426 for (std::vector<ZDCLogicalMapEntry>::iterator it = ZDCEntries_.begin(); it != ZDCEntries_.end(); ++it) {
0427 ZDC_Hashes_.push_back(HcalZDCDetId(it->getDetId()).denseIndex());
0428 }
0429 for (std::vector<HTLogicalMapEntry>::iterator it = HTEntries_.begin(); it != HTEntries_.end(); ++it) {
0430 HT_Hashes_.push_back(topo_->detId2denseIdHT(it->getDetId()));
0431 }
0432
0433 sort(HB_Hashes_.begin(), HB_Hashes_.end());
0434 sort(HE_Hashes_.begin(), HE_Hashes_.end());
0435 sort(HF_Hashes_.begin(), HF_Hashes_.end());
0436 sort(HO_Hashes_.begin(), HO_Hashes_.end());
0437 sort(CALIBHX_Hashes_.begin(), CALIBHX_Hashes_.end());
0438 sort(ZDC_Hashes_.begin(), ZDC_Hashes_.end());
0439 sort(HT_Hashes_.begin(), HT_Hashes_.end());
0440
0441 for (unsigned int i = 0; i < HB_Hashes_.size() - 1; i++) {
0442 int diff = HB_Hashes_.at(i + 1) - HB_Hashes_.at(i);
0443 if (diff == 0)
0444 numfails[0]++;
0445 else if (diff > 1)
0446 numnotdense[0]++;
0447 else
0448 numpass[0]++;
0449 }
0450 for (unsigned int i = 0; i < HE_Hashes_.size() - 1; i++) {
0451 int diff = HE_Hashes_.at(i + 1) - HE_Hashes_.at(i);
0452 if (diff == 0)
0453 numfails[1]++;
0454 else if (diff > 1)
0455 numnotdense[1]++;
0456 else
0457 numpass[1]++;
0458 }
0459 for (unsigned int i = 0; i < HF_Hashes_.size() - 1; i++) {
0460 int diff = HF_Hashes_.at(i + 1) - HF_Hashes_.at(i);
0461 if (diff == 0)
0462 numfails[2]++;
0463 else if (diff > 1)
0464 numnotdense[2]++;
0465 else
0466 numpass[2]++;
0467 }
0468 for (unsigned int i = 0; i < HO_Hashes_.size() - 1; i++) {
0469 int diff = HO_Hashes_.at(i + 1) - HO_Hashes_.at(i);
0470 if (diff == 0)
0471 numfails[3]++;
0472 else if (diff > 1)
0473 numnotdense[3]++;
0474 else
0475 numpass[3]++;
0476 }
0477 for (unsigned int i = 0; i < CALIBHX_Hashes_.size() - 1; i++) {
0478 int diff = CALIBHX_Hashes_.at(i + 1) - CALIBHX_Hashes_.at(i);
0479 if (diff == 0)
0480 numfails[4]++;
0481 else if (diff > 1)
0482 numnotdense[4]++;
0483 else
0484 numpass[4]++;
0485 }
0486 for (unsigned int i = 0; i < ZDC_Hashes_.size() - 1; i++) {
0487 int diff = ZDC_Hashes_.at(i + 1) - ZDC_Hashes_.at(i);
0488 if (diff == 0)
0489 numfails[5]++;
0490 else if (diff > 1)
0491 numnotdense[5]++;
0492 else
0493 numpass[5]++;
0494 }
0495 for (unsigned int i = 0; i < HT_Hashes_.size() - 1; i++) {
0496 int diff = HT_Hashes_.at(i + 1) - HT_Hashes_.at(i);
0497 if (diff == 0)
0498 numfails[6]++;
0499 else if (diff > 1)
0500 numnotdense[6]++;
0501 else
0502 numpass[6]++;
0503 }
0504 cout << "HB HashIds (pass, collisions, non-dense) = (" << numpass[0] << "," << numfails[0] << "," << numnotdense[0]
0505 << ")" << endl;
0506 cout << "HE HashIds (pass, collisions, non-dense) = (" << numpass[1] << "," << numfails[1] << "," << numnotdense[1]
0507 << ")" << endl;
0508 cout << "HF HashIds (pass, collisions, non-dense) = (" << numpass[2] << "," << numfails[2] << "," << numnotdense[2]
0509 << ")" << endl;
0510 cout << "HO HashIds (pass, collisions, non-dense) = (" << numpass[3] << "," << numfails[3] << "," << numnotdense[3]
0511 << ")" << endl;
0512 cout << "CALIB/HX HashIds (pass, collisions, non-dense) = (" << numpass[4] << "," << numfails[4] << ","
0513 << numnotdense[4] << ")" << endl;
0514 cout << "ZDC HashIds (pass, collisions, non-dense) = (" << numpass[5] << "," << numfails[5] << "," << numnotdense[5]
0515 << ")" << endl;
0516 cout << "HT HashIds (pass, collisions, non-dense) = (" << numpass[6] << "," << numfails[6] << "," << numnotdense[6]
0517 << ")" << endl;
0518 }
0519
0520 void HcalLogicalMap::checkElectronicsHashIds() {
0521 std::vector<int> Electronics_Hashes_;
0522
0523 int numfails = 0;
0524 int numpass = 0;
0525 int numnotdense = 0;
0526
0527 cout << "\nRunning the hash checker for electronics Ids..." << endl;
0528 for (std::vector<HBHEHFLogicalMapEntry>::iterator it = HBHEHFEntries_.begin(); it != HBHEHFEntries_.end(); ++it) {
0529 Electronics_Hashes_.push_back((it->getHcalElectronicsId()).linearIndex());
0530 }
0531 for (std::vector<ZDCLogicalMapEntry>::iterator it = ZDCEntries_.begin(); it != ZDCEntries_.end(); ++it) {
0532 Electronics_Hashes_.push_back((it->getHcalElectronicsId()).linearIndex());
0533 }
0534 for (std::vector<CALIBLogicalMapEntry>::iterator it = CALIBEntries_.begin(); it != CALIBEntries_.end(); ++it) {
0535 Electronics_Hashes_.push_back((it->getHcalElectronicsId()).linearIndex());
0536 }
0537 for (std::vector<HOHXLogicalMapEntry>::iterator it = HOHXEntries_.begin(); it != HOHXEntries_.end(); ++it) {
0538 Electronics_Hashes_.push_back((it->getHcalElectronicsId()).linearIndex());
0539 }
0540 for (std::vector<HTLogicalMapEntry>::iterator it = HTEntries_.begin(); it != HTEntries_.end(); ++it) {
0541 Electronics_Hashes_.push_back((it->getHcalTrigElectronicsId()).linearIndex());
0542 }
0543
0544 sort(Electronics_Hashes_.begin(), Electronics_Hashes_.end());
0545
0546 for (unsigned int i = 0; i < Electronics_Hashes_.size() - 1; i++) {
0547 int diff = Electronics_Hashes_.at(i + 1) - Electronics_Hashes_.at(i);
0548 if (diff == 0)
0549 numfails++;
0550 else if (diff > 1)
0551 numnotdense++;
0552 else
0553 numpass++;
0554 }
0555 cout << "Electronics Id linearIndex (pass, collisions, nondense) = (" << numpass << "," << numfails << ","
0556 << numnotdense << ")" << endl;
0557 }