File indexing completed on 2024-04-06 12:22:27
0001 #include <iomanip>
0002 #include <iostream>
0003
0004 #include "FWCore/Framework/interface/one/EDAnalyzer.h"
0005
0006 #include "FWCore/Framework/interface/Event.h"
0007 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0008
0009 #include "FWCore/Framework/interface/EventSetup.h"
0010 #include "FWCore/Framework/interface/ESHandle.h"
0011
0012 #include "CondFormats/DataRecord/interface/L1TMuonOverlapParamsRcd.h"
0013 #include "CondFormats/L1TObjects/interface/L1TMuonOverlapParams.h"
0014 #include "FWCore/ServiceRegistry/interface/Service.h"
0015 #include "CondCore/DBOutputService/interface/PoolDBOutputService.h"
0016 #include "CondCore/CondDB/interface/Session.h"
0017
0018 #include <iostream>
0019 using namespace std;
0020
0021 class L1TMuonOverlapParamsViewer : public edm::one::EDAnalyzer<> {
0022 private:
0023 edm::ESGetToken<L1TMuonOverlapParams, L1TMuonOverlapParamsRcd> token_;
0024 bool printLayerMap;
0025
0026 public:
0027 void analyze(const edm::Event &, const edm::EventSetup &) override;
0028 string hash(void *buf, size_t len) const;
0029
0030 explicit L1TMuonOverlapParamsViewer(const edm::ParameterSet &pset) : token_{esConsumes()} {
0031 printLayerMap = pset.getUntrackedParameter<bool>("printLayerMap", false);
0032 }
0033 };
0034
0035 #include "Utilities/OpenSSL/interface/openssl_init.h"
0036 #include <cmath>
0037 #include <iostream>
0038 using namespace std;
0039
0040 string L1TMuonOverlapParamsViewer::hash(void *buf, size_t len) const {
0041 cms::openssl_init();
0042 EVP_MD_CTX *mdctx = EVP_MD_CTX_new();
0043 const EVP_MD *md = EVP_get_digestbyname("SHA1");
0044 if (!EVP_DigestInit_ex(mdctx, md, nullptr))
0045 throw cms::Exception("L1TCaloParamsViewer::hash") << "SHA1 initialization error";
0046
0047 if (!EVP_DigestUpdate(mdctx, buf, len))
0048 throw cms::Exception("L1TCaloParamsViewer::hash") << "SHA1 processing error";
0049
0050 unsigned char hash[EVP_MAX_MD_SIZE];
0051 unsigned int md_len = 0;
0052 if (!EVP_DigestFinal_ex(mdctx, hash, &md_len))
0053 throw cms::Exception("L1TCaloParamsViewer::hash") << "SHA1 finalization error";
0054
0055 EVP_MD_CTX_free(mdctx);
0056
0057
0058 char tmp[EVP_MAX_MD_SIZE * 2 + 1];
0059 if (md_len > 20)
0060 md_len = 20;
0061 for (unsigned int i = 0; i < md_len; i++)
0062 ::sprintf(&tmp[i * 2], "%02x", hash[i]);
0063
0064 tmp[md_len * 2] = 0;
0065 return string(tmp);
0066 }
0067
0068 void L1TMuonOverlapParamsViewer::analyze(const edm::Event &iEvent, const edm::EventSetup &evSetup) {
0069
0070 L1TMuonOverlapParams const &ptr1 = evSetup.getData(token_);
0071
0072 cout << "Some fields in L1TMuonOverlapParamsParams: " << endl;
0073
0074 cout << " fwVersion() = " << ptr1.fwVersion() << endl;
0075 cout << " nPdfAddrBits() = " << ptr1.nPdfAddrBits() << endl;
0076 cout << " nPdfValBits() = " << ptr1.nPdfValBits() << endl;
0077 cout << " nHitsPerLayer() = " << ptr1.nHitsPerLayer() << endl;
0078 cout << " nPhiBits() = " << ptr1.nPhiBits() << endl;
0079 cout << " nPhiBins() = " << ptr1.nPhiBins() << endl;
0080 cout << " nRefHits() = " << ptr1.nRefHits() << endl;
0081 cout << " nTestRefHits() = " << ptr1.nTestRefHits() << endl;
0082 cout << " nProcessors() = " << ptr1.nProcessors() << endl;
0083 cout << " nLogicRegions() = " << ptr1.nLogicRegions() << endl;
0084 cout << " nInputs() = " << ptr1.nInputs() << endl;
0085 cout << " nLayers() = " << ptr1.nLayers() << endl;
0086 cout << " nRefLayers() = " << ptr1.nRefLayers() << endl;
0087 cout << " nGoldenPatterns() = " << ptr1.nGoldenPatterns() << endl;
0088
0089 const std::vector<int> *gp = ptr1.generalParams();
0090 cout << " number of general parameters: = " << gp->size() << endl;
0091 cout << " ";
0092 for (auto a : *gp)
0093 cout << a << ", ";
0094 cout << endl;
0095
0096 const std::vector<L1TMuonOverlapParams::LayerMapNode> *lm = ptr1.layerMap();
0097 if (!lm->empty()) {
0098 cout << " layerMap() = [" << lm->size() << "] ";
0099 L1TMuonOverlapParams::LayerMapNode *lm_ = new L1TMuonOverlapParams::LayerMapNode[lm->size()];
0100 for (unsigned int i = 0; i < lm->size(); i++)
0101 lm_[i] = (*lm)[i];
0102 cout << hash(lm_, sizeof(L1TMuonOverlapParams::LayerMapNode) * (lm->size())) << endl;
0103 if (printLayerMap) {
0104 cout << sizeof(L1TMuonOverlapParams::LayerMapNode) << endl;
0105 for (unsigned int i = 0; i < lm->size(); i++) {
0106 cout << " [" << i << "]: hwNumber = " << lm_[i].hwNumber << " logicNumber = " << lm_[i].logicNumber
0107 << " bendingLayer = " << lm_[i].bendingLayer << " connectedToLayer = " << lm_[i].connectedToLayer << " ("
0108 << flush;
0109 char *n = (char *)(&(lm_[i]));
0110 for (unsigned int j = 0; j < sizeof(L1TMuonOverlapParams::LayerMapNode); j++)
0111 cout << "0x" << hex << int(*(n + j)) << dec << ", ";
0112 cout << endl;
0113 }
0114
0115 }
0116 delete[] lm_;
0117 } else {
0118 cout << " layerMap() = [0] " << endl;
0119 }
0120
0121 const std::vector<L1TMuonOverlapParams::RefLayerMapNode> *rlm = ptr1.refLayerMap();
0122 if (!rlm->empty()) {
0123 cout << " refLayerMap() = [" << rlm->size() << "] ";
0124 L1TMuonOverlapParams::RefLayerMapNode *rlm_ = new L1TMuonOverlapParams::RefLayerMapNode[rlm->size()];
0125 for (unsigned int i = 0; i < rlm->size(); i++)
0126 rlm_[i] = (*rlm)[i];
0127 cout << hash(rlm_, sizeof(L1TMuonOverlapParams::RefLayerMapNode) * (rlm->size())) << endl;
0128 delete[] rlm_;
0129 } else {
0130 cout << " refLayerMap() = [0] " << endl;
0131 }
0132
0133 const std::vector<L1TMuonOverlapParams::RefHitNode> *rhn = ptr1.refHitMap();
0134 if (!rhn->empty()) {
0135 cout << " refHitMap() = [" << rhn->size() << "] ";
0136 L1TMuonOverlapParams::RefHitNode *rhn_ = new L1TMuonOverlapParams::RefHitNode[rhn->size()];
0137 for (unsigned int i = 0; i < rhn->size(); i++)
0138 rhn_[i] = (*rhn)[i];
0139 cout << hash(rhn_, sizeof(L1TMuonOverlapParams::RefHitNode) * (rhn->size())) << endl;
0140 delete[] rhn_;
0141 } else {
0142 cout << " refHitMap() = [0] " << endl;
0143 }
0144
0145 const std::vector<int> *gpsm = ptr1.globalPhiStartMap();
0146 if (!gpsm->empty()) {
0147 cout << " globalPhiStartMap() = [" << gpsm->size() << "] ";
0148 int gpsm_[gpsm->size()];
0149 for (unsigned int i = 0; i < gpsm->size(); i++)
0150 gpsm_[i] = (*gpsm)[i];
0151 cout << hash(gpsm_, sizeof(int) * (gpsm->size())) << endl;
0152 } else {
0153 cout << " globalPhiStartMap() = [0] " << endl;
0154 }
0155
0156 const std::vector<L1TMuonOverlapParams::LayerInputNode> *lim = ptr1.layerInputMap();
0157 if (!lim->empty()) {
0158 cout << " layerInputMap() = [" << lim->size() << "] ";
0159 L1TMuonOverlapParams::LayerInputNode *lim_ = new L1TMuonOverlapParams::LayerInputNode[lim->size()];
0160 for (unsigned int i = 0; i < lim->size(); i++)
0161 lim_[i] = (*lim)[i];
0162 cout << hash(lim_, sizeof(L1TMuonOverlapParams::LayerInputNode) * (lim->size())) << endl;
0163 delete[] lim_;
0164 } else {
0165 cout << " layerInputMap() = [0] " << endl;
0166 }
0167
0168 const std::vector<int> *css = ptr1.connectedSectorsStart();
0169 if (!css->empty()) {
0170 cout << " connectedSectorsStart() = [" << css->size() << "] ";
0171 int css_[css->size()];
0172 for (unsigned int i = 0; i < css->size(); i++)
0173 css_[i] = (*css)[i];
0174 cout << hash(css_, sizeof(int) * (css->size())) << endl;
0175 } else {
0176 cout << " connectedSectorsStart() = [0] " << endl;
0177 }
0178
0179 const std::vector<int> *cse = ptr1.connectedSectorsEnd();
0180 if (!cse->empty()) {
0181 cout << " connectedSectorsEnd() = [" << cse->size() << "] ";
0182 int cse_[cse->size()];
0183 for (unsigned int i = 0; i < cse->size(); i++)
0184 cse_[i] = (*cse)[i];
0185 cout << hash(cse_, sizeof(int) * (cse->size())) << endl;
0186 } else {
0187 cout << " connectedSectorsEnd() = [0] " << endl;
0188 }
0189
0190 const l1t::LUT *clut = ptr1.chargeLUT();
0191 if (clut->maxSize()) {
0192 cout << " chargeLUT = [" << clut->maxSize() << "] ";
0193 int clut_[clut->maxSize()];
0194 for (unsigned int i = 0; i < clut->maxSize(); i++)
0195 clut_[i] = clut->data(i);
0196 cout << hash(clut_, sizeof(int) * (clut->maxSize())) << endl;
0197 } else {
0198 cout << " chargeLUT = [0] " << endl;
0199 }
0200
0201 const l1t::LUT *elut = ptr1.etaLUT();
0202 if (elut->maxSize()) {
0203 cout << " etaLUT = [" << elut->maxSize() << "] ";
0204 int elut_[elut->maxSize()];
0205 for (unsigned int i = 0; i < elut->maxSize(); i++)
0206 elut_[i] = elut->data(i);
0207 cout << hash(elut_, sizeof(int) * (elut->maxSize())) << endl;
0208 } else {
0209 cout << " chargeLUT = [0] " << endl;
0210 }
0211
0212 const l1t::LUT *ptlut = ptr1.ptLUT();
0213 if (ptlut->maxSize()) {
0214 cout << " ptLUT = [" << ptlut->maxSize() << "] " << flush;
0215 int ptlut_[ptlut->maxSize()];
0216 for (unsigned int i = 0; i < ptlut->maxSize(); i++)
0217 ptlut_[i] = ptlut->data(i);
0218 cout << hash(ptlut_, sizeof(int) * (ptlut->maxSize())) << endl;
0219 } else {
0220 cout << " ptLUT = [0] " << endl;
0221 }
0222
0223 const l1t::LUT *plut = ptr1.pdfLUT();
0224 if (plut->maxSize()) {
0225 cout << " pdfLUT = [" << plut->maxSize() << "] " << flush;
0226 int plut_[plut->maxSize()];
0227 for (unsigned int i = 0; i < plut->maxSize(); i++)
0228 plut_[i] = plut->data(i);
0229 cout << hash(plut_, sizeof(int) * (plut->maxSize())) << endl;
0230 } else {
0231 cout << " pdfLUT = [0] " << endl;
0232 }
0233
0234 const l1t::LUT *mlut = ptr1.meanDistPhiLUT();
0235 if (mlut->maxSize()) {
0236 cout << " meanDistPhiLUT = [" << mlut->maxSize() << "] " << flush;
0237 int mlut_[mlut->maxSize()];
0238 for (unsigned int i = 0; i < mlut->maxSize(); i++)
0239 mlut_[i] = mlut->data(i);
0240 cout << hash(mlut_, sizeof(int) * (mlut->maxSize())) << endl;
0241 } else {
0242 cout << " meanDistPhiLUT = [0] " << endl;
0243 }
0244 }
0245
0246 #include "FWCore/PluginManager/interface/ModuleDef.h"
0247 #include "FWCore/Framework/interface/MakerMacros.h"
0248 #include "FWCore/Framework/interface/ModuleFactory.h"
0249
0250 DEFINE_FWK_MODULE(L1TMuonOverlapParamsViewer);