00001 #include "DataFormats/HcalDetId/interface/HcalGenericDetId.h"
00002 #include "DataFormats/HcalDetId/interface/HcalOtherDetId.h"
00003
00004 #include "CondFormats/HcalObjects/interface/HcalLogicalMap.h"
00005
00006 #include <string>
00007 #include <cstring>
00008 #include <iostream>
00009 #include <fstream>
00010 #include <sstream>
00011 #include <stdio.h>
00012 #include <time.h>
00013
00014 using namespace std;
00015
00016 HcalLogicalMap::HcalLogicalMap(std::vector<HBHEHFLogicalMapEntry>& HBHEHFEntries,
00017 std::vector<HOHXLogicalMapEntry>& HOHXEntries,
00018 std::vector<CALIBLogicalMapEntry>& CALIBEntries,
00019 std::vector<ZDCLogicalMapEntry>& ZDCEntries,
00020 std::vector<HTLogicalMapEntry>& HTEntries,
00021 std::vector<uint32_t>& LinearIndex2Entry,
00022 std::vector<uint32_t>& HbHash2Entry,
00023 std::vector<uint32_t>& HeHash2Entry,
00024 std::vector<uint32_t>& HfHash2Entry,
00025 std::vector<uint32_t>& HtHash2Entry,
00026 std::vector<uint32_t>& HoHash2Entry,
00027 std::vector<uint32_t>& HxCalibHash2Entry,
00028 std::vector<uint32_t>& ZdcHash2Entry)
00029
00030 {
00031 HBHEHFEntries_.resize(HBHEHFEntries.size());
00032 HOHXEntries_.resize(HOHXEntries.size());
00033 CALIBEntries_.resize(CALIBEntries.size());
00034 ZDCEntries_.resize(ZDCEntries.size());
00035 HTEntries_.resize(HTEntries.size());
00036
00037 LinearIndex2Entry_.resize(LinearIndex2Entry.size());
00038 HbHash2Entry_.resize(HbHash2Entry.size());
00039 HeHash2Entry_.resize(HeHash2Entry.size());
00040 HfHash2Entry_.resize(HfHash2Entry.size());
00041 HtHash2Entry_.resize(HtHash2Entry.size());
00042 HoHash2Entry_.resize(HoHash2Entry.size());
00043 HxCalibHash2Entry_.resize(HxCalibHash2Entry.size());
00044 ZdcHash2Entry_.resize(ZdcHash2Entry.size());
00045
00046 copy(HBHEHFEntries.begin(),HBHEHFEntries.end(),HBHEHFEntries_.begin());
00047 copy(HOHXEntries.begin(),HOHXEntries.end(),HOHXEntries_.begin());
00048 copy(CALIBEntries.begin(),CALIBEntries.end(),CALIBEntries_.begin());
00049 copy(ZDCEntries.begin(),ZDCEntries.end(),ZDCEntries_.begin());
00050 copy(HTEntries.begin(),HTEntries.end(),HTEntries_.begin());
00051 copy(LinearIndex2Entry.begin(),LinearIndex2Entry.end(),LinearIndex2Entry_.begin());
00052 copy(HbHash2Entry.begin(),HbHash2Entry.end(),HbHash2Entry_.begin());
00053 copy(HeHash2Entry.begin(),HeHash2Entry.end(),HeHash2Entry_.begin());
00054 copy(HfHash2Entry.begin(),HfHash2Entry.end(),HfHash2Entry_.begin());
00055 copy(HtHash2Entry.begin(),HtHash2Entry.end(),HtHash2Entry_.begin());
00056 copy(HoHash2Entry.begin(),HoHash2Entry.end(),HoHash2Entry_.begin());
00057 copy(HxCalibHash2Entry.begin(),HxCalibHash2Entry.end(),HxCalibHash2Entry_.begin());
00058 copy(ZdcHash2Entry.begin(),ZdcHash2Entry.end(),ZdcHash2Entry_.begin());
00059 }
00060
00061 HcalLogicalMap::~HcalLogicalMap()
00062 {
00063 }
00064
00065 uint32_t HcalLogicalMap::makeEntryNumber(bool isvalid, int vectorid, int entry)
00066 {
00067 uint32_t answer=0;
00068 answer|=isvalid;
00069 answer|=(vectorid&0x3)<<1;
00070 answer|=entry<<3;
00071 return answer;
00072 }
00073
00074 void HcalLogicalMap::printMap( unsigned int mapIOV ){
00075 using namespace std;
00076
00077 static FILE* HBEFmap;
00078 static FILE* HOXmap;
00079 static FILE* CALIBmap;
00080 static FILE* ZDCmap;
00081 static FILE* HTmap;
00082
00083 char tempbuff[30];
00084
00085 stringstream mystream;
00086 string HBEFmapstr, HOXmapstr, CALIBmapstr, ZDCmapstr, HTmapstr;
00087 string date;
00088 string IOVlabel;
00089
00090 time_t myTime;
00091 time(&myTime);
00092
00093 strftime(tempbuff,128,"%d.%b.%Y",localtime(&myTime) );
00094 mystream<<tempbuff;
00095 date= mystream.str();
00096
00097 mystream.str("");
00098 if (mapIOV==1) IOVlabel = "A";
00099 else if (mapIOV==2) IOVlabel = "B";
00100 else if (mapIOV==3) IOVlabel = "C";
00101 else IOVlabel = "D";
00102
00103 HBEFmapstr = "./HCALmapHBEF_"+IOVlabel+".txt";
00104 HOXmapstr = "./HCALmapHO_"+IOVlabel+".txt";
00105 CALIBmapstr = "./HCALmapCALIB_"+IOVlabel+".txt";
00106 ZDCmapstr = "./ZDCmap_"+IOVlabel+".txt";
00107 HTmapstr = "./HCALmapHT_"+IOVlabel+".txt";
00108
00109
00110
00111
00112
00113
00114
00115 HBEFmap = fopen(HBEFmapstr.c_str(),"w");
00116 HOXmap = fopen(HOXmapstr.c_str(),"w");
00117 CALIBmap = fopen(CALIBmapstr.c_str(),"w");
00118 ZDCmap = fopen(ZDCmapstr.c_str(),"w");
00119 HTmap = fopen(HTmapstr.c_str(),"w");
00120
00121
00122 if(HBEFmap) {
00123 fprintf(HBEFmap,"## file created %s ##\n",date.c_str());
00124 printHBEFMap(HBEFmap);
00125 }
00126 else cout <<HBEFmapstr<<" not found!"<<endl;
00127
00128 if(HOXmap) {
00129 fprintf(HOXmap,"## file created %s ##\n",date.c_str());
00130 printHOXMap(HOXmap);
00131 }
00132 else cout <<HOXmapstr<<" not found!"<<endl;
00133
00134 if(CALIBmap) {
00135 fprintf(CALIBmap,"## file created %s ##\n",date.c_str());
00136 printCalibMap(CALIBmap);
00137 }
00138 else cout <<CALIBmapstr<<" not found!"<<endl;
00139
00140 if(ZDCmap) {
00141 fprintf(ZDCmap,"## file created %s ##\n",date.c_str());
00142 printZDCMap(ZDCmap);
00143 }
00144 else cout <<ZDCmapstr<<" not found!"<<endl;
00145
00146 if(HTmap) {
00147 fprintf(HTmap,"## file created %s ##\n",date.c_str());
00148 printHTMap(HTmap);
00149 }
00150 else cout <<HTmapstr<<" not found!"<<endl;
00151
00152 }
00153
00154
00155 HcalElectronicsMap HcalLogicalMap::generateHcalElectronicsMap()
00156 {
00157 HcalElectronicsMap* theemap = new HcalElectronicsMap();
00158
00159 for (std::vector<HBHEHFLogicalMapEntry>::iterator it = HBHEHFEntries_.begin(); it!=HBHEHFEntries_.end(); ++it) {
00160 theemap->mapEId2chId( it->getHcalElectronicsId(), it->getDetId() );}
00161 for (std::vector<HOHXLogicalMapEntry>::iterator it = HOHXEntries_.begin(); it!=HOHXEntries_.end(); ++it) {
00162 theemap->mapEId2chId( it->getHcalElectronicsId(), it->getDetId() );}
00163 for (std::vector<CALIBLogicalMapEntry>::iterator it = CALIBEntries_.begin(); it!=CALIBEntries_.end(); ++it) {
00164 theemap->mapEId2chId( it->getHcalElectronicsId(), it->getDetId() );}
00165 for (std::vector<ZDCLogicalMapEntry>::iterator it = ZDCEntries_.begin(); it!=ZDCEntries_.end(); ++it) {
00166 theemap->mapEId2chId( it->getHcalElectronicsId(), it->getDetId() );}
00167 for (std::vector<HTLogicalMapEntry>::iterator it = HTEntries_.begin(); it!=HTEntries_.end(); ++it) {
00168 theemap->mapEId2tId( it->getHcalTrigElectronicsId(), it->getDetId() );}
00169 theemap->sort();
00170 return *theemap;
00171 }
00172
00173
00174 void HcalLogicalMap::printHBEFMap(FILE* hbefmapfile){
00175 int titlecounter = 0;
00176
00177 for (std::vector<HBHEHFLogicalMapEntry>::iterator it = HBHEHFEntries_.begin(); it!=HBHEHFEntries_.end(); ++it) {
00178 titlecounter = titlecounter % 21;
00179 if (titlecounter == 0){
00180 fprintf(hbefmapfile,"# side eta phi dphi depth det rbx wedge rm pixel qie adc");
00181 fprintf(hbefmapfile," rm_fi fi_ch crate htr fpga htr_fi dcc_sl spigo dcc slb slbin slbin2");
00182 fprintf(hbefmapfile," slnam rctcra rctcar rctcon rctnam fedid\n");
00183 }
00184 titlecounter++;
00185 fprintf(hbefmapfile,"%s",it->printLMapLine());
00186 }
00187 }
00188
00189 void HcalLogicalMap::printHOXMap(FILE* hoxmapfile){
00190
00191 int titlecounter = 0;
00192
00193 for (std::vector<HOHXLogicalMapEntry>::iterator it = HOHXEntries_.begin(); it!=HOHXEntries_.end(); ++it) {
00194 titlecounter = titlecounter % 21;
00195 if (titlecounter == 0){
00196 fprintf(hoxmapfile,"# side eta phi dphi depth det rbx sector rm pixel qie adc");
00197 fprintf(hoxmapfile," rm_fi fi_ch let_code crate htr fpga htr_fi dcc_sl spigo dcc fedid\n");
00198 }
00199 titlecounter++;
00200 fprintf(hoxmapfile,"%s",it->printLMapLine());
00201 }
00202 }
00203
00204 void HcalLogicalMap::printCalibMap(FILE* calibmapfile){
00205
00206 int titlecounter = 0;
00207
00208 for (std::vector<CALIBLogicalMapEntry>::iterator it = CALIBEntries_.begin(); it!=CALIBEntries_.end(); ++it) {
00209 titlecounter = titlecounter % 21;
00210 if (titlecounter == 0){
00211 fprintf(calibmapfile,"# side eta phi dphi det rbx sector rm_fi ");
00212 fprintf(calibmapfile," fi_ch crate htr fpga htr_fi dcc_sl spigo dcc fedid ch_type name\n");
00213 }
00214 titlecounter++;
00215 fprintf(calibmapfile,"%s",it->printLMapLine());
00216 }
00217 }
00218
00219 void HcalLogicalMap::printZDCMap(FILE* zdcmapfile){
00220
00221 int titlecounter = 0;
00222
00223 for (std::vector<ZDCLogicalMapEntry>::iterator it = ZDCEntries_.begin(); it!=ZDCEntries_.end(); ++it) {
00224 titlecounter = titlecounter % 21;
00225 if (titlecounter == 0){
00226 fprintf(zdcmapfile,"# side x y dx depth det det_ch cable rm qie ");
00227 fprintf(zdcmapfile," adc rm_fi fi_ch crate htr fpga htr_fi dcc_sl spigo dcc fedid\n");
00228 }
00229 titlecounter++;
00230 fprintf(zdcmapfile,"%s",it->printLMapLine());
00231 }
00232 }
00233
00234 void HcalLogicalMap::printHTMap(FILE* htmapfile){
00235
00236 int titlecounter = 0;
00237
00238 for (std::vector<HTLogicalMapEntry>::iterator it = HTEntries_.begin(); it!=HTEntries_.end(); ++it) {
00239 titlecounter = titlecounter % 21;
00240 if (titlecounter == 0){
00241 fprintf(htmapfile,"# side eta phi dphi depth det wedge crate");
00242 fprintf(htmapfile," htr fpga dcc_sl spigo dcc slb slbin slbin2 nDat ");
00243 fprintf(htmapfile," slnam rctcra rctcar rctcon rctnam fedid\n");
00244 }
00245 titlecounter++;
00246 fprintf(htmapfile,"%s",it->printLMapLine());
00247 }
00248 }
00249
00250
00251 const DetId HcalLogicalMap::getDetId(const HcalElectronicsId& eid)
00252 {
00253 const uint32_t entry=LinearIndex2Entry_.at(eid.linearIndex());
00254 if ( !(entry&0x1) ) return DetId(0);
00255 if ( ((entry>>1)&0x3)==0) return HBHEHFEntries_.at(entry>>3).getDetId();
00256 if ( ((entry>>1)&0x3)==1) return HOHXEntries_.at(entry>>3).getDetId();
00257 if ( ((entry>>1)&0x3)==2) return CALIBEntries_.at(entry>>3).getDetId();
00258 if ( ((entry>>1)&0x3)==3) return ZDCEntries_.at(entry>>3).getDetId();
00259 return DetId(0);
00260 }
00261
00262 const HcalFrontEndId HcalLogicalMap::getHcalFrontEndId(const DetId& did)
00263 {
00264 const HcalGenericDetId hgdi(did);
00265 const HcalGenericDetId::HcalGenericSubdetector hgsd=hgdi.genericSubdet();
00266 const int hashedId=hgdi.hashedId(false);
00267 if (hgsd==HcalGenericDetId::HcalGenBarrel) {
00268 const uint32_t entry=HbHash2Entry_.at(hashedId)-1;
00269 return HBHEHFEntries_.at(entry).getHcalFrontEndId();
00270 }
00271 else if (hgsd==HcalGenericDetId::HcalGenEndcap) {
00272 const uint32_t entry=HeHash2Entry_.at(hashedId)-1;
00273 return HBHEHFEntries_.at(entry).getHcalFrontEndId();
00274 }
00275 else if (hgsd==HcalGenericDetId::HcalGenForward) {
00276 const uint32_t entry=HfHash2Entry_.at(hashedId)-1;
00277 return HBHEHFEntries_.at(entry).getHcalFrontEndId();
00278 }
00279 else if (hgsd==HcalGenericDetId::HcalGenOuter) {
00280 const uint32_t entry=HoHash2Entry_.at(hashedId)-1;
00281 return HOHXEntries_.at(entry).getHcalFrontEndId();
00282 }
00283 else if (hgsd==HcalGenericDetId::HcalGenCalibration) {
00284 HcalCalibDetId hcid(did);
00285 if (hcid.calibFlavor()==HcalCalibDetId::HOCrosstalk) {
00286 const uint32_t entry=HxCalibHash2Entry_.at(hashedId)-1;
00287 return HOHXEntries_.at(entry).getHcalFrontEndId();
00288 }
00289 else if (hcid.calibFlavor()==HcalCalibDetId::CalibrationBox) {
00290 const uint32_t entry=HxCalibHash2Entry_.at(hashedId)-1;
00291 return CALIBEntries_.at(entry).getHcalFrontEndId();
00292 }
00293 }
00294 return HcalFrontEndId(0);
00295 }
00296
00297 void HcalLogicalMap::checkIdFunctions() {
00298 int HBHEHF_EID_pass=0;
00299 int HBHEHF_EID_fail=0;
00300 int HOHX_EID_pass=0;
00301 int HOHX_EID_fail=0;
00302 int CALIB_EID_pass=0;
00303 int CALIB_EID_fail=0;
00304 int ZDC_EID_pass=0;
00305 int ZDC_EID_fail=0;
00306
00307 int HBHEHF_FEID_pass=0;
00308 int HBHEHF_FEID_fail=0;
00309 int HOHX_FEID_pass=0;
00310 int HOHX_FEID_fail=0;
00311 int CALIB_FEID_pass=0;
00312 int CALIB_FEID_fail=0;
00313
00314 cout << "\nRunning the id function checker..." << endl;
00315
00316 for (std::vector<HBHEHFLogicalMapEntry>::iterator it = HBHEHFEntries_.begin(); it!=HBHEHFEntries_.end(); ++it) {
00317 const HcalElectronicsId heid=it->getHcalElectronicsId();
00318 const DetId did0=it->getDetId();
00319 const DetId did1=getDetId(heid);
00320 if (did0==did1) HBHEHF_EID_pass++;
00321 else HBHEHF_EID_fail++;
00322
00323 const HcalFrontEndId hfeid0=it->getHcalFrontEndId();
00324 const HcalFrontEndId hfeid1=getHcalFrontEndId(did0);
00325 if (hfeid0==hfeid1) HBHEHF_FEID_pass++;
00326 else HBHEHF_FEID_fail++;
00327 }
00328 for (std::vector<HOHXLogicalMapEntry>::iterator it = HOHXEntries_.begin(); it!=HOHXEntries_.end(); ++it) {
00329 const HcalElectronicsId heid=it->getHcalElectronicsId();
00330 const DetId did0=it->getDetId();
00331 const DetId did1=getDetId(heid);
00332 if (did0==did1) HOHX_EID_pass++;
00333 else HOHX_EID_fail++;
00334
00335 const HcalFrontEndId hfeid0=it->getHcalFrontEndId();
00336 const HcalFrontEndId hfeid1=getHcalFrontEndId(did0);
00337 if (hfeid0==hfeid1) HOHX_FEID_pass++;
00338 else HOHX_FEID_fail++;
00339 }
00340 for (std::vector<CALIBLogicalMapEntry>::iterator it = CALIBEntries_.begin(); it!=CALIBEntries_.end(); ++it) {
00341 const HcalElectronicsId heid=it->getHcalElectronicsId();
00342 const DetId did0=it->getDetId();
00343 const DetId did1=getDetId(heid);
00344 if (did0==did1) CALIB_EID_pass++;
00345 else CALIB_EID_fail++;
00346
00347 const HcalFrontEndId hfeid0=it->getHcalFrontEndId();
00348 const HcalFrontEndId hfeid1=getHcalFrontEndId(did0);
00349 if (hfeid0==hfeid1) CALIB_FEID_pass++;
00350 else CALIB_FEID_fail++;
00351 }
00352 for (std::vector<ZDCLogicalMapEntry>::iterator it = ZDCEntries_.begin(); it!=ZDCEntries_.end(); ++it) {
00353 const HcalElectronicsId heid=it->getHcalElectronicsId();
00354 const DetId did0=it->getDetId();
00355 const DetId did1=getDetId(heid);
00356 if (did0==did1) ZDC_EID_pass++;
00357 else ZDC_EID_fail++;
00358 }
00359
00360 cout << "Checking detIds from electronics ids..." << endl;
00361 cout << "HBHEHF EID (pass,fail) = (" << HBHEHF_EID_pass << "," << HBHEHF_EID_fail << ")" << endl;
00362 cout << "HOHX EID (pass,fail) = (" << HOHX_EID_pass << "," << HOHX_EID_fail << ")" << endl;
00363 cout << "CALIB EID (pass,fail) = (" << CALIB_EID_pass << "," << CALIB_EID_fail << ")" << endl;
00364 cout << "ZDC EID (pass,fail) = (" << ZDC_EID_pass << "," << ZDC_EID_fail << ")" << endl;
00365 cout << endl;
00366 cout << "Checking frontEndIds from electronics ids..." << endl;
00367 cout << "HBHEHF FEID (pass,fail) = (" << HBHEHF_FEID_pass << "," << HBHEHF_FEID_fail << ")" << endl;
00368 cout << "HOHX FEID (pass,fail) = (" << HOHX_FEID_pass << "," << HOHX_FEID_fail << ")" << endl;
00369 cout << "CALIB FEID (pass,fail) = (" << CALIB_FEID_pass << "," << CALIB_FEID_fail << ")" << endl;
00370 }
00371
00372
00373 void HcalLogicalMap::checkHashIds() {
00374 std::vector<int> HB_Hashes_;
00375 std::vector<int> HE_Hashes_;
00376 std::vector<int> HF_Hashes_;
00377 std::vector<int> HO_Hashes_;
00378 std::vector<int> CALIBHX_Hashes_;
00379 std::vector<int> ZDC_Hashes_;
00380 std::vector<int> HT_Hashes_;
00381
00382 int numfails[7] = {0,0,0,0,0,0,0};
00383 int numpass[7] = {0,0,0,0,0,0,0};
00384 int numnotdense[7] = {0,0,0,0,0,0,0};
00385
00386 cout << "\nRunning the hash checker for detIds..." << endl;
00387 for (std::vector<HBHEHFLogicalMapEntry>::iterator it = HBHEHFEntries_.begin(); it!=HBHEHFEntries_.end(); ++it) {
00388 if (it->getDetId().subdetId()==HcalBarrel) {
00389 HB_Hashes_.push_back(HcalGenericDetId(it->getDetId().rawId()).hashedId(false));
00390 }
00391 else if (it->getDetId().subdetId()==HcalEndcap) {
00392 HE_Hashes_.push_back(HcalGenericDetId(it->getDetId().rawId()).hashedId(false));
00393 }
00394 else if (it->getDetId().subdetId()==HcalForward) {
00395 HF_Hashes_.push_back(HcalGenericDetId(it->getDetId().rawId()).hashedId(false));
00396 }
00397 }
00398 for (std::vector<HOHXLogicalMapEntry>::iterator it = HOHXEntries_.begin(); it!=HOHXEntries_.end(); ++it) {
00399 if (HcalGenericDetId(it->getDetId().rawId()).isHcalCalibDetId() ) {
00400 CALIBHX_Hashes_.push_back(HcalGenericDetId(it->getDetId().rawId()).hashedId(false));
00401 }
00402 else {
00403 HO_Hashes_.push_back(HcalGenericDetId(it->getDetId().rawId()).hashedId(false));
00404 }
00405 }
00406 for (std::vector<CALIBLogicalMapEntry>::iterator it = CALIBEntries_.begin(); it!=CALIBEntries_.end(); ++it) {
00407 CALIBHX_Hashes_.push_back(HcalGenericDetId(it->getDetId().rawId()).hashedId(false));
00408 }
00409 for (std::vector<ZDCLogicalMapEntry>::iterator it = ZDCEntries_.begin(); it!=ZDCEntries_.end(); ++it) {
00410 ZDC_Hashes_.push_back(HcalGenericDetId(it->getDetId().rawId()).hashedId(false));
00411 }
00412 for (std::vector<HTLogicalMapEntry>::iterator it = HTEntries_.begin(); it!=HTEntries_.end(); ++it) {
00413 HT_Hashes_.push_back(HcalGenericDetId(it->getDetId().rawId()).hashedId(false));
00414 }
00415
00416 sort(HB_Hashes_.begin() , HB_Hashes_.end());
00417 sort(HE_Hashes_.begin() , HE_Hashes_.end());
00418 sort(HF_Hashes_.begin() , HF_Hashes_.end());
00419 sort(HO_Hashes_.begin() , HO_Hashes_.end());
00420 sort(CALIBHX_Hashes_.begin(), CALIBHX_Hashes_.end());
00421 sort(ZDC_Hashes_.begin() , ZDC_Hashes_.end());
00422 sort(HT_Hashes_.begin() , HT_Hashes_.end());
00423
00424 for(unsigned int i = 0; i<HB_Hashes_.size()-1; i++) {
00425 int diff = HB_Hashes_.at(i+1)-HB_Hashes_.at(i);
00426 if (diff==0) numfails[0]++;
00427 else if (diff>1) numnotdense[0]++;
00428 else numpass[0]++;
00429 }
00430 for(unsigned int i = 0; i<HE_Hashes_.size()-1; i++) {
00431 int diff = HE_Hashes_.at(i+1)-HE_Hashes_.at(i);
00432 if (diff==0) numfails[1]++;
00433 else if (diff>1) numnotdense[1]++;
00434 else numpass[1]++;
00435 }
00436 for(unsigned int i = 0; i<HF_Hashes_.size()-1; i++) {
00437 int diff = HF_Hashes_.at(i+1)-HF_Hashes_.at(i);
00438 if (diff==0) numfails[2]++;
00439 else if (diff>1) numnotdense[2]++;
00440 else numpass[2]++;
00441 }
00442 for(unsigned int i = 0; i<HO_Hashes_.size()-1; i++) {
00443 int diff = HO_Hashes_.at(i+1)-HO_Hashes_.at(i);
00444 if (diff==0) numfails[3]++;
00445 else if (diff>1) numnotdense[3]++;
00446 else numpass[3]++;
00447 }
00448 for(unsigned int i = 0; i<CALIBHX_Hashes_.size()-1; i++) {
00449 int diff = CALIBHX_Hashes_.at(i+1)-CALIBHX_Hashes_.at(i);
00450 if (diff==0) numfails[4]++;
00451 else if (diff>1) numnotdense[4]++;
00452 else numpass[4]++;
00453 }
00454 for(unsigned int i = 0; i<ZDC_Hashes_.size()-1; i++) {
00455 int diff = ZDC_Hashes_.at(i+1)-ZDC_Hashes_.at(i);
00456 if (diff==0) numfails[5]++;
00457 else if (diff>1) numnotdense[5]++;
00458 else numpass[5]++;
00459 }
00460 for(unsigned int i = 0; i<HT_Hashes_.size()-1; i++) {
00461 int diff = HT_Hashes_.at(i+1)-HT_Hashes_.at(i);
00462 if (diff==0) numfails[6]++;
00463 else if (diff>1) numnotdense[6]++;
00464 else numpass[6]++;
00465 }
00466 cout << "HB HashIds (pass, collisions, non-dense) = (" << numpass[0] << "," << numfails[0] << "," << numnotdense[0] << ")" << endl;
00467 cout << "HE HashIds (pass, collisions, non-dense) = (" << numpass[1] << "," << numfails[1] << "," << numnotdense[1] << ")" << endl;
00468 cout << "HF HashIds (pass, collisions, non-dense) = (" << numpass[2] << "," << numfails[2] << "," << numnotdense[2] << ")" << endl;
00469 cout << "HO HashIds (pass, collisions, non-dense) = (" << numpass[3] << "," << numfails[3] << "," << numnotdense[3] << ")" << endl;
00470 cout << "CALIB/HX HashIds (pass, collisions, non-dense) = (" << numpass[4] << "," << numfails[4] << "," << numnotdense[4] << ")" << endl;
00471 cout << "ZDC HashIds (pass, collisions, non-dense) = (" << numpass[5] << "," << numfails[5] << "," << numnotdense[5] << ")" << endl;
00472 cout << "HT HashIds (pass, collisions, non-dense) = (" << numpass[6] << "," << numfails[6] << "," << numnotdense[6] << ")" << endl;
00473 }
00474
00475 void HcalLogicalMap::checkElectronicsHashIds() {
00476 std::vector<int> Electronics_Hashes_;
00477
00478 int numfails = 0;
00479 int numpass = 0;
00480 int numnotdense = 0;
00481
00482 cout << "\nRunning the hash checker for electronics Ids..." << endl;
00483 for (std::vector<HBHEHFLogicalMapEntry>::iterator it = HBHEHFEntries_.begin(); it!=HBHEHFEntries_.end(); ++it) {
00484 Electronics_Hashes_.push_back((it->getHcalElectronicsId()).linearIndex());
00485 }
00486 for (std::vector<ZDCLogicalMapEntry>::iterator it = ZDCEntries_.begin(); it!=ZDCEntries_.end(); ++it) {
00487 Electronics_Hashes_.push_back((it->getHcalElectronicsId()).linearIndex());
00488 }
00489 for (std::vector<CALIBLogicalMapEntry>::iterator it = CALIBEntries_.begin(); it!=CALIBEntries_.end(); ++it) {
00490 Electronics_Hashes_.push_back((it->getHcalElectronicsId()).linearIndex());
00491 }
00492 for (std::vector<HOHXLogicalMapEntry>::iterator it = HOHXEntries_.begin(); it!=HOHXEntries_.end(); ++it) {
00493 Electronics_Hashes_.push_back((it->getHcalElectronicsId()).linearIndex());
00494 }
00495 for (std::vector<HTLogicalMapEntry>::iterator it = HTEntries_.begin(); it!=HTEntries_.end(); ++it) {
00496 Electronics_Hashes_.push_back((it->getHcalTrigElectronicsId()).linearIndex());
00497 }
00498
00499 sort(Electronics_Hashes_.begin() , Electronics_Hashes_.end());
00500
00501 for(unsigned int i = 0; i<Electronics_Hashes_.size()-1; i++) {
00502 int diff = Electronics_Hashes_.at(i+1)-Electronics_Hashes_.at(i);
00503 if (diff==0) numfails++;
00504 else if (diff>1) numnotdense++;
00505 else numpass++;
00506 }
00507 cout << "Electronics Id linearIndex (pass, collisions, nondense) = (" << numpass << "," << numfails << "," << numnotdense << ")" << endl;
00508 }