File indexing completed on 2024-04-06 12:05:15
0001
0002 #include <iostream>
0003 #include <iomanip>
0004 #include <sstream>
0005 #include <string>
0006 #include <time.h>
0007
0008
0009 #include "DataFormats/SiStripCommon/interface/Constants.h"
0010 #include "DataFormats/SiStripCommon/interface/SiStripConstants.h"
0011 #include "DataFormats/SiStripCommon/interface/SiStripFedKey.h"
0012 #include "FWCore/Framework/interface/Event.h"
0013 #include "FWCore/Framework/interface/one/EDAnalyzer.h"
0014 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0015
0016
0017
0018
0019
0020
0021 class testSiStripFedKey : public edm::one::EDAnalyzer<> {
0022 public:
0023 testSiStripFedKey(const edm::ParameterSet&);
0024 ~testSiStripFedKey();
0025
0026 void beginJob();
0027 void analyze(const edm::Event&, const edm::EventSetup&);
0028 };
0029
0030 using namespace sistrip;
0031
0032
0033
0034 testSiStripFedKey::testSiStripFedKey(const edm::ParameterSet& pset) {
0035 LogTrace(mlDqmCommon_) << "[testSiStripFedKey::" << __func__ << "]"
0036 << " Constructing object...";
0037 }
0038
0039
0040
0041 testSiStripFedKey::~testSiStripFedKey() {
0042 LogTrace(mlDqmCommon_) << "[testSiStripFedKey::" << __func__ << "]"
0043 << " Destructing object...";
0044 }
0045
0046
0047
0048 void testSiStripFedKey::beginJob() {
0049 uint32_t cntr = 0;
0050 uint32_t start = time(NULL);
0051
0052 edm::LogInfo(mlDqmCommon_) << "[SiStripFedKey::" << __func__ << "]"
0053 << " Tests the generation of keys...";
0054
0055
0056 for (uint16_t ifed = 0; ifed <= sistrip::CMS_FED_ID_MAX + 1; ifed++) {
0057 if (ifed > 1 && ifed != sistrip::FED_ID_MIN + 1 && ifed < sistrip::CMS_FED_ID_MAX - 1) {
0058 continue;
0059 }
0060
0061
0062 for (uint16_t ife = 0; ife <= sistrip::FEUNITS_PER_FED + 1; ife++) {
0063 if (ife > 1 && ife < sistrip::FEUNITS_PER_FED) {
0064 continue;
0065 }
0066
0067
0068 for (uint16_t ichan = 0; ichan <= sistrip::FEDCH_PER_FEUNIT + 1; ichan++) {
0069 if (ichan > 1 && ichan < sistrip::FEDCH_PER_FEUNIT) {
0070 continue;
0071 }
0072
0073
0074 for (uint16_t iapv = 0; iapv <= sistrip::APVS_PER_FEDCH + 1; iapv++) {
0075 if (iapv > 1 && iapv < sistrip::APVS_PER_FEDCH) {
0076 continue;
0077 }
0078
0079
0080 uint16_t channel = 12 * ife + ichan;
0081
0082
0083 if (!(cntr % 1000)) {
0084 LogTrace(mlDqmCommon_) << "[SiStripFedKey::" << __func__ << "]"
0085 << " Cntr: " << cntr;
0086 }
0087 cntr++;
0088
0089
0090 std::stringstream ss;
0091 ss << std::endl
0092 << "[SiStripFedKey::" << __func__ << "]"
0093 << " FedId/FeUnit/FeChan/FedCh/APV: " << ifed << "/" << ife << "/" << ichan << "/" << channel << "/"
0094 << iapv << std::endl
0095 << std::endl;
0096
0097 SiStripFedKey tmp1(ifed, ife, ichan, iapv);
0098 SiStripFedKey tmp2 = SiStripFedKey(tmp1.key());
0099 SiStripFedKey tmp3 = SiStripFedKey(tmp1.path());
0100 SiStripFedKey tmp4 = SiStripFedKey(tmp1);
0101 SiStripFedKey tmp5;
0102 tmp5 = tmp1;
0103
0104 ss << ">>> original : ";
0105 tmp1.terse(ss);
0106 ss << std::endl;
0107 ss << ">>> from FED key : ";
0108 tmp2.terse(ss);
0109 ss << std::endl;
0110 ss << ">>> from directory : ";
0111 tmp3.terse(ss);
0112 ss << std::endl;
0113 ss << ">>> directory : " << tmp1.path() << std::endl;
0114 ss << ">>> isValid : " << tmp1.isValid() << " " << tmp1.isValid(tmp1.granularity()) << " "
0115 << tmp1.isValid(sistrip::FED_APV) << std::endl
0116 << ">>> isInvalid : " << tmp1.isInvalid() << " " << tmp1.isInvalid(tmp1.granularity()) << " "
0117 << tmp1.isInvalid(sistrip::FED_APV);
0118 LogTrace(mlDqmCommon_) << ss.str();
0119 }
0120 }
0121 }
0122 }
0123
0124 edm::LogVerbatim(mlDqmCommon_) << "[SiStripFedKey::" << __func__ << "]"
0125 << " Processed " << cntr << " FedKeys in " << (time(NULL) - start)
0126 << " seconds at an average rate of " << (cntr * 1.) / ((time(NULL) - start) * 1.)
0127 << " per second...";
0128
0129
0130
0131 SiStripFedKey invalid;
0132 SiStripFedKey inv(sistrip::invalid_, sistrip::invalid_, sistrip::invalid_, sistrip::invalid_);
0133 SiStripFedKey valid(51, 1, 1, 1);
0134 SiStripFedKey all(0, 0, 0, 0);
0135 SiStripFedKey same(valid);
0136 SiStripFedKey equal = valid;
0137 SiStripFedKey equals;
0138 equals = valid;
0139
0140 std::stringstream ss;
0141
0142 ss << "[SiStripFedKey::" << __func__ << "]"
0143 << " Tests for utility methods..." << std::endl;
0144
0145 ss << ">>>> invalid.path: " << invalid << std::endl
0146 << ">>>> inv.path: " << inv << std::endl
0147 << ">>>> valid.path: " << valid << std::endl
0148 << ">>>> all.path: " << all << std::endl
0149 << ">>>> same.path: " << same << std::endl
0150 << ">>>> equal.path: " << equal << std::endl
0151 << ">>>> equals.path: " << equals << std::endl;
0152
0153 ss << std::hex << ">>>> invalid.key: " << invalid.key() << std::endl
0154 << ">>>> valid.key: " << valid.key() << std::endl
0155 << ">>>> all.key: " << all.key() << std::endl
0156 << std::dec;
0157
0158 ss << ">>>> invalid.isInvalid: " << invalid.isInvalid() << std::endl
0159 << ">>>> invalid.isValid: " << invalid.isValid() << std::endl
0160 << ">>>> valid.isInvalid: " << valid.isInvalid() << std::endl
0161 << ">>>> valid.isValid: " << valid.isValid() << std::endl
0162 << ">>>> all.isInvalid: " << all.isInvalid() << std::endl
0163 << ">>>> all.isValid: " << all.isValid() << std::endl;
0164
0165 ss << ">>>> valid.isEqual(valid): " << valid.isEqual(valid) << std::endl
0166 << ">>>> valid.isConsistent(valid): " << valid.isConsistent(valid) << std::endl
0167 << ">>>> valid.isEqual(invalid): " << valid.isEqual(invalid) << std::endl
0168 << ">>>> valid.isConsistent(invalid): " << valid.isConsistent(invalid) << std::endl
0169 << ">>>> valid.isEqual(all): " << valid.isEqual(all) << std::endl
0170 << ">>>> valid.isConsistent(all): " << valid.isConsistent(all) << std::endl
0171 << ">>>> valid.isEqual(same): " << valid.isEqual(same) << std::endl
0172 << ">>>> valid.isEqual(equal): " << valid.isEqual(equal) << std::endl
0173 << ">>>> valid.isEqual(equals): " << valid.isEqual(equals) << std::endl;
0174
0175 LogTrace(mlDqmCommon_) << ss.str();
0176 }
0177
0178
0179
0180 void testSiStripFedKey::analyze(const edm::Event& event, const edm::EventSetup& setup) {
0181 LogTrace(mlDqmCommon_) << "[SiStripFedKey::" << __func__ << "]"
0182 << " Analyzing run/event " << event.id().run() << "/" << event.id().event();
0183 }
0184
0185 #include "FWCore/Framework/interface/MakerMacros.h"
0186 DEFINE_FWK_MODULE(testSiStripFedKey);