File indexing completed on 2024-05-31 04:19:43
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 #include <iostream>
0014 #include "IOPool/Streamer/interface/MsgTools.h"
0015 #include "IOPool/Streamer/interface/EventMsgBuilder.h"
0016 #include "IOPool/Streamer/interface/InitMsgBuilder.h"
0017 #include "IOPool/Streamer/interface/InitMessage.h"
0018 #include "IOPool/Streamer/interface/EventMessage.h"
0019
0020 #include "FWCore/Utilities/interface/Adler32Calculator.h"
0021 #include "FWCore/Utilities/interface/Exception.h"
0022 #include "IOPool/Streamer/interface/DumpTools.h"
0023 #include "zlib.h"
0024
0025 int main() try {
0026 using namespace edm::streamer;
0027
0028 typedef std::vector<uint8> Buffer;
0029 Buffer buf(2024);
0030 Buffer buf2(2024);
0031
0032
0033
0034 char psetid[] = "1234567890123456";
0035 char test_value[] = "This is a test, This is a";
0036 Strings hlt_names;
0037 Strings l1_names;
0038
0039 hlt_names.push_back("a");
0040 hlt_names.push_back("b");
0041 hlt_names.push_back("c");
0042 hlt_names.push_back("d");
0043 hlt_names.push_back("e");
0044 hlt_names.push_back("f");
0045 hlt_names.push_back("g");
0046 hlt_names.push_back("h");
0047 hlt_names.push_back("i");
0048
0049 l1_names.push_back("t10");
0050 l1_names.push_back("t11");
0051 l1_names.push_back("t12");
0052 l1_names.push_back("t13");
0053 l1_names.push_back("t14");
0054 l1_names.push_back("t15");
0055 l1_names.push_back("t16");
0056 l1_names.push_back("t17");
0057 l1_names.push_back("t18");
0058 l1_names.push_back("t19");
0059 l1_names.push_back("t20");
0060
0061 char reltag[] = "CMSSW_0_8_0_pre7";
0062 std::string processName = "HLT";
0063 std::string outputModuleLabel = "HLTOutput";
0064
0065 uLong crc = crc32(0L, Z_NULL, 0);
0066 Bytef* crcbuf = (Bytef*)outputModuleLabel.data();
0067 crc = crc32(crc, crcbuf, outputModuleLabel.length());
0068
0069 uint32 adler32_chksum = (uint32)cms::Adler32((char*)&test_value[0], sizeof(test_value));
0070
0071 InitMsgBuilder init(&buf[0],
0072 buf.size(),
0073 12,
0074 Version((const uint8*)psetid),
0075 (const char*)reltag,
0076 processName.c_str(),
0077 outputModuleLabel.c_str(),
0078 crc,
0079 hlt_names,
0080 hlt_names,
0081 l1_names,
0082 adler32_chksum);
0083
0084 init.setDataLength(sizeof(test_value));
0085 std::copy(&test_value[0], &test_value[0] + sizeof(test_value), init.dataAddress());
0086
0087 InitMsgView view(&buf[0]);
0088 uint8 psetid2[16];
0089 Strings hlt2;
0090 Strings l12;
0091 view.pset(psetid2);
0092 view.hltTriggerNames(hlt2);
0093 view.l1TriggerNames(l12);
0094
0095 uint32 adler32_2 = view.adler32_chksum();
0096
0097 InitMsgBuilder init2(&buf2[0],
0098 buf2.size(),
0099 view.run(),
0100 Version((const uint8*)psetid2),
0101 view.releaseTag().c_str(),
0102 processName.c_str(),
0103 outputModuleLabel.c_str(),
0104 crc,
0105 hlt2,
0106 hlt2,
0107 l12,
0108 adler32_2);
0109
0110 init2.setDataLength(view.descLength());
0111 std::copy(view.descData(), view.descData() + view.size(), init2.dataAddress());
0112
0113 if (equal(&buf[0], &buf[0] + view.size(), buf2.begin()) == false) {
0114 std::cerr << "Init buffers not the same!\n";
0115 dumpInit(&buf[0]);
0116 dumpInit(&buf2[0]);
0117 abort();
0118 }
0119
0120
0121
0122 std::vector<bool> l1bit(16);
0123 uint8 hltbits[] = "4567";
0124 const int hltsize = (sizeof(hltbits) - 1) * 4;
0125
0126 l1bit[0] = true;
0127 l1bit[4] = true;
0128 l1bit[8] = false;
0129 l1bit[12] = true;
0130 l1bit[1] = true;
0131 l1bit[5] = false;
0132 l1bit[9] = false;
0133 l1bit[13] = false;
0134 l1bit[2] = false;
0135 l1bit[6] = true;
0136 l1bit[10] = true;
0137 l1bit[14] = false;
0138 l1bit[3] = false;
0139 l1bit[7] = false;
0140 l1bit[11] = true;
0141 l1bit[15] = true;
0142
0143 adler32_chksum = (uint32)cms::Adler32((char*)&test_value[0], sizeof(test_value));
0144 std::string host_name = "mytestnode.cms";
0145
0146 EventMsgBuilder emb(
0147 &buf[0], buf.size(), 45, 2020, 2, 0xdeadbeef, 3, l1bit, hltbits, hltsize, adler32_chksum, host_name.c_str());
0148
0149 emb.setOrigDataSize(78);
0150 emb.setEventLength(sizeof(test_value));
0151 std::copy(&test_value[0], &test_value[0] + sizeof(test_value), emb.eventAddr());
0152
0153
0154
0155 EventMsgView eview(&buf[0]);
0156
0157 std::vector<bool> l1_out;
0158 uint8 hlt_out[10];
0159 eview.l1TriggerBits(l1_out);
0160 eview.hltTriggerBits(hlt_out);
0161 adler32_2 = eview.adler32_chksum();
0162 std::string host_name2 = eview.hostName();
0163
0164 EventMsgBuilder emb2(&buf2[0],
0165 buf.size(),
0166 eview.run(),
0167 eview.event(),
0168 eview.lumi(),
0169 eview.outModId(),
0170 eview.droppedEventsCount(),
0171 l1_out,
0172 hlt_out,
0173 hltsize,
0174 adler32_2,
0175 host_name2.c_str());
0176
0177 emb2.setOrigDataSize(eview.origDataSize());
0178 emb2.setEventLength(eview.eventLength());
0179 std::copy(eview.eventData(), eview.eventData() + eview.eventLength(), emb2.eventAddr());
0180
0181 if (equal(&buf[0], &buf[0] + emb.size(), buf2.begin()) == false) {
0182 std::cerr << "event messages not the same\n";
0183 std::cerr << "size 1st=" << emb.size() << "\n"
0184 << "size 2nd=" << emb2.size() << "\n";
0185
0186 dumpEvent(&buf[0]);
0187 dumpEvent(&buf2[0]);
0188 abort();
0189 }
0190 return 0;
0191 } catch (cms::Exception const& e) {
0192 std::cerr << e.explainSelf() << std::endl;
0193 return 1;
0194 }