Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
GANILAnalysis
MFMlib
Commits
41305f4e
Commit
41305f4e
authored
Nov 05, 2019
by
LEGEARD Luc
☢
Browse files
amend
parent
c3a7bea9
Changes
21
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
911 additions
and
485 deletions
+911
-485
sources/CMakeLists.txt
sources/CMakeLists.txt
+33
-6
sources/MFMAllFrames.h
sources/MFMAllFrames.h
+2
-1
sources/MFMBasicFrame.cc
sources/MFMBasicFrame.cc
+6
-2
sources/MFMBlobFrame.cc
sources/MFMBlobFrame.cc
+1
-1
sources/MFMBoxDiagFrame.cc
sources/MFMBoxDiagFrame.cc
+14
-205
sources/MFMBoxDiagFrame.h
sources/MFMBoxDiagFrame.h
+11
-47
sources/MFMCommonFrame.cc
sources/MFMCommonFrame.cc
+26
-21
sources/MFMDiamantFrame.cc
sources/MFMDiamantFrame.cc
+1
-22
sources/MFMDiamantFrame.h
sources/MFMDiamantFrame.h
+1
-6
sources/MFMEbyedatFrame.cc
sources/MFMEbyedatFrame.cc
+3
-0
sources/MFMExogamFrame.cc
sources/MFMExogamFrame.cc
+1
-1
sources/MFMMutantFrame.cc
sources/MFMMutantFrame.cc
+16
-16
sources/MFMMutantFrame.h
sources/MFMMutantFrame.h
+3
-2
sources/MFMNumExoFrame.cc
sources/MFMNumExoFrame.cc
+18
-5
sources/MFMNumExoFrame.h
sources/MFMNumExoFrame.h
+4
-2
sources/MFMReaScopeFrame.cc
sources/MFMReaScopeFrame.cc
+457
-0
sources/MFMTypes.h
sources/MFMTypes.h
+3
-1
sources/MFMVamosPDFrame.cc
sources/MFMVamosPDFrame.cc
+7
-4
sources/MFMlib.h
sources/MFMlib.h
+8
-0
sources/MFMtest.cc
sources/MFMtest.cc
+296
-143
No files found.
sources/CMakeLists.txt
View file @
41305f4e
...
...
@@ -2,9 +2,35 @@
cmake_minimum_required
(
VERSION 2.8.12
)
project
(
MFMlib
)
set
(
CMAKE_BUILD_TYPE Release
)
#set(CMAKE_BUILD_TYPE Release)
set
(
CMAKE_BUILD_TYPE Debug
)
configure_file
(
MFMlib.config MFMlib.h
)
macro
(
DATE RESULT
)
if
(
UNIX
)
execute_process
(
COMMAND
"date"
"+%y.%m.%d"
OUTPUT_VARIABLE
${
RESULT
}
)
string
(
REGEX REPLACE
"
\n
"
""
${
RESULT
}
${${
RESULT
}}
)
else
()
message
(
SEND_ERROR
"Unable to detect date"
)
SET
(
${
RESULT
}
00.00.00
)
endif
()
endmacro
()
macro
(
TIME RESULT
)
if
(
UNIX
)
execute_process
(
COMMAND
"date"
"+%H:%M:%S"
OUTPUT_VARIABLE
${
RESULT
}
)
string
(
REGEX REPLACE
"
\n
"
""
${
RESULT
}
${${
RESULT
}}
)
else
()
message
(
SEND_ERROR
"Unable to detect time"
)
set
(
${
RESULT
}
UNKNOWN
)
endif
()
endmacro
()
DATE
(
BUILD_MFM_DATE
)
TIME
(
BUILD_MFM_TIME
)
message
(
STATUS
"Compilation date =
${
BUILD_MFM_DATE
}
${
BUILD_MFM_TIME
}
"
)
configure_file
(
MFMlib.in MFMlib.in.h
)
# force -fPIC option n even in .a library
set
(
CMAKE_POSITION_INDEPENDENT_CODE ON
)
...
...
@@ -40,6 +66,7 @@ endif()
include_directories
(
${
CMAKE_BINARY_DIR
}
)
message
(
"-- CMAKE_CXX_FLAGS_RELEASE =
${
CMAKE_CXX_FLAGS_RELEASE
}
"
)
message
(
"-- CMAKE_CXX_FLAGS_DEBUG =
${
CMAKE_CXX_FLAGS_DEBUG
}
"
)
# Créé des variables avec les fichiers à compiler
set
(
SRCSlib
...
...
@@ -48,8 +75,8 @@ DataParameters.cc MFMBoxDiagFrame.cc MFMExogamFrame.cc MFMNumExoFrame.c
DataPar.cc MFMChimeraFrame.cc MFMOscilloFrame.cc MFMScalerDataFrame.cc
DataScal.cc MFMCoboFrame.cc MFMHelloFrame.cc MFMRibfFrame.cc DataScalers.cc
MFMCoboTopoFrame.cc MFMMergeFrame.cc MFMS3AlphaFrame.cc MFMVamosICFrame.cc
MError.cc MFMCommonFrame.cc MFMMutantFrame.cc MFMS3BaF2Frame.cc MFMVamosPDFrame.cc
MFMBasicFrame.cc MFMDiamantFrame.cc MFMNedaCompFrame.cc MFMS3eGUNFrame.cc MFMVamosTACFrame.cc
MError.cc MFMCommonFrame.cc MFMMutantFrame.cc MFMS3BaF2Frame.cc MFMVamosPDFrame.cc
MFMReaGenericFrame.cc
MFMBasicFrame.cc MFMDiamantFrame.cc MFMNedaCompFrame.cc MFMS3eGUNFrame.cc MFMVamosTACFrame.cc
MFMReaScopeFrame.cc
)
set
(
HEADERSlib
...
...
@@ -57,8 +84,8 @@ Cobo.h MError.h MFMCoboFrame.h MFMHelloFrame.h
DataGenParameters.h MFMAllFrames.h MFMCoboTopoFrame.h MFMMergeFrame.h MFMOscilloFrame.h MFMS3SynchroFrame.h MFMXmlDataDescriptionFrame.h
DataParameters.h MFMBasicFrame.h MFMCommonFrame.h MFMMutantFrame.h MFMRibfFrame.h MFMScalerDataFrame.h MFMXmlFileHeaderFrame.h
DataPar.h MFMBlobFrame.h MFMDiamantFrame.h MFMNedaCompFrame.h MFMS3AlphaFrame.h MFMTypes.h XmlTags.h
DataScalers.h MFMBoxDiagFrame.h MFMEbyedatFrame.h MFMNedaFrame.h MFMS3BaF2Frame.h MFMVamosICFrame.h
DataScal.h MFMChimeraFrame.h MFMExogamFrame.h MFMNedaFrame_old.h MFMS3eGUNFrame.h MFMVamosPDFrame.h
DataScalers.h MFMBoxDiagFrame.h MFMEbyedatFrame.h MFMNedaFrame.h MFMS3BaF2Frame.h MFMVamosICFrame.h
MFMReaScopeFrame.h
DataScal.h MFMChimeraFrame.h MFMExogamFrame.h MFMNedaFrame_old.h MFMS3eGUNFrame.h MFMVamosPDFrame.h
MFMReaGenericFrame.h
)
...
...
sources/MFMAllFrames.h
View file @
41305f4e
...
...
@@ -30,6 +30,7 @@
#include "MFMS3RuthFrame.h"
#include "MFMS3eGUNFrame.h"
#include "MFMS3SynchroFrame.h"
#include "MFMReaGenericFrame.h"
#include "MFMReaScopeFrame.h"
#endif
sources/MFMBasicFrame.cc
View file @
41305f4e
...
...
@@ -104,8 +104,12 @@ string MFMBasicFrame::GetHeaderDisplay(char* infotext) {
stringstream
ss
;
ss
.
str
(
""
);
string
display
(
""
);
ss
<<
MFMCommonFrame
::
GetHeaderDisplay
(
infotext
);
ss
<<
" HeaderSize = "
<<
GetHeaderSize
();
if
(
infotext
==
NULL
)
ss
<<
MFMCommonFrame
::
GetHeaderDisplay
((
char
*
)(
WhichFrame
().
data
()));
else
ss
<<
MFMCommonFrame
::
GetHeaderDisplay
(
infotext
);
ss
<<
" HeaderSize = "
<<
GetHeaderSize
();
ss
<<
" ItemSize = "
<<
GetItemSize
();
ss
<<
" NbItems = "
<<
GetNbItems
();
ss
<<
"
\n
"
;
...
...
sources/MFMBlobFrame.cc
View file @
41305f4e
...
...
@@ -16,13 +16,13 @@ using namespace std;
//_______________________________________________________________________________
MFMBlobFrame
::
MFMBlobFrame
(
int
unitBlock_size
,
int
dataSource
,
int
frameType
,
int
revision
,
int
frameSize
){
MFMCommonFrame
::
MFM_make_header
(
unitBlock_size
,
dataSource
,
frameType
,
revision
,
frameSize
);
}
//_______________________________________________________________________________
MFMBlobFrame
::
MFMBlobFrame
()
{
}
//_______________________________________________________________________________
MFMBlobFrame
::~
MFMBlobFrame
(){
...
...
sources/MFMBoxDiagFrame.cc
View file @
41305f4e
...
...
@@ -14,149 +14,15 @@ using namespace std;
#include "MFMBoxDiagFrame.h"
//_______________________________________________________________________________
MFMBoxDiagFrame
::
MFMBoxDiagFrame
(
int
unitBlock_size
,
int
dataSource
,
int
frameType
,
int
revision
,
int
frameSize
,
int
headerSize
)
{
/// Constructor for a Box Diagnostics frame . the header is filled with unitblock_size, data source , frame type , revision , frame, size and header size value
SetPointers
();
fCountNbEventCard
=
NULL
;
}
//_______________________________________________________________________________
MFMBoxDiagFrame
::
MFMBoxDiagFrame
()
{
/// Constructor for a empty Box Diagnostic frame
fCountNbEventCard
=
NULL
;
}
//_______________________________________________________________________________
MFMBoxDiagFrame
::~
MFMBoxDiagFrame
()
{
/// destructor of BoxDiag frame
if
(
fCountNbEventCard
){
delete
[]
fCountNbEventCard
;
fCountNbEventCard
=
NULL
;
}
}
//_______________________________________________________________________________
void
MFMBoxDiagFrame
::
SetBufferSize
(
int
size
,
bool
ifinferior
)
{
MFMBlobFrame
::
SetBufferSize
(
size
,
ifinferior
);
MFMBoxDiagFrame
::
SetPointers
();
}
//_______________________________________________________________________________
void
MFMBoxDiagFrame
::
SetPointers
(
void
*
pt
)
{
MFMBlobFrame
::
SetPointers
(
pt
);
pHeader
=
(
MFM_topcommon_header
*
)
pData
;
pData_char
=
(
char
*
)
pData
;
}
//_______________________________________________________________________________
void
MFMBoxDiagFrame
::
SetAttributs
(
void
*
pt
)
{
SetPointers
(
pt
);
MFMBlobFrame
::
SetAttributs
(
pt
);
pUserData_char
=
(
char
*
)
&
(((
MFM_BoxDiag_frame
*
)
pHeader
)
->
BoxDiagData
);
}
//_______________________________________________________________________________
uint64_t
MFMBoxDiagFrame
::
GetTimeStamp
()
{
/// Computer, set attibut and return value of time stamp from frame
fTimeStamp
=
0
;
uint64_t
*
timeStamp
=
&
(
fTimeStamp
);
memcpy
(((
char
*
)
(
&
fTimeStamp
)),
((
MFM_BoxDiag_frame
*
)
pHeader
)
->
BoxDiagEventInfo
.
EventTime
,
6
);
if
(
fLocalIsBigEndian
!=
fFrameIsBigEndian
)
SwapInt64
((
timeStamp
),
6
);
return
fTimeStamp
;
}
//_______________________________________________________________________________
uint64_t
MFMBoxDiagFrame
::
GetTimeStampAttribut
()
{
/// Return attibut of time stamp
return
fTimeStamp
;
}
//_______________________________________________________________________________
uint32_t
MFMBoxDiagFrame
::
GetEventNumber
()
{
/// Computer, set attibut and return value of event number from frame
fEventNumber
=
0
;
char
*
eventNumber
=
(
char
*
)
&
(
fEventNumber
);
fEventNumber
=
((
MFM_BoxDiag_frame
*
)
pHeader
)
->
BoxDiagEventInfo
.
EventIdx
;
if
(
fLocalIsBigEndian
!=
fFrameIsBigEndian
)
SwapInt32
((
uint32_t
*
)
(
eventNumber
),
4
);
return
fEventNumber
;
}
//_______________________________________________________________________________
uint32_t
MFMBoxDiagFrame
::
GetEventNumberAttribut
()
{
/// Return attibut of event number
return
fEventNumber
;
}
//_______________________________________________________________________________
void
MFMBoxDiagFrame
::
SetTimeStamp
(
uint64_t
timestamp
)
{
/// Set value of Time Stamp in frame
char
*
pts
=
(
char
*
)
&
timestamp
;
timestamp
=
timestamp
&
0x0000ffffffffffff
;
memcpy
(((
MFM_BoxDiag_frame
*
)
pHeader
)
->
BoxDiagEventInfo
.
EventTime
,
pts
,
6
);
}
//_______________________________________________________________________________
void
MFMBoxDiagFrame
::
SetEventNumber
(
uint32_t
eventnumber
)
{
/// Set Event Number of frame
((
MFM_BoxDiag_frame
*
)
pHeader
)
->
BoxDiagEventInfo
.
EventIdx
=
eventnumber
;
}
//_______________________________________________________________________________
void
MFMBoxDiagFrame
::
SetCristalId
(
uint16_t
cristalId
)
{
/// Set 16 bits of CristalIdx
((
MFM_BoxDiag_frame
*
)
pHeader
)
->
BoxDiagData
.
CristalId
=
cristalId
;
}
//_______________________________________________________________________________
void
MFMBoxDiagFrame
::
SetCristalId
(
uint16_t
tgRequest
,
uint16_t
idBoard
)
{
// Methode to fill item in case of MFM_COBO_FRAME_TYPE frame
uint16_t
ui
,
ui2
;
ui2
=
0
;
//trig request form 0 to 4
ui2
=
tgRequest
&
BOX_DIAG_TRIG_REQ_CRYS_ID_MASK
;
//id board from 5 to 15
ui
=
idBoard
&
BOX_DIAG_BOARD_ID_MASK
;
ui
=
ui
<<
5
;
ui2
=
ui2
|
ui
;
SetCristalId
(
ui2
);
}
//_______________________________________________________________________________
uint16_t
MFMBoxDiagFrame
::
GetCristalId
()
{
uint16_t
cristal
=
0
;
/// Compute and return the 2 bytes of CristalId()
cristal
=
((
MFM_BoxDiag_frame
*
)
pHeader
)
->
BoxDiagData
.
CristalId
;
if
(
fLocalIsBigEndian
!=
fFrameIsBigEndian
)
SwapInt16
((
&
cristal
));
return
((
cristal
));
}
//_______________________________________________________________________________
uint16_t
MFMBoxDiagFrame
::
GetTGCristalId
()
{
/// Compute and return extracted Trigger Request value of CristalId
return
(
GetCristalId
()
&
BOX_DIAG_TRIG_REQ_CRYS_ID_MASK
);
}
//_______________________________________________________________________________
uint16_t
MFMBoxDiagFrame
::
GetBoardId
()
{
/// Compute and return id value of Board
return
((
GetCristalId
()
>>
5
)
&
BOX_DIAG_BOARD_ID_MASK
);
}
//_______________________________________________________________________________
void
MFMBoxDiagFrame
::
SetStatus
(
int
i
,
uint16_t
status
)
{
if
(
i
<
0
and
i
>
BOX_DIAG_NB_STATUS
)
cout
<<
"MFMBoxDiagFrame::BoxDiagSetStatus Error of status index
\n
"
;
if
(
i
==
0
)
((
MFM_BoxDiag_frame
*
)
pHeader
)
->
BoxDiag
Data
.
Status1
=
status
;
((
MFM_BoxDiag_frame
*
)
pHeader
)
->
Data
.
Status1
=
status
;
if
(
i
==
1
)
((
MFM_BoxDiag_frame
*
)
pHeader
)
->
BoxDiag
Data
.
Status2
=
status
;
((
MFM_BoxDiag_frame
*
)
pHeader
)
->
Data
.
Status2
=
status
;
}
//_______________________________________________________________________________
...
...
@@ -168,9 +34,9 @@ uint16_t MFMBoxDiagFrame::GetStatus(int i) {
return
0
;
}
else
{
if
(
i
==
0
)
status
=
(((
MFM_BoxDiag_frame
*
)
pHeader
)
->
BoxDiag
Data
.
Status1
);
status
=
(((
MFM_BoxDiag_frame
*
)
pHeader
)
->
Data
.
Status1
);
if
(
i
==
1
)
status
=
(((
MFM_BoxDiag_frame
*
)
pHeader
)
->
BoxDiag
Data
.
Status2
);
status
=
(((
MFM_BoxDiag_frame
*
)
pHeader
)
->
Data
.
Status2
);
}
if
(
fLocalIsBigEndian
!=
fFrameIsBigEndian
)
SwapInt16
(
&
status
);
...
...
@@ -178,16 +44,16 @@ uint16_t MFMBoxDiagFrame::GetStatus(int i) {
}
//_______________________________________________________________________________
void
MFMBoxDiagFrame
::
SetTimeStop
(
uint16_t
time
)
{
void
MFMBoxDiagFrame
::
SetTimeStop
(
uint16_t
time
stop
)
{
/// Set Time
((
MFM_BoxDiag_frame
*
)
pHeader
)
->
BoxDiag
Data
.
TimeStop
=
time
;
((
MFM_BoxDiag_frame
*
)
pHeader
)
->
Data
.
TimeStop
=
time
stop
;
}
//_______________________________________________________________________________
uint16_t
MFMBoxDiagFrame
::
GetTimeStop
()
{
/// Get Time
uint16_t
time
;
time
=
(((
MFM_BoxDiag_frame
*
)
pHeader
)
->
BoxDiag
Data
.
TimeStop
);
time
=
(((
MFM_BoxDiag_frame
*
)
pHeader
)
->
Data
.
TimeStop
);
if
(
fLocalIsBigEndian
!=
fFrameIsBigEndian
)
SwapInt16
(
&
time
);
return
time
;
...
...
@@ -196,7 +62,7 @@ uint16_t MFMBoxDiagFrame::GetTimeStop() {
void
MFMBoxDiagFrame
::
SetEnergy
(
uint16_t
energy
)
{
/// Set Energy
((
MFM_BoxDiag_frame
*
)
pHeader
)
->
BoxDiag
Data
.
Energy
=
energy
;
((
MFM_BoxDiag_frame
*
)
pHeader
)
->
Data
.
Energy
=
energy
;
}
//_______________________________________________________________________________
...
...
@@ -204,7 +70,7 @@ void MFMBoxDiagFrame::SetEnergy(uint16_t energy) {
uint16_t
MFMBoxDiagFrame
::
GetEnergy
()
{
/// Get Energy
uint16_t
energy
;
energy
=
(((
MFM_BoxDiag_frame
*
)
pHeader
)
->
BoxDiag
Data
.
Energy
);
energy
=
(((
MFM_BoxDiag_frame
*
)
pHeader
)
->
Data
.
Energy
);
if
(
fLocalIsBigEndian
!=
fFrameIsBigEndian
)
SwapInt16
(
&
energy
);
return
energy
;
...
...
@@ -213,14 +79,14 @@ uint16_t MFMBoxDiagFrame::GetEnergy() {
void
MFMBoxDiagFrame
::
SetTime
(
uint16_t
time
)
{
/// Set Time
((
MFM_BoxDiag_frame
*
)
pHeader
)
->
BoxDiag
Data
.
Time
=
time
;
((
MFM_BoxDiag_frame
*
)
pHeader
)
->
Data
.
Time
=
time
;
}
//_______________________________________________________________________________
uint16_t
MFMBoxDiagFrame
::
GetTime
()
{
/// Get Time
uint16_t
time
;
time
=
(((
MFM_BoxDiag_frame
*
)
pHeader
)
->
BoxDiag
Data
.
Time
);
time
=
(((
MFM_BoxDiag_frame
*
)
pHeader
)
->
Data
.
Time
);
if
(
fLocalIsBigEndian
!=
fFrameIsBigEndian
)
SwapInt16
(
&
time
);
return
time
;
...
...
@@ -229,14 +95,14 @@ uint16_t MFMBoxDiagFrame::GetTime() {
void
MFMBoxDiagFrame
::
SetChecksum
(
uint16_t
cksum
)
{
/// Set Checksum data
(((
MFM_BoxDiag_frame
*
)
pHeader
)
->
BoxDiag
Data
.
Checksum
)
=
cksum
;
(((
MFM_BoxDiag_frame
*
)
pHeader
)
->
Data
.
Checksum
)
=
cksum
;
}
//_______________________________________________________________________________
uint16_t
MFMBoxDiagFrame
::
GetChecksum
()
{
/// Compute and return value of Checksum
uint16_t
cksum
;
cksum
=
(((
MFM_BoxDiag_frame
*
)
pHeader
)
->
BoxDiag
Data
.
Checksum
);
cksum
=
(((
MFM_BoxDiag_frame
*
)
pHeader
)
->
Data
.
Checksum
);
if
(
fLocalIsBigEndian
!=
fFrameIsBigEndian
)
SwapInt16
(
&
cksum
);
return
cksum
;
...
...
@@ -248,72 +114,15 @@ void MFMBoxDiagFrame::FillEventRandomConst(uint64_t timestamp,
/// Fill all data of frame with random values to do test
/// And report time stamp and event number
MFMNumExoFrame
::
FillEventRandomConst
(
timestamp
,
enventnumber
);
int
value
=
random
();
uint16_t
uivalue
=
(
uint16_t
)
(
4294967296
*
value
/
RAND_MAX
);
SetTimeStop
(
uivalue
+
2
);
SetEnergy
(
uivalue
);
SetTime
(
uivalue
+
1
);
SetCristalId
(
8
,
112
);
SetEventNumber
(
enventnumber
);
SetTimeStamp
(
timestamp
);
}
//_______________________________________________________________________________
string
MFMBoxDiagFrame
::
GetHeaderDisplay
(
char
*
infotext
)
{
stringstream
ss
(
""
);
string
display
(
""
);
display
=
ss
.
str
();
if
(
infotext
==
NULL
)
ss
<<
MFMCommonFrame
::
GetHeaderDisplay
((
char
*
)
"--BoxDiag Frame--"
);
else
ss
<<
MFMCommonFrame
::
GetHeaderDisplay
(
infotext
);
ss
<<
" BoardId ="
<<
GetBoardId
();
ss
<<
" Cristal Id ="
<<
GetTGCristalId
();
ss
<<
" EN = "
<<
GetEventNumber
();
ss
<<
" TS = "
<<
GetTimeStamp
();
display
=
ss
.
str
();
return
display
;
}
//____________________________________________________________________
void
MFMBoxDiagFrame
::
FillStat
()
{
MFMCommonFrame
::
FillStat
();
uint16_t
id
;
id
=
GetCristalId
();
fCountNbEventCard
[
id
]
++
;
}
//_______________________________________________________________________________
void
MFMBoxDiagFrame
::
InitStat
()
{
MFMCommonFrame
::
InitStat
();
int
i
;
fCountNbEventCard
=
new
long
long
[
65536
];
for
(
i
=
0
;
i
<
65536
;
i
++
){
fCountNbEventCard
[
i
]
=
0
;
}
}
//____________________________________________________________________
string
MFMBoxDiagFrame
::
GetStat
(
string
info
){
string
display
(
""
);
stringstream
ss
(
""
);
ss
<<
MFMCommonFrame
::
GetStat
(
info
);
int
i
,
j
;
int
total
=
0
;
for
(
i
=
0
;
i
<
65536
;
i
++
){
if
(
fCountNbEventCard
[
i
]
!=
0
){
j
=
i
;
ss
<<
"Card "
<<
((
j
>>
5
)
&
BOX_DIAG_BOARD_ID_MASK
);
j
=
i
;
ss
<<
" Cristal "
<<
(
j
&
BOX_DIAG_TRIG_REQ_CRYS_ID_MASK
);
ss
<<
" NbEvents = "
<<
fCountNbEventCard
[
i
]
<<
"
\n
"
;
total
+=
fCountNbEventCard
[
i
];
}
}
ss
<<
"Total MFMBoxDiagFrame = "
<<
total
<<
"
\n
"
;
display
=
ss
.
str
();
return
display
;
}
sources/MFMBoxDiagFrame.h
View file @
41305f4e
#ifndef _MFMBoxDiagFrame_
#define _MFMBoxDiagFrame_
/*
MFMBoxDiagFrame.h
Copyright Acquisition group, GANIL Caen, France
*/
#define BOX_DIAG_FRAMESIZE 32
#define BOX_DIAG_HEADERFRAMESIZE 18
#define BOX_DIAG_TRIG_REQ_CRYS_ID_MASK 0x001f
#define BOX_DIAG_BOARD_ID_MASK 0x07ff
#include "MFMNumExoFrame.h"
#define BOX_DIAG_NB_STATUS 2
#define BOX_DIAG_STD_UNIT_BLOCK_SIZE 4
#define BOX_DIAG_NB_CHANNELS 16
#include "MFMBlobFrame.h"
#pragma pack(push, 1) // force alignment
struct
MFM_BoxDiag_eventInfo
{
unsigned
EventIdx
:
32
;
char
EventTime
[
6
];
};
struct
MFM_BoxDiag_data
{
...
...
@@ -36,66 +31,35 @@ struct MFM_BoxDiag_data{
struct
MFM_BoxDiag_frame
{
MFM_common_header
BoxDiagBlob
Header
;
MFM_
BoxDiag
_eventInfo
BoxDiag
EventInfo
;
MFM_BoxDiag_data
BoxDiag
Data
;
MFM_common_header
Header
;
MFM_
numexo
_eventInfo
EventInfo
;
MFM_BoxDiag_data
Data
;
};
//____________MFMBoxDiagFrame___________________________________________________________
class
MFMBoxDiagFrame
:
public
MFM
Blob
Frame
class
MFMBoxDiagFrame
:
public
MFM
NumExo
Frame
{
private:
long
long
*
fCountNbEventCard
;
uint64_t
fTimeStamp
;
int
fEventNumber
;
public
:
MFMBoxDiagFrame
();
MFMBoxDiagFrame
(
int
unitBlock_size
,
int
dataSource
,
int
frameType
,
int
revision
,
int
frameSize
,
int
headerSize
);
virtual
~
MFMBoxDiagFrame
();
virtual
void
SetPointers
(
void
*
pt
=
NULL
);
virtual
void
SetBufferSize
(
int
size
,
bool
ifinferior
)
;
virtual
void
SetAttributs
(
void
*
pt
=
NULL
);
virtual
uint64_t
GetTimeStamp
();
virtual
uint64_t
GetTimeStampAttribut
();
virtual
uint32_t
GetEventNumberAttribut
();
virtual
uint32_t
GetEventNumber
();
virtual
void
SetTimeStamp
(
uint64_t
timestamp
);
virtual
void
SetEventNumber
(
uint32_t
eventnumber
);
virtual
string
GetHeaderDisplay
(
char
*
infotext
=
NULL
);
void
SetCristalId
(
uint16_t
cristalId
)
;
void
SetCristalId
(
uint16_t
tgRequest
,
uint16_t
idBoard
);
uint16_t
GetCristalId
();
uint16_t
GetTGCristalId
();
uint16_t
GetBoardId
();
virtual
void
SetStatus
(
int
i
,
uint16_t
status
);
virtual
uint16_t
GetStatus
(
int
i
);
virtual
void
SetTimeStop
(
uint16_t
energy
);
virtual
void
SetTimeStop
(
uint16_t
timestop
);
virtual
uint16_t
GetTimeStop
();
virtual
void
SetEnergy
(
uint16_t
energy
);
virtual
uint16_t
GetEnergy
();
virtual
void
SetTime
(
uint16_t
energy
);
virtual
void
SetTime
(
uint16_t
time
);
virtual
uint16_t
GetTime
();
virtual
void
SetChecksum
(
uint16_t
cksum
);
virtual
uint16_t
GetChecksum
();
virtual
void
FillEventRandomConst
(
uint64_t
timestamp
=
0
,
uint32_t
enventnumber
=
0
);
virtual
void
InitStat
();
virtual
void
FillStat
();
virtual
string
GetStat
(
string
info
);
};
#pragma pack(pop) // free aligment
...
...
sources/MFMCommonFrame.cc
View file @
41305f4e
...
...
@@ -381,6 +381,7 @@ string MFMCommonFrame::GetHeaderDisplay(char* infotext) {
blob
=
true
;
int
unitBlockSize
=
GetUnitBlockSize
();
GetFrameType
();
if
(
infotext
==
NULL
)
ss
<<
"MFM header, Type :"
<<
WhichFrame
()
<<
" "
;
if
(
infotext
!=
NULL
)
...
...
@@ -689,7 +690,7 @@ int MFMCommonFrame::FillBigBufferFromFile(int fLun, char* vector,
//____________________________________________________________________
int
MFMCommonFrame
::
ReadInFile
(
int
*
fLun
,
char
**
vector
,
int
*
vectorsize
)
{
/// Get data from a file, and fill current frame and initialize its attributs and its pointer
/// if size of actual frame is not enough, a
nd
new size is reallocated
/// if size of actual frame is not enough, a new size is reallocated
/// fLun : descriptor of file (given by a previous open)
/// vector : pointer on pointer will contain frame . if size isn't big, a new value of pointer
/// vectorsize of this pointer
...
...
@@ -812,46 +813,46 @@ uint64_t MFMCommonFrame::GetTimeStamp() {
}
//____________________________________________________________________
string
MFMCommonFrame
::
WhichFrame
(
uint16_t
type
)
{
string
tempos
=
"UNKNOWN_TYPE"
;
uint16_t
testype
=
type
;
if
(
type
==
0
)
{
tes
type
=
fFrameType
;
type
=
fFrameType
;
}
if
(
tes
type
==
MFM_COBO_FRAME_TYPE
)
if
(
type
==
MFM_COBO_FRAME_TYPE
)
tempos
=
"MFM_COBO_FRAME_TYPE"
;
if
(
tes
type
==
MFM_COBOF_FRAME_TYPE
)
if
(
type
==
MFM_COBOF_FRAME_TYPE
)
tempos
=
"MFM_COBOF_FRAME_TYPE"
;
if
(
tes
type
==
MFM_COBOT_FRAME_TYPE
)
if
(
type
==
MFM_COBOT_FRAME_TYPE
)
tempos
=
"MFM_COBOT_FRAME_TYPE"
;
if
(
tes
type
==
MFM_EXO2_FRAME_TYPE
)
if
(
type
==
MFM_EXO2_FRAME_TYPE
)
tempos
=
"MFM_EXO2_FRAME_TYPE"
;
if
(
tes
type
==
MFM_OSCI_FRAME_TYPE
)
if
(
type
==
MFM_OSCI_FRAME_TYPE
)
tempos
=
"MFM_OSCI_FRAME_TYPE"
;
if
(
tes
type
==
MFM_NEDA_FRAME_TYPE
)
if
(
type
==
MFM_NEDA_FRAME_TYPE
)
tempos
=
"MFM_NEDA_FRAME_TYPE"
;
if
(
tes
type
==
MFM_NEDACOMP_FRAME_TYPE
)
if
(
type
==
MFM_NEDACOMP_FRAME_TYPE
)
tempos
=
"MFM_NEDACOMP_FRAME_TYPE"
;
if
(
tes
type
==
MFM_EBY_EN_FRAME_TYPE
)
if
(
type
==
MFM_EBY_EN_FRAME_TYPE
)
tempos
=
"MFM_EBY_EN_FRAME_TYPE"
;
if
(
tes
type
==
MFM_EBY_TS_FRAME_TYPE
)
if
(
type
==
MFM_EBY_TS_FRAME_TYPE
)
tempos
=
"MFM_EBY_TS_FRAME_TYPE"
;
if
(
tes
type
==
MFM_EBY_EN_TS_FRAME_TYPE
)
if
(
type
==
MFM_EBY_EN_TS_FRAME_TYPE
)
tempos
=
"MFM_EBY_EN_TS_FRAME_TYPE"
;
if
(
tes
type
==
MFM_SCALER_DATA_FRAME_TYPE
)
if
(
type
==
MFM_SCALER_DATA_FRAME_TYPE
)
tempos
=
"MFM_SCALER_DATA_FRAME_TYPE"
;
if
(
tes
type
==
MFM_MERGE_EN_FRAME_TYPE
)
if
(
type
==
MFM_MERGE_EN_FRAME_TYPE
)
tempos
=
"MFM_MERGE_EN_FRAME_TYPE"
;
if
(
tes
type
==
MFM_XML_DATA_DESCRIPTION_FRAME_TYPE
)
if
(
type
==
MFM_XML_DATA_DESCRIPTION_FRAME_TYPE
)
tempos
=
"MFM_XML_DATA_DESCRIPTION_FRAME_TYPE"
;
if
(
tes
type
==
MFM_RIBF_DATA_FRAME_TYPE
)
if
(
type
==
MFM_RIBF_DATA_FRAME_TYPE
)
tempos
=
"MFM_RIBF_DATA_FRAME_TYPE"
;
if
(
tes
type
==
MFM_MUTANT_FRAME_TYPE
)
if
(
type
==
MFM_MUTANT_FRAME_TYPE
)
tempos
=
"MFM_MUTANT_FRAME_TYPE"
;
if
(
tes
type
==
MFM_CHIMERA_DATA_FRAME_TYPE
)
if
(
type
==
MFM_CHIMERA_DATA_FRAME_TYPE
)
tempos
=
"MFM_CHIMERA_DATA_FRAME_TYPE"
;
if
(
tes
type
==
MFM_HELLO_FRAME_TYPE
)
if
(
type
==
MFM_HELLO_FRAME_TYPE
)
tempos
=
"MFM_HELLO_FRAME_TYPE"
;
if
(
tes
type
==
MFM_XML_FILE_HEADER_FRAME_TYPE
)
if
(
type
==
MFM_XML_FILE_HEADER_FRAME_TYPE
)
tempos
=
"MFM_XML_FILE_HEADER_FRAME_TYPE"
;
if
(
type
==
MFM_VAMOSIC_FRAME_TYPE
)
tempos
=
"MFM_VAMOSIC_FRAME_TYPE"
;
...
...
@@ -869,6 +870,10 @@ string MFMCommonFrame::WhichFrame(uint16_t type) {
tempos
=
"MFM_S3_EGUN_FRAME_TYPE"
;
if
(
type
==
MFM_S3_SYNC_FRAME_TYPE
)
tempos
=
"MFM_S3_SYNC_FRAME_TYPE"
;
if
(
type
==
MFM_REA_GENE_FRAME_TYPE
)
tempos
=
"MFM_REA_GENE_FRAME_TYPE"
;
if
(
type
==
MFM_REA_SCOPE_FRAME_TYPE
)
tempos
=
"MFM_REA_SCOPE_FRAME_TYPE"
;
return
tempos
;
}
//____________________________________________________________________
...
...
sources/MFMDiamantFrame.cc