BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
MucBuilder Class Reference

#include <MucBuilder.h>

Inheritance diagram for MucBuilder:

Public Member Functions

 MucBuilder ()
virtual ~MucBuilder ()
virtual StatusCode initialize (string &initFile)
virtual uint32_t getTEID (uint32_t reid)
virtual uint32_t getREID (uint32_t teid)
virtual void unPack (uint32_t reDigi, uint32_t &REId, uint32_t &FecData, uint32_t &StrSqc)
virtual StatusCode pack (MucDigiCol *digiCol, WriteRawEvent *&re)
 MucBuilder ()
virtual ~MucBuilder ()
virtual StatusCode initialize (string &initFile)
virtual uint32_t getTEID (uint32_t reid)
virtual uint32_t getREID (uint32_t teid)
virtual void unPack (uint32_t reDigi, uint32_t &REId, uint32_t &FecData, uint32_t &StrSqc)
virtual StatusCode pack (MucDigiCol *digiCol, WriteRawEvent *&re)
 MucBuilder ()
virtual ~MucBuilder ()
virtual StatusCode initialize (string &initFile)
virtual uint32_t getTEID (uint32_t reid)
virtual uint32_t getREID (uint32_t teid)
virtual void unPack (uint32_t reDigi, uint32_t &REId, uint32_t &FecData, uint32_t &StrSqc)
virtual StatusCode pack (MucDigiCol *digiCol, WriteRawEvent *&re)

Additional Inherited Members

Public Types inherited from Builder
typedef std::map< uint32_t, uint32_t > TE2REMAP
typedef std::map< uint32_t, uint32_t > TE2REMAP
typedef std::map< uint32_t, uint32_t > TE2REMAP
Static Public Member Functions inherited from Builder
static bool expect (ifstream &f, string msg, string fname)
static bool expectInt (ifstream &f, string msg, string fname, uint32_t &val1, uint32_t &val2)
static bool expectLong (ifstream &f, string msg, string fname, uint64_t &val)
static bool find (ifstream &f, string msg, string fname)
static bool expect (ifstream &f, string msg, string fname)
static bool expectInt (ifstream &f, string msg, string fname, uint32_t &val1, uint32_t &val2)
static bool expectLong (ifstream &f, string msg, string fname, uint64_t &val)
static bool find (ifstream &f, string msg, string fname)
static bool expect (ifstream &f, string msg, string fname)
static bool expectInt (ifstream &f, string msg, string fname, uint32_t &val1, uint32_t &val2)
static bool expectLong (ifstream &f, string msg, string fname, uint64_t &val)
static bool find (ifstream &f, string msg, string fname)
Protected Member Functions inherited from Builder
 Builder ()
virtual ~Builder ()
void append2event (WriteRawEvent *&re, uint32_t source_id, uint32_t size, uint32_t shift=0)
 Builder ()
virtual ~Builder ()
void append2event (WriteRawEvent *&re, uint32_t source_id, uint32_t size, uint32_t shift=0)
 Builder ()
virtual ~Builder ()
void append2event (WriteRawEvent *&re, uint32_t source_id, uint32_t size, uint32_t shift=0)
Protected Attributes inherited from Builder
uint32_t * m_buf
uint32_t m_status
Static Protected Attributes inherited from Builder
static string m_confFile

Detailed Description

Constructor & Destructor Documentation

◆ MucBuilder() [1/3]

MucBuilder::MucBuilder ( )

Definition at line 12 of file MucBuilder.cxx.

12 : Builder() {
13 if ( !m_fec2idFile.empty() ) return;
14 // m_propMgr.declareProperty("Fec2IdMap", m_fec2idFile);
15
16 // Get a pointer to the Job Options Service
17 // IJobOptionsSvc* jobSvc;
18 auto jobSvc = Gaudi::svcLocator()->service<IOptionsSvc>( "JobOptionsSvc" );
19 Gaudi::Parsers::parse( m_fec2idFile, jobSvc->get( "MucBuilder.Fec2IdMap" ) );
20
21 m_re2te = new uint32_t[1024];
22 strSqcVec = new uint32_t[1024];
23 memset( (void*)m_re2te, 0xFF, 1024 * sizeof( uint32_t ) );
24 memset( (void*)strSqcVec, 0, 1024 * sizeof( uint32_t ) );
25
26 initialize( m_fec2idFile );
27}
Builder()
Definition Builder.cxx:11
virtual StatusCode initialize(string &initFile)

◆ ~MucBuilder() [1/3]

MucBuilder::~MucBuilder ( )
virtual

Definition at line 29 of file MucBuilder.cxx.

29 {
30 delete m_re2te;
31 delete strSqcVec;
32}

◆ MucBuilder() [2/3]

MucBuilder::MucBuilder ( )

◆ ~MucBuilder() [2/3]

virtual MucBuilder::~MucBuilder ( )
virtual

◆ MucBuilder() [3/3]

MucBuilder::MucBuilder ( )

◆ ~MucBuilder() [3/3]

virtual MucBuilder::~MucBuilder ( )
virtual

Member Function Documentation

◆ getREID() [1/3]

uint32_t MucBuilder::getREID ( uint32_t teid)
virtual

Implements Builder.

Definition at line 109 of file MucBuilder.cxx.

109 {
110 TE2REMAP::iterator itr = m_te2reMap.find( teid );
111
112 if ( itr == m_te2reMap.end() )
113 {
114 cout << "wrong teid in muc " << teid << endl;
115 exit( 8 );
116 }
117
118 return itr->second;
119}

Referenced by pack().

◆ getREID() [2/3]

virtual uint32_t MucBuilder::getREID ( uint32_t teid)
virtual

Implements Builder.

◆ getREID() [3/3]

virtual uint32_t MucBuilder::getREID ( uint32_t teid)
virtual

Implements Builder.

◆ getTEID() [1/3]

virtual uint32_t MucBuilder::getTEID ( uint32_t reid)
inlinevirtual

Implements Builder.

Definition at line 15 of file Event/RawDataCnv/include/RawDataCnv/EventManagement/MucBuilder.h.

15 {
16 if ( reid > 1023 ) return 0xFFFFFFFF;
17 return m_re2te[reid];
18 }

◆ getTEID() [2/3]

virtual uint32_t MucBuilder::getTEID ( uint32_t reid)
inlinevirtual

Implements Builder.

Definition at line 15 of file InstallArea/x86_64-el9-gcc13-dbg/include/RawDataCnv/EventManagement/MucBuilder.h.

15 {
16 if ( reid > 1023 ) return 0xFFFFFFFF;
17 return m_re2te[reid];
18 }

◆ getTEID() [3/3]

virtual uint32_t MucBuilder::getTEID ( uint32_t reid)
inlinevirtual

Implements Builder.

Definition at line 15 of file InstallArea/x86_64-el9-gcc13-opt/include/RawDataCnv/EventManagement/MucBuilder.h.

15 {
16 if ( reid > 1023 ) return 0xFFFFFFFF;
17 return m_re2te[reid];
18 }

◆ initialize() [1/3]

StatusCode MucBuilder::initialize ( string & initFile)
virtual

Reimplemented from Builder.

Definition at line 80 of file MucBuilder.cxx.

80 {
81 ifstream fs( fec2idFile.c_str() );
82 if ( fs.bad() )
83 {
84 cerr << "Error: could not open file " << fec2idFile << endl;
85 return StatusCode::FAILURE;
86 }
87
88 fs.ignore( 256, '\n' );
89
90 int fec, part, seg, layer, firstStr, strSqc;
91
92 for ( int i = 0; i < 572; i++ )
93 {
94 fs >> fec >> part >> seg >> layer >> firstStr >> strSqc;
95 // reid ... teid
96 uint32_t reid = fec; // ?
97 uint32_t teid = MucID::getIntID( part, seg, layer, firstStr );
98 // if (strSqc < 0) teid |= 0x00F00000; // local teid
99
100 m_re2te[reid] = teid;
101 strSqcVec[reid] = strSqc + 1;
102 m_te2reMap.insert( TE2REMAP::value_type( teid, reid ) );
103 // cout << "teid " << teid << " reid " << reid << " strSqc " << strSqcVec[reid] << endl;
104 }
105
106 return StatusCode::SUCCESS;
107}
#define fs
static value_type getIntID(int barrel_ec, int segment, int layer, int channel)
Definition MucID.cxx:123

Referenced by MucBuilder().

◆ initialize() [2/3]

virtual StatusCode MucBuilder::initialize ( string & initFile)
virtual

Reimplemented from Builder.

◆ initialize() [3/3]

virtual StatusCode MucBuilder::initialize ( string & initFile)
virtual

Reimplemented from Builder.

◆ pack() [1/3]

StatusCode MucBuilder::pack ( MucDigiCol * digiCol,
WriteRawEvent *& re )
virtual

Definition at line 44 of file MucBuilder.cxx.

44 {
45 if ( digiCol == 0 )
46 {
47 cerr << "MdcBuilder::pack can't get digiCol" << endl;
48 return StatusCode::FAILURE;
49 }
50
51 uint32_t size = 0, index;
52 uint32_t teid, reid, channel;
53
54 MucDigiCol::const_iterator pMucDigi = digiCol->begin();
55 for ( pMucDigi; pMucDigi != digiCol->end(); pMucDigi++ )
56 {
57 teid = ( *pMucDigi )->getIntId();
58 reid = getREID( teid & 0xFFFFFFF0 );
59 channel =
60 ( strSqcVec[reid] == 0 ) ? ( 0x8000 >> ( teid & 0xF ) ) : ( 0x1 << ( teid & 0xF ) );
61 // set the value if the current reid has been in the buffer
62 for ( index = 0; index < size; index++ )
63 {
64 if ( ( m_buf[index] >> 16 ) == reid )
65 {
66 m_buf[index] |= channel;
67 break;
68 }
69 }
70 // otherwise, append the current reid and value to the buffer
71 if ( index == size ) m_buf[size++] = ( ( reid << 16 ) | ( channel ) );
72 }
73
74 append2event( re, 0xa40000, size );
75
76 return StatusCode::SUCCESS;
77}
void append2event(WriteRawEvent *&re, uint32_t source_id, uint32_t size, uint32_t shift=0)
Definition Builder.cxx:69
virtual uint32_t getREID(uint32_t teid)

◆ pack() [2/3]

virtual StatusCode MucBuilder::pack ( MucDigiCol * digiCol,
WriteRawEvent *& re )
virtual

◆ pack() [3/3]

virtual StatusCode MucBuilder::pack ( MucDigiCol * digiCol,
WriteRawEvent *& re )
virtual

◆ unPack() [1/3]

void MucBuilder::unPack ( uint32_t reDigi,
uint32_t & REId,
uint32_t & FecData,
uint32_t & StrSqc )
virtual

Definition at line 34 of file MucBuilder.cxx.

35 {
36 uint32_t fecAddr = ( reDigi & 0xFFFF0000 ) >> 16;
37 uint32_t module = ( fecAddr & 0xF800 ) >> 5;
38 REId = ( fecAddr & 0x07FF ) | module;
39 FecData = reDigi & 0xFFFF;
40 StrSqc = strSqcVec[REId];
41 return;
42}

◆ unPack() [2/3]

virtual void MucBuilder::unPack ( uint32_t reDigi,
uint32_t & REId,
uint32_t & FecData,
uint32_t & StrSqc )
virtual

◆ unPack() [3/3]

virtual void MucBuilder::unPack ( uint32_t reDigi,
uint32_t & REId,
uint32_t & FecData,
uint32_t & StrSqc )
virtual

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