10 #include <svd/modules/svdDump/svdDumpModule.h>
12 #include <framework/logging/Logger.h>
30 setDescription(
"Module to create SVD data file");
34 addParam(
"outputFileName", m_outputFileName,
"Name of output file.",
string(
"svdDumpModule.dat"));
36 addParam(
"svdRawName", m_svdRawName,
"Name of the SVD Raw",
string(
""));
38 addParam(
"nFtbHeader", m_nFtbHeader,
"# of FTB header",
int(2));
39 addParam(
"nFtbTrailer", m_nFtbTrailer,
"# of FTB header",
int(1));
43 svdDumpModule::~svdDumpModule()
49 B2INFO(
"svdDumpModule: initialize() is called.");
51 m_rawSVD.isRequired(m_svdRawName);
55 m_outputFile =
new ofstream(m_outputFileName.c_str(), ios::trunc);
56 if (!(*m_outputFile)) {
57 B2FATAL(
"Output file: " << m_outputFileName.c_str() <<
" cannot be opened.");
65 B2INFO(
"svdDumpModule: terminate() is called.");
67 m_outputFile->close();
68 delete m_outputFile; m_outputFile = NULL;
76 B2INFO(
"svdDumpModule: beginRun() is called.");
81 B2INFO(
"svdDumpModule: endRun() is called.");
88 unsigned int total_nWords = 0;
89 for (
int i = 0; i < rawSVD.
getEntries(); i++) {
90 for (
int j = 0; j < rawSVD[ i ]->GetNumEntries(); j++) {
91 unsigned int nWords = rawSVD[i]->Get1stDetectorNwords(j);
92 if (((
int)nWords - m_nFtbHeader - m_nFtbTrailer) < 0) {
93 B2FATAL(
"Remaining data size is negative: " << ((
int)nWords - m_nFtbHeader - m_nFtbTrailer));
95 unsigned int remaining_nWords = (nWords - m_nFtbHeader - m_nFtbTrailer);
96 total_nWords += remaining_nWords;
99 uint32_t header = (0xf << 28);
100 header |= ((total_nWords & 0xffff) << 12) + (m_event & 0xfff);
101 m_outputFile->write((
char*)(&header),
sizeof(uint32_t));
103 for (
int i = 0; i < rawSVD.
getEntries(); i++) {
104 for (
int j = 0; j < rawSVD[ i ]->GetNumEntries(); j++) {
106 unsigned int nWords = rawSVD[i]->Get1stDetectorNwords(j);
107 unsigned int remaining_nWords = (nWords - m_nFtbHeader - m_nFtbTrailer);
109 uint32_t* data32 = (uint32_t*)rawSVD[i]->Get1stDetectorBuffer(j);
111 m_outputFile->write((
char*)(data32 + m_nFtbHeader),
sizeof(uint32_t)*remaining_nWords);