15 std::string trigname =
"Trig %d" + std::to_string(i);
16 if( i == 14 ) trigname +=
" (Start)";
17 if( i == 15 ) trigname +=
" (Stop)";
78 fp = fopen( _filename.data(),
"rb" );
80 std::cerr <<
"Unable to open " << _filename << std::endl;
85 fseek(
fp, 0, SEEK_END );
89 ptr = (
const UChar_t *)mmap(
nullptr,
len, PROT_READ, MAP_SHARED, fileno(
fp), 0);
90 if(
ptr == MAP_FAILED ) {
92 std::cerr << __FUNCTION__ <<
": Error mapping MBS file " << _filename << std::endl;
121 for(
unsigned int i = 0; i <
sevent_types.size(); i++ ) {
133 fp = fopen( _filename.data(),
"rb" );
135 std::cerr <<
"Unable to open " << _filename << std::endl;
140 fseek(
fp, 0, SEEK_END );
144 ptr = (
const UChar_t *)mmap(
nullptr,
len, PROT_READ, MAP_SHARED, fileno(
fp), 0);
145 if(
ptr == MAP_FAILED ) {
147 std::cerr << __FUNCTION__ <<
": Error mapping MED file " << _filename << std::endl;
188 struct sockaddr_in serv_addr;
189 if( !(
socket_id = socket( AF_INET, SOCK_STREAM, 0 )) ){
191 std::cerr <<
"Socket creation failed" << std::endl;
197 serv_addr.sin_family = AF_INET;
198 serv_addr.sin_port = htons(
port );
199 if( inet_pton( AF_INET,
server.data(), &serv_addr.sin_addr ) <= 0 ) {
201 std::cerr <<
"Invalid server address " <<
server << std::endl;
208 sizeof(serv_addr) )) < 0 ) {
210 std::cerr <<
"Failed to connect to " <<
server << std::endl;
248 UInt_t *val32 = (UInt_t *)(
ptr +
pos);
249 UInt_t
elen = val32[0];
257 UInt_t
slen = val32[4];
264 for( UInt_t i = 2; i < 4; i++ )
269 val32 = (UInt_t *)(
ptr +
pos);
278 for( UInt_t i = 2; i <
elen / 2 + 2; i++ )
287 val32 = (UInt_t *)(
ptr +
pos);
289 for( UInt_t i = 2; i <
elen / 2 + 2; i++ )
311 std::cerr <<
"End of file reached whilst trying to get next event" << std::endl;
323 std::cerr <<
"End of file before end of event" << std::endl;
331 for(
unsigned int i = 0; i <
event_types.size(); i++ ){
341 std::cerr <<
"Bad event type = " <<
etype << std::endl;
359 std::cout <<
"Start trigger #14" << std::endl;
365 std::cout <<
"Stop trigger #15" << std::endl;
375 std::cerr <<
"Bad trigger: " <<
trigger_id << std::endl;
422 char *vartmp = (
char *)(
ptr +
pos);
424 for(
int i = 0; i < (int)tmp_val.size(); i++ ){
425 mbs_subevt.
AddData( tmp_val[i] );
434 char *vartmp = (
char *)(
ptr +
pos);
436 for(
int i = 0; i < (int)tmp_val.size(); i++ ){
447 char *vartmp = (
char *)(
ptr +
pos);
449 for(
int i = 0; i < (int)tmp_val.size(); i++ ){
450 mbs_subevt.
AddData( tmp_val[i] );
460 char *vartmp = (
char *)(
ptr +
pos);
462 for(
int i = 0; i < (int)tmp_val.size(); i++ ){
475 int nextevt =
slen *
sizeof(
unsigned short);
481 std::cerr <<
"Reached the end of the file already" << std::endl;
519 for(
unsigned int i = 0; i <
buffer_types.size(); i++ ){
529 std::cerr <<
"Current buffer type incorrect. Expecting ";
531 std::cerr << std::endl;
548 etype = (type_tmp[0] << 16) | type_tmp[1];
557 stype = (type_tmp[0] << 16) | type_tmp[1];
559 for(
unsigned int i = 0; i <
sevent_types.size(); i++ ){
575 crateid = (char)( (proc_tmp[0] >> 8 ) & 0x00ff);
576 control = (char)(proc_tmp[0] & 0x00ff);
598 std::vector<short> s;
605 for(
int i = 0; i < count; i++ ) {
608 s.push_back( (((
short)b[1] << 8) & 0xff00) |
609 ((
short)b[0] & 0x00ff) );
615 for(
int i = 0; i < count; i++ ) {
618 s.push_back( (((
short)b[1] << 8) & 0xff00) |
619 ((
short)b[0] & 0x00ff) );
638 for(
int i = 0; i < count; i++ ) {
643 s.push_back( (((
int)b[3] << 24) & 0xff000000) |
644 (((
int)b[2] << 16) & 0x00ff0000) |
645 (((
int)b[1] << 8) & 0x0000ff00) |
646 ((
int)b[0] & 0x000000ff) );
651 for(
int i = 0; i < count; i++ ) {
656 s.push_back( (((
int)b[3] << 24) & 0xff000000) |
657 (((
int)b[2] << 16) & 0x00ff0000) |
658 (((
int)b[1] << 8) & 0x0000ff00) |
659 ((
int)b[0] & 0x000000ff) );
664 for(
int i = 0; i < count; i++ ) {
669 s.push_back( (((
int)b[3] << 24) & 0xff000000) |
670 (((
int)b[2] << 16) & 0x00ff0000) |
671 (((
int)b[1] << 8) & 0x0000ff00) |
672 ((
int)b[0] & 0x000000ff) );
678 for(
int i = 0; i < count; i++ ) {
683 s.push_back( (((
int)b[3] << 24) & 0xff000000) |
684 (((
int)b[2] << 16) & 0x00ff0000) |
685 (((
int)b[1] << 8) & 0x0000ff00) |
686 ((
int)b[0] & 0x000000ff) );
702 if( count <= 0 ) sin = std::string( in, std::strlen(in) );
703 else sin = std::string( in, count );
715 std::reverse( sout.begin(), sout.end() );
#define MBS_STYPE_VME_CAEN_V556_1
#define MBS_STYPE_VME_SIS_3
#define BYTE_ORDER_LSW
long word swap
#define MBS_STYPE_DEAD_TIME
#define MBS_STYPE_DATA_SHORT
#define MBS_STYPE_VME_CAEN_V1X90_3
#define MBS_STYPE_VME_CAEN_V1X90_1
#define MBS_STYPE_VME_SIS_3302_1
#define MBS_STYPE_VME_SIS_3300
#define MBS_STYPE_VME_CAEN_2
#define MBS_STYPE_VME_CAEN_V1X90_2
#define MBS_STYPE_CAMAC_DGF_3
#define MBS_STYPE_VME_SIS_3302_2
#define MBS_STYPE_VME_SIS_2
#define BYTE_ORDER_BSW
byte swap
#define MBS_STYPE_CAMAC_SILENA_2
#define MBS_STYPE_TIME_STAMP
#define MBS_STYPE_CAMAC_DGF_1
#define MBS_STYPE_VME_SIS_1
#define MBS_BTYPE_FHEADER
#define MBS_STYPE_CAMAC_DGF_2
#define MBS_STYPE_CAMAC_2
#define MBS_STYPE_VME_MADC_2
#define MBS_STYPE_HITBUF_1
#define BYTE_ORDER_REV
reverse order
#define MBS_STYPE_CAMAC_1
#define MBS_STYPE_VME_CAEN_V556_3
#define MBS_STYPE_VME_CAEN_V556_2
#define MBS_STYPE_DATA_INT
#define MBS_STYPE_CAMAC_SILENA_1
#define MBS_STYPE_CAMAC_WO_ID_2
#define MBS_STYPE_CAMAC_WO_ID_1
#define BYTE_ORDER_1_TO_1
1:1, nothing to do
#define MBS_STYPE_VME_CAEN_3
#define MBS_STYPE_VME_CAEN_1
#define MBS_STYPE_VME_MADC_3
#define MBS_STYPE_VME_SIS_3302_3
#define MBS_STYPE_VME_MADC_1
unsigned int GetType() const
void SetEventID(unsigned long long id)
void StoreSubEvent(MBSSubEvent _sevt)
void SetSubEventID(unsigned long id)
void SetSubEventElement(MBSBufferElem _stype)
void SetProcessorType(unsigned char ptype)
void SetDataLength(unsigned int len)
void SetCrateID(unsigned char id)
void AddData(short datum)
void SetModuleID(unsigned short id)
void AddData32(int datum)
std::vector< short > GetByteSwapShort(char *in, int count, int bo)
MBSBufferElem * current_btype
const MBSEvent * GetNextLmdEvent()
void OpenLmdFile(std::string _filename)
const MBSEvent * GetNextMedEvent()
void OpenMedFile(std::string _filename)
MBSBufferElem * current_stype
std::string GetByteSwapString(char *in, int count, int bo)
UInt_t GetNBuffers() const
int OpenEventServer(std::string _server, unsigned short _port)
const UChar_t * GetNextBuffer()
const UChar_t * GetBufferFromStream()
const MBSEvent * GetNextEventFromStream()
void ConvertEventHeader()
MBSBufferElem * current_etype
std::vector< MBSBufferElem > event_types
std::vector< MBSBufferElem > sevent_types
void ConvertSubEventHeader()
MBSBufferElem * current_trigger
std::vector< MBSBufferElem > buffer_types
std::vector< MBSBufferElem > triggers
MBSBufferElem * sevent_type_raw
std::vector< int > GetByteSwapInt(char *in, int count, int bo)
const UChar_t * GetBuffer(UInt_t i)
UInt_t l_time[2]
64-bit timestamp since 1970
UShort_t i_subtype
Subtype.
UShort_t i_used
Used length of data field in 16-bit words.
UInt_t l_dlen
Length of data in 16-bit words.
UInt_t l_dlen
Length of data in 16-bit words.
UInt_t l_count
Event number.
UShort_t i_dummy
Not used.
UInt_t l_dlen
data length + 2 in words
UShort_t i_procid
processor ID