BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
RawFileMerger Class Referencefinal

#include <RawFileMerger.h>

Public Member Functions

 RawFileMerger ()=delete
 RawFileMerger (const std::string &srcfile)
 ~RawFileMerger ()
void setOutputDir (const std::string &dir)
bool mergeWithIndexFile (const std::string &file)
uint32_t ignored () const
 RawFileMerger ()=delete
 RawFileMerger (const std::string &srcfile)
 ~RawFileMerger ()
void setOutputDir (const std::string &dir)
bool mergeWithIndexFile (const std::string &file)
uint32_t ignored () const
 RawFileMerger ()=delete
 RawFileMerger (const std::string &srcfile)
 ~RawFileMerger ()
void setOutputDir (const std::string &dir)
bool mergeWithIndexFile (const std::string &file)
uint32_t ignored () const

Detailed Description

Definition at line 8 of file Event/RawFile/include/RawFile/RawFileMerger.h.

Constructor & Destructor Documentation

◆ RawFileMerger() [1/6]

RawFileMerger::RawFileMerger ( )
delete

◆ RawFileMerger() [2/6]

RawFileMerger::RawFileMerger ( const std::string & srcfile)

Definition at line 6 of file RawFileMerger.cxx.

6 : m_srcfname( srcfile ) {
7 m_srcfile = new RawDataMining( srcfile );
8 m_fidx = new CgemIndexFile();
9 m_cache = new RawDataCache( 1024 * 1024 );
10}

◆ ~RawFileMerger() [1/3]

RawFileMerger::~RawFileMerger ( )

Definition at line 12 of file RawFileMerger.cxx.

12 {
13 delete m_cache;
14 delete m_fidx;
15 delete m_srcfile;
16}

◆ RawFileMerger() [3/6]

RawFileMerger::RawFileMerger ( )
delete

◆ RawFileMerger() [4/6]

RawFileMerger::RawFileMerger ( const std::string & srcfile)

◆ ~RawFileMerger() [2/3]

RawFileMerger::~RawFileMerger ( )

◆ RawFileMerger() [5/6]

RawFileMerger::RawFileMerger ( )
delete

◆ RawFileMerger() [6/6]

RawFileMerger::RawFileMerger ( const std::string & srcfile)

◆ ~RawFileMerger() [3/3]

RawFileMerger::~RawFileMerger ( )

Member Function Documentation

◆ ignored() [1/3]

uint32_t RawFileMerger::ignored ( ) const
inline

Definition at line 19 of file Event/RawFile/include/RawFile/RawFileMerger.h.

19{ return m_ignored; }

Referenced by BOOST_PYTHON_MODULE().

◆ ignored() [2/3]

uint32_t RawFileMerger::ignored ( ) const
inline

Definition at line 19 of file InstallArea/x86_64-el9-gcc13-dbg/include/RawFile/RawFileMerger.h.

19{ return m_ignored; }

◆ ignored() [3/3]

uint32_t RawFileMerger::ignored ( ) const
inline

Definition at line 19 of file InstallArea/x86_64-el9-gcc13-opt/include/RawFile/RawFileMerger.h.

19{ return m_ignored; }

◆ mergeWithIndexFile() [1/3]

bool RawFileMerger::mergeWithIndexFile ( const std::string & file)

Definition at line 18 of file RawFileMerger.cxx.

18 {
19 if ( !m_fidx->open4read( file ) ) {
20 std::cerr << "Error: failed to open index file " << file << std::endl;
21 return false;
22 }
23
24 if ( !openDestFile( m_fcount ) ) {
25 std::cerr << "Error: failed to open destination file" << std::endl;
26 return false;
27 }
28
29 uint32_t* srcEvt = m_srcfile->nextEvent();
30
31 while ( srcEvt != nullptr ) {
32 // check if the file is too large
33 if ( m_fs.tellp() > 0xFFF00000 /* nearly to 4GB */ ) {
34 m_fs << m_srcfile->fileEndRecord();
35 m_fs.close();
36 if ( !openDestFile( ++m_fcount ) ) return false;
37 }
38
39 // find and read the CGEM data
40 uint32_t l1id = srcEvt[10 + srcEvt[5]] + 1; // +1 to match with the CGEM L1ID
41 uint32_t* cgemData = m_fidx->getCgemData( l1id );
42 if ( cgemData[1] != 0 ) {
43 // merge the CGEM data to the original event
44 uint32_t sizeWords = srcEvt[1] + cgemData[1];
45 uint32_t sizeBytes = sizeWords * sizeof( uint32_t );
46 uint32_t* destEvt = m_cache->reserve<uint32_t>( sizeWords );
47 auto nptr = mempcpy( destEvt, srcEvt, srcEvt[1] * sizeof( uint32_t ) );
48 memcpy( nptr, cgemData, cgemData[1] * sizeof( uint32_t ) );
49
50 destEvt[1] = sizeWords;
51 auto destDSR = m_srcfile->dataSeparatorRecord();
52 destDSR.setDataBlockSize( sizeBytes );
53
54 // write out the merged event
55 m_fs << destDSR;
56 m_fs.write( reinterpret_cast<const char*>( destEvt ), sizeBytes );
57 }
58 else {
59 std::cout << "Warning: CGEM with L1ID " << l1id << " will be ignored!!!" << std::endl;
60 ++m_ignored;
61 }
62
63 srcEvt = m_srcfile->nextEvent();
64 }
65
66 if ( m_srcfile->eof() ) {
67 m_fs << m_srcfile->fileEndRecord();
68 }
69 m_fs.close();
70
71 return true;
72}
char * file
Definition DQA_TO_DB.cxx:16

Referenced by BOOST_PYTHON_MODULE().

◆ mergeWithIndexFile() [2/3]

bool RawFileMerger::mergeWithIndexFile ( const std::string & file)

◆ mergeWithIndexFile() [3/3]

bool RawFileMerger::mergeWithIndexFile ( const std::string & file)

◆ setOutputDir() [1/3]

void RawFileMerger::setOutputDir ( const std::string & dir)
inline

Definition at line 15 of file Event/RawFile/include/RawFile/RawFileMerger.h.

15{ m_destdir = dir; }

Referenced by BOOST_PYTHON_MODULE().

◆ setOutputDir() [2/3]

void RawFileMerger::setOutputDir ( const std::string & dir)
inline

Definition at line 15 of file InstallArea/x86_64-el9-gcc13-dbg/include/RawFile/RawFileMerger.h.

15{ m_destdir = dir; }

◆ setOutputDir() [3/3]

void RawFileMerger::setOutputDir ( const std::string & dir)
inline

Definition at line 15 of file InstallArea/x86_64-el9-gcc13-opt/include/RawFile/RawFileMerger.h.

15{ m_destdir = dir; }

The documentation for this class was generated from the following files: