File indexing completed on 2025-01-31 02:19:44
0001
0002
0003
0004
0005 #include "IOPool/Streamer/interface/DumpTools.h"
0006 #include "FWCore/Utilities/interface/Digest.h"
0007 #include "FWCore/Utilities/interface/Algorithms.h"
0008 #include <iostream>
0009 #include <iterator>
0010 #include "DataFormats/Streamer/interface/StreamedProducts.h"
0011 #include "IOPool/Streamer/interface/ClassFiller.h"
0012
0013 #include "TBufferFile.h"
0014
0015 #include <memory>
0016
0017 using namespace edm;
0018
0019 namespace edm::streamer {
0020 void dumpInitHeader(const InitMsgView* view) {
0021 std::cout << "code = " << view->code() << ", "
0022 << "size = " << view->size() << "\n"
0023 << "run = " << view->run() << ", "
0024 << "proto = " << view->protocolVersion() << "\n"
0025 << "release = " << view->releaseTag() << "\n"
0026 << "processName = " << view->processName() << "\n";
0027 if (view->protocolVersion() >= 5) {
0028 std::cout << "outModuleLabel = " << view->outputModuleLabel() << "\n";
0029 }
0030 if (view->protocolVersion() >= 6) {
0031 std::cout << "outputModuleId=0x" << std::hex << view->outputModuleId() << std::dec << std::endl;
0032 }
0033 if (view->protocolVersion() >= 8) {
0034 std::cout << "Checksum for Registry data = " << view->adler32_chksum() << " Hostname = " << view->hostName()
0035 << std::endl;
0036 }
0037
0038
0039 uint8 vpset[16];
0040 view->pset(vpset);
0041
0042
0043 std::string pset_str(vpset, vpset + sizeof(vpset));
0044 pset_str += '\0';
0045 cms::Digest dig(pset_str);
0046 cms::MD5Result r1 = dig.digest();
0047 std::string hexy = r1.toString();
0048 std::cout << "PSetID= " << hexy << std::endl;
0049
0050 Strings vhltnames, vhltselections, vl1names;
0051 view->hltTriggerNames(vhltnames);
0052 if (view->protocolVersion() >= 5) {
0053 view->hltTriggerSelections(vhltselections);
0054 }
0055 view->l1TriggerNames(vl1names);
0056
0057 std::cout << "HLT names :- \n ";
0058 edm::copy_all(vhltnames, std::ostream_iterator<std::string>(std::cout, "\n"));
0059
0060 if (view->protocolVersion() >= 5) {
0061 std::cout << "HLT selections :- \n ";
0062 edm::copy_all(vhltselections, std::ostream_iterator<std::string>(std::cout, "\n"));
0063 }
0064
0065 std::cout << "L1 names :- \n ";
0066 edm::copy_all(vl1names, std::ostream_iterator<std::string>(std::cout, "\n"));
0067 std::cout << "\n";
0068 std::cout.flush();
0069 }
0070
0071 void dumpInitView(const InitMsgView* view) {
0072 dumpInitHeader(view);
0073 std::cout << "desc len = " << view->descLength() << "\n";
0074
0075
0076
0077 std::cout.flush();
0078 }
0079
0080 void dumpStartMsg(const InitMsgView* view) {
0081 dumpInitHeader(view);
0082 std::cout.flush();
0083 }
0084
0085 void dumpInitVerbose(const InitMsgView* view) {
0086 std::cout << ">>>>> INIT Message Dump (begin) >>>>>" << std::endl;
0087 dumpInitHeader(view);
0088
0089 TClass* desc = getTClass(typeid(SendJobHeader));
0090 TBufferFile xbuf(TBuffer::kRead, view->descLength(), (char*)view->descData(), kFALSE);
0091 std::unique_ptr<SendJobHeader> sd((SendJobHeader*)xbuf.ReadObjectAny(desc));
0092
0093 if (sd.get() == nullptr) {
0094 std::cout << "Unable to determine the product registry - "
0095 << "Registry deserialization error." << std::endl;
0096 } else {
0097 std::cout << "Branch Descriptions:" << std::endl;
0098 SendDescs const& descs = sd->descs();
0099 SendDescs::const_iterator iDesc(descs.begin()), eDesc(descs.end());
0100 while (iDesc != eDesc) {
0101 ProductDescription branchDesc = *iDesc;
0102 branchDesc.init();
0103
0104 std::cout << branchDesc.branchName() << std::endl;
0105 iDesc++;
0106 }
0107 }
0108
0109 std::cout << "<<<<< INIT Message Dump (end) <<<<<" << std::endl;
0110 std::cout.flush();
0111 }
0112
0113 void dumpInit(uint8* buf) {
0114 InitMsgView view(buf);
0115 dumpInitHeader(&view);
0116
0117 std::cout << "desc len = " << view.descLength() << "\n";
0118
0119
0120
0121 std::cout.flush();
0122 }
0123
0124 void printBits(unsigned char c) {
0125 for (int i = 7; i >= 0; --i) {
0126 int bit = ((c >> i) & 1);
0127 std::cout << " " << bit;
0128 }
0129 }
0130
0131 void dumpEventHeader(const EventMsgView* eview) {
0132 std::cout << "code=" << eview->code() << "\n"
0133 << "size=" << eview->size() << "\n"
0134 << "protocolVersion=" << eview->protocolVersion() << "\n"
0135 << "run=" << eview->run() << "\n"
0136 << "event=" << eview->event() << "\n"
0137 << "lumi=" << eview->lumi() << "\n"
0138 << "origDataSize=" << eview->origDataSize() << "\n"
0139 << "outModId=0x" << std::hex << eview->outModId() << std::dec << "\n"
0140 << "adler32 chksum= " << eview->adler32_chksum() << "\n"
0141 << "host name= " << eview->hostName() << "\n"
0142 << "event length=" << eview->eventLength() << "\n"
0143 << "droppedEventsCount=" << eview->droppedEventsCount() << "\n";
0144
0145 std::vector<bool> l1_out;
0146 eview->l1TriggerBits(l1_out);
0147
0148 std::cout << "\nl1 size= " << l1_out.size() << "\n l1 bits=\n";
0149 edm::copy_all(l1_out, std::ostream_iterator<bool>(std::cout, " "));
0150
0151 std::vector<unsigned char> hlt_out;
0152 if (eview->hltCount() > 0) {
0153 hlt_out.resize(1 + (eview->hltCount() - 1) / 4);
0154 }
0155 eview->hltTriggerBits(&hlt_out[0]);
0156
0157 std::cout << "\nhlt Count:" << eview->hltCount();
0158 std::cout << "\nhlt bits=\n(";
0159 for (int i = (hlt_out.size() - 1); i != -1; --i)
0160 printBits(hlt_out[i]);
0161 std::cout << ")\n";
0162 std::cout.flush();
0163 }
0164
0165 void dumpEventView(const EventMsgView* eview) {
0166 dumpEventHeader(eview);
0167
0168
0169
0170
0171
0172 std::cout.flush();
0173 }
0174
0175 void dumpEventIndex(const EventMsgView* eview) {
0176 dumpEventHeader(eview);
0177 std::cout.flush();
0178 }
0179
0180 void dumpEvent(uint8* buf) {
0181 EventMsgView eview(buf);
0182
0183 dumpEventHeader(&eview);
0184
0185
0186
0187
0188
0189
0190 std::cout.flush();
0191 }
0192
0193 void dumpFRDEventView(const FRDEventMsgView* fview) {
0194 std::cout << "\n>>>>> FRDEvent Message Dump (begin) >>>>>" << std::endl;
0195 std::cout.flush();
0196
0197 std::cout << "size = " << fview->size() << "\n"
0198 << "version = " << fview->version() << "\n"
0199 << "run = " << fview->run() << "\n"
0200 << "lumi = " << fview->lumi() << "\n"
0201 << "event = " << fview->event() << "\n";
0202 std::cout.flush();
0203
0204 std::cout << ">>>>> FRDEvent Message Dump (end) >>>>>" << std::endl;
0205 std::cout.flush();
0206 }
0207 }