Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Lst
lst-data-process-128
Commits
2811a30b
Commit
2811a30b
authored
Dec 02, 2016
by
legoc
Browse files
Reviewed and generalised the structure of event to integrate new board
firmwares.
parent
ffe3af9b
Changes
39
Hide whitespace changes
Inline
Side-by-side
CHANGELOG
View file @
2811a30b
Version 1.1.0, 2016-?-?
-------------------------
- Integrated new boards
- New interface to access data
- Added columns to lstreader128
- Relative time is related to a board
Version 1.0.3, 2016-10-11
Version 1.0.3, 2016-10-11
-------------------------
-------------------------
- Corrected missing jump when a bad event is read in EventArrayAlgorithm.
- Corrected missing jump when a bad event is read in EventArrayAlgorithm.
...
@@ -5,10 +13,12 @@ Version 1.0.3, 2016-10-11
...
@@ -5,10 +13,12 @@ Version 1.0.3, 2016-10-11
- Corrected using time base for calculating rates. Added the lstrates128 application.
- Corrected using time base for calculating rates. Added the lstrates128 application.
- Corrected reading of the 1724 board (30bits of timestamp with 2 bits of zero)
- Corrected reading of the 1724 board (30bits of timestamp with 2 bits of zero)
Version 1.0.2, 2016-07-11
Version 1.0.2, 2016-07-11
-------------------------
-------------------------
- Corrected boost dependencies.
- Corrected boost dependencies.
Version 1.0.1, 2016-05-05
Version 1.0.1, 2016-05-05
-------------------------
-------------------------
- Minor corrections.
- Minor corrections.
...
...
configure.ac
View file @
2811a30b
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
# This configure.ac script is free software; the Free Software Foundation
# This configure.ac script is free software; the Free Software Foundation
# gives unlimited permission to copy, distribute and modify it.
# gives unlimited permission to copy, distribute and modify it.
AC_INIT([lstdataprocess128], [1.
0.3
])
AC_INIT([lstdataprocess128], [1.
1.0
])
LIBRARY_VERSION=1:0:3
LIBRARY_VERSION=1:0:3
...
...
src/Makefile.am
View file @
2811a30b
...
@@ -7,6 +7,7 @@ nobase_include_HEADERS = \
...
@@ -7,6 +7,7 @@ nobase_include_HEADERS = \
lstdpp128/Reader.h
\
lstdpp128/Reader.h
\
lstdpp128/EventBlockArray.h
\
lstdpp128/EventBlockArray.h
\
lstdpp128/Event.h
\
lstdpp128/Event.h
\
lstdpp128/EventData.h
\
lstdpp128/BaseReader.h
\
lstdpp128/BaseReader.h
\
lstdpp128/EventArray.h
\
lstdpp128/EventArray.h
\
lstdpp128/LiveReader.h
\
lstdpp128/LiveReader.h
\
...
...
src/lstdpp128/Check.cpp
View file @
2811a30b
...
@@ -95,7 +95,7 @@ void Check::processBadEvent(Event const & event) {
...
@@ -95,7 +95,7 @@ void Check::processBadEvent(Event const & event) {
void
Check
::
processEvent
(
Event
const
&
event
)
{
void
Check
::
processEvent
(
Event
const
&
event
)
{
_numberOfGoodEvents
++
;
_numberOfGoodEvents
++
;
if
(
event
.
crate
==
0
&&
event
.
channel
==
0
&&
event
.
energy
==
0
)
{
if
(
event
.
crate
==
0
&&
event
.
channel
==
0
&&
event
.
data
[
0
]
==
0
&&
event
.
data
[
1
]
==
0
)
{
if
(
_onZeroBlock
)
{
if
(
_onZeroBlock
)
{
_zeroCounter
++
;
_zeroCounter
++
;
}
else
{
}
else
{
...
...
src/lstdpp128/CrateBoard.cpp
View file @
2811a30b
...
@@ -37,13 +37,12 @@ std::ostream& operator<< (std::ostream& os, ListModeContext const & header) {
...
@@ -37,13 +37,12 @@ std::ostream& operator<< (std::ostream& os, ListModeContext const & header) {
os
<<
"#crates = "
<<
header
.
crateBoard
.
nbCrates
<<
endl
<<
endl
;
os
<<
"#crates = "
<<
header
.
crateBoard
.
nbCrates
<<
endl
<<
endl
;
for
(
int
c
=
0
;
c
<
header
.
crateBoard
.
nbCrates
;
c
++
)
{
for
(
int
c
=
0
;
c
<
header
.
crateBoard
.
nbCrates
;
c
++
)
{
os
<<
"crate "
<<
c
<<
endl
;
os
<<
"crate "
<<
c
<<
" #boards = "
<<
header
.
crateBoard
.
crates
[
c
].
nbBoards
<<
endl
<<
endl
;
os
<<
"
\t
#boards = "
<<
header
.
crateBoard
.
crates
[
c
].
nbBoards
<<
endl
;
for
(
int
b
=
0
;
b
<
header
.
crateBoard
.
crates
[
c
].
nbBoards
;
b
++
)
{
for
(
int
b
=
0
;
b
<
header
.
crateBoard
.
crates
[
c
].
nbBoards
;
b
++
)
{
os
<<
"
\t
"
<<
"board "
<<
b
<<
endl
;
os
<<
"
\t
"
<<
"board "
<<
b
<<
endl
;
os
<<
"
\t
type = "
<<
(
int
)
header
.
crateBoard
.
crates
[
c
].
boards
[
b
].
boardType
<<
endl
;
os
<<
"
\t
type name = "
<<
BoardTypeName
[
header
.
crateBoard
.
crates
[
c
].
boards
[
b
].
boardType
]
<<
endl
;
os
<<
"
\t
type name = "
<<
BoardTypeName
[
header
.
crateBoard
.
crates
[
c
].
boards
[
b
].
boardType
]
<<
endl
;
os
<<
"
\t
event type = "
<<
header
.
crateBoard
.
crates
[
c
].
boards
[
b
].
eventType
<<
endl
;
os
<<
"
\t
event type = "
<<
header
.
crateBoard
.
crates
[
c
].
boards
[
b
].
eventType
<<
endl
;
os
<<
"
\t
data resolution = "
<<
BoardDataResolution
[
header
.
crateBoard
.
crates
[
c
].
boards
[
b
].
boardType
]
<<
" bits"
<<
endl
;
os
<<
"
\t
time resolution = "
<<
BoardTimeResolution
[
header
.
crateBoard
.
crates
[
c
].
boards
[
b
].
boardType
]
<<
" nanoseconds"
<<
endl
;
os
<<
"
\t
time resolution = "
<<
BoardTimeResolution
[
header
.
crateBoard
.
crates
[
c
].
boards
[
b
].
boardType
]
<<
" nanoseconds"
<<
endl
;
os
<<
"
\t
#channels = "
<<
header
.
crateBoard
.
crates
[
c
].
boards
[
b
].
nbChannels
<<
endl
<<
endl
;
os
<<
"
\t
#channels = "
<<
header
.
crateBoard
.
crates
[
c
].
boards
[
b
].
nbChannels
<<
endl
<<
endl
;
}
}
...
...
src/lstdpp128/CrateBoard.h
View file @
2811a30b
...
@@ -35,27 +35,126 @@ static const int EVENT_SIZE_32 = 4;
...
@@ -35,27 +35,126 @@ static const int EVENT_SIZE_32 = 4;
*/
*/
static
const
int
EVENT_SIZE_8
=
16
;
static
const
int
EVENT_SIZE_8
=
16
;
/**
/**
* List of different available boards.
* List of different available boards.
*/
*/
enum
BoardType
{
enum
BoardType
{
CFD_BOARD_TYPE
=
0
,
V1751_BOARD_TYPE
=
1
,
V1724_BOARD_TYPE
=
2
,
V1730_BOARD_TYPE
=
3
CFD
=
0
,
C1751_PSD
=
1
,
C1724_PHA_RT
=
2
,
C1730_PSD_RT
=
3
,
C1730_PHA_RT
=
4
,
C1740_QDC
=
5
,
C1740_QDIV
=
6
,
GGPICKUP
=
20
,
MCC
=
21
,
CAMERA
=
22
,
C1751_WAVEFORM
=
31
,
C1724_WAVEFORM_RT
=
32
,
C1730_WAVEFORM_RT
=
33
,
C1740_WAVEFORM
=
35
,
C1740_QDIV_WAVEFORM
=
36
};
};
/**
/**
* The name of the boards.
* The name of the boards.
*/
*/
static
const
char
*
BoardTypeName
[]
=
{
"CFD"
,
"V1751"
,
"V1724"
,
"V1730"
};
static
const
char
*
BoardTypeName
[]
=
{
"CFD"
,
// 0
"1751 PSD"
,
// 1
"1724 PHA RT"
,
// 2
"1730 PSD RT"
,
// 3
"1730 PHA RT"
,
// 4
"1740 QDC"
,
// 5
"1740 QDIV"
,
// 6
// 7 ... 19
"7?"
,
"8?"
,
"9?"
,
"10?"
,
"11?"
,
"12?"
,
"13?"
,
"14?"
,
"15?"
,
"16?"
,
"17?"
,
"18?"
,
"19?"
,
"GGPICKUP"
,
// 20
"MCC"
,
// 21
"CAMERA"
,
// 22
// 23 ... 30
"23?"
,
"24?"
,
"25?"
,
"26?"
,
"27?"
,
"28?"
,
"29?"
,
"30?"
,
"1751 WAVEFORM"
,
// 31
"1724 WAVEFORM RT"
,
// 32
"1730 WAVEFORM RT"
,
// 33
"34?"
,
// 34
"1740 WAVEFORM"
,
// 35
"1740 QDIV WAVEFORM"
// 36
};
/**
/**
* The
data resolution of the boards (number of bits)
.
* The
time relativity of the boards
.
*/
*/
static
uint32_t
BoardDataResolution
[]
=
{
12
,
10
,
15
,
15
};
static
int
BoardRelativeTime
[]
=
{
0
,
// 0
0
,
// 1
1
,
// 2
1
,
// 3
1
,
// 4
0
,
// 5
0
,
// 6
// 7.. 19
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
// 20
0
,
// 21
0
,
// 22
// 23.. 30
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
// 31
1
,
// 32
1
,
// 33
0
,
// 34
0
,
// 35
0
// 36
};
/**
/**
* The time resolution of the boards (nanoseconds).
* The time resolution of the boards (nanoseconds).
*/
*/
static
uint32_t
BoardTimeResolution
[]
=
{
1
,
1
,
10
,
2
};
static
uint32_t
BoardTimeResolution
[]
=
{
1
,
// 0
1
,
// 1
10
,
// 2
2
,
// 3
2
,
// 4
16
,
// 5
16
,
// 6
// 7.. 19
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
10
,
// 20
10
,
// 21
0
,
// 22
// 23.. 30
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
// 31
10
,
// 32
2
,
// 33
0
,
// 34
16
,
// 35
16
// 36
};
/**
/**
* The board structure. A board belongs to a unique crate.
* The board structure. A board belongs to a unique crate.
...
@@ -66,7 +165,7 @@ struct Board {
...
@@ -66,7 +165,7 @@ struct Board {
uint16_t
nbChannels
;
uint16_t
nbChannels
;
BoardType
boardType
;
BoardType
boardType
;
Board
()
:
eventType
(
0
),
crate
(
0
),
nbChannels
(
0
),
boardType
(
CFD
_BOARD_TYPE
)
{}
Board
()
:
eventType
(
0
),
crate
(
0
),
nbChannels
(
0
),
boardType
(
CFD
)
{}
};
};
/**
/**
...
...
src/lstdpp128/Event.cpp
View file @
2811a30b
...
@@ -37,9 +37,32 @@ void Event::setTime(time_type value) {
...
@@ -37,9 +37,32 @@ void Event::setTime(time_type value) {
rollover
=
((
value
>>
32
)
&
0xFFFF
);
rollover
=
((
value
>>
32
)
&
0xFFFF
);
}
}
std
::
string
eventColumnsToString
(
BoardType
type
)
{
ostringstream
os
;
os
<<
setw
(
10
)
<<
(
int
)
type
<<
setw
(
10
)
<<
"time"
<<
setw
(
8
)
<<
"roll."
<<
setw
(
12
)
<<
"timestamp"
<<
setw
(
8
)
<<
"crate"
<<
setw
(
8
)
<<
"board"
<<
setw
(
8
)
<<
"channel"
<<
setw
(
11
)
<<
"board type"
;
return
os
.
str
();
}
std
::
ostream
&
operator
<<
(
std
::
ostream
&
os
,
Event
const
&
e
)
{
std
::
ostream
&
operator
<<
(
std
::
ostream
&
os
,
Event
const
&
e
)
{
return
os
<<
dec
<<
setw
(
20
)
<<
e
.
time
()
<<
setw
(
12
)
<<
e
.
energy
<<
setw
(
8
)
<<
(
int
)
e
.
crate
<<
", "
<<
(
int
)
e
.
board
<<
setw
(
8
)
<<
e
.
channel
<<
setw
(
8
)
<<
e
.
data
<<
setw
(
20
)
<<
e
.
rollover
<<
setw
(
20
)
<<
e
.
timestamp
;
return
os
<<
dec
<<
setw
(
20
)
<<
e
.
time
()
<<
setw
(
8
)
<<
e
.
rollover
<<
setw
(
12
)
<<
e
.
timestamp
<<
setw
(
8
)
<<
(
int
)
e
.
crate
<<
setw
(
8
)
<<
(
int
)
e
.
board
<<
setw
(
8
)
<<
e
.
channel
<<
setw
(
11
)
<<
(
int
)
e
.
boardType
();
}
}
std
::
string
printBinary
(
int32_t
*
buffer
)
{
std
::
string
printBinary
(
int32_t
*
buffer
)
{
...
@@ -88,16 +111,17 @@ std::ostream& operator<< (std::ostream& os, EventBlock const & b) {
...
@@ -88,16 +111,17 @@ std::ostream& operator<< (std::ostream& os, EventBlock const & b) {
bool
readEvent
(
Event
&
event
,
int32_t
*
buffer
)
{
bool
readEvent
(
Event
&
event
,
int32_t
*
buffer
)
{
// Read crate, board, channel.
uint8_t
crate
=
(
uint8_t
)((
*
buffer
>>
28
)
&
0xF
);
uint8_t
crate
=
(
uint8_t
)((
*
buffer
>>
28
)
&
0xF
);
uint8_t
board
=
(
uint8_t
)((
*
buffer
>>
22
)
&
0x3F
);
uint8_t
board
=
(
uint8_t
)((
*
buffer
>>
22
)
&
0x3F
);
if
(
crate
>=
listModeContext
.
crateBoard
.
nbCrates
)
{
if
(
crate
>=
listModeContext
.
crateBoard
.
nbCrates
)
{
// No output because the log file can be very large
// No output because the log file can be very large
.
return
false
;
return
false
;
}
}
if
(
board
>=
listModeContext
.
crateBoard
.
crates
[
event
.
crate
].
nbBoards
)
{
if
(
board
>=
listModeContext
.
crateBoard
.
crates
[
event
.
crate
].
nbBoards
)
{
// No output because the log file can be very large
// No output because the log file can be very large
.
return
false
;
return
false
;
}
}
...
@@ -108,43 +132,28 @@ bool readEvent(Event & event, int32_t * buffer) {
...
@@ -108,43 +132,28 @@ bool readEvent(Event & event, int32_t * buffer) {
BoardType
boardType
=
event
.
boardType
();
BoardType
boardType
=
event
.
boardType
();
// The number of bits for timestamp.
int
numberOfBitsOfTimestamp
=
32
;
int
numberOfBitsOfTimestamp
=
32
;
if
(
boardType
==
CFD_BOARD_TYPE
)
{
// In case of 1724 PHA, the number of bits for timestamp is 30.
event
.
timestamp
=
(
uint32_t
)(
*
(
buffer
+
1
)
&
0xFFFFFFFF
);
if
(
boardType
==
C1724_PHA_RT
)
{
event
.
energy
=
(
uint16_t
)(
*
(
buffer
+
2
)
&
0xFFF
);
// Extra data if zero crossing
int32_t
temp
=
(
*
(
buffer
+
3
)
&
0xFFFFFFFF
);
memcpy
(
reinterpret_cast
<
void
*>
(
&
event
.
data
),
reinterpret_cast
<
const
void
*>
(
&
temp
),
4
);
}
else
if
(
boardType
==
V1751_BOARD_TYPE
)
{
event
.
timestamp
=
(
uint32_t
)(
*
(
buffer
+
1
)
&
0xFFFFFFFF
);
event
.
energy
=
(
uint16_t
)((
*
(
buffer
+
2
)
>>
16
)
&
0x7FFF
);
// Extra data
event
.
data
=
(
uint16_t
)((
*
(
buffer
+
2
))
&
0x7FFF
);
}
else
if
(
boardType
==
V1724_BOARD_TYPE
)
{
// The timestamp is on 30bits
numberOfBitsOfTimestamp
=
30
;
numberOfBitsOfTimestamp
=
30
;
event
.
timestamp
=
(
uint32_t
)(
*
(
buffer
+
1
)
&
0x3FFFFFFF
);
event
.
timestamp
=
(
uint32_t
)(
*
(
buffer
+
1
)
&
0x3FFFFFFF
);
}
event
.
energy
=
(
uint16_t
)(
*
(
buffer
+
2
)
&
0x7FFF
);
else
{
}
else
if
(
boardType
==
V1730_BOARD_TYPE
)
{
event
.
timestamp
=
(
uint32_t
)(
*
(
buffer
+
1
)
&
0xFFFFFFFF
);
event
.
timestamp
=
(
uint32_t
)(
*
(
buffer
+
1
)
&
0xFFFFFFFF
);
event
.
energy
=
(
uint16_t
)(
*
(
buffer
+
2
)
&
0x7FFF
);
}
}
// Copy data.
memcpy
(
reinterpret_cast
<
void
*>
(
event
.
data
),
reinterpret_cast
<
const
void
*>
(
buffer
+
2
),
8
);
// Use printBinary(buffer) to debug if necessary.
// Use printBinary(buffer) to debug if necessary.
// Calculate the absolute time.
// Calculate the absolute time.
time_type
absoluteTime
=
(((
int64_t
)
event
.
rollover
<<
numberOfBitsOfTimestamp
)
|
event
.
timestamp
);
time_type
absoluteTime
=
(((
int64_t
)
event
.
rollover
<<
numberOfBitsOfTimestamp
)
|
event
.
timestamp
);
// In version == 1, the event time in the file is relative so that the time resolution is used to convert to absolute time.
// Testing if we must apply the time resolution or not in case of a board that has relative time.
// In version >= 2, the event time in the file is already absolute.
if
(
BoardRelativeTime
[
boardType
])
{
if
(
listModeContext
.
version
==
1
)
{
// Set the absolute time. Here the event is still in relative time.
// Set the absolute time. Here the event is still in relative time.
absoluteTime
=
absoluteTime
*
event
.
timeResolution
();
absoluteTime
=
absoluteTime
*
event
.
timeResolution
();
...
@@ -167,13 +176,13 @@ void writeEvent(Event const & event, int32_t * buffer) {
...
@@ -167,13 +176,13 @@ void writeEvent(Event const & event, int32_t * buffer) {
Event
relativeTimeEvent
(
event
);
Event
relativeTimeEvent
(
event
);
//
See comment on versions in readEvent
.
//
Testing if we must apply the time resolution or not in case of a board that has relative time
.
if
(
listModeContext
.
version
==
1
)
{
if
(
BoardRelativeTime
[
event
.
boardType
()]
)
{
// We reset the event time to the relative time because we do not want to change the header of the lsto.
// We reset the event time to the relative time because we do not want to change the header of the lsto.
time_type
relativeTime
=
event
.
time
()
/
event
.
timeResolution
();
time_type
relativeTime
=
event
.
time
()
/
event
.
timeResolution
();
// We can set the re
a
ltive time that changes the rollover and timestamp.
// We can set the rel
a
tive time that changes the rollover and timestamp.
relativeTimeEvent
.
setTime
(
relativeTime
);
relativeTimeEvent
.
setTime
(
relativeTime
);
}
}
...
@@ -184,24 +193,7 @@ void writeEvent(Event const & event, int32_t * buffer) {
...
@@ -184,24 +193,7 @@ void writeEvent(Event const & event, int32_t * buffer) {
BoardType
boardType
=
relativeTimeEvent
.
boardType
();
BoardType
boardType
=
relativeTimeEvent
.
boardType
();
if
(
boardType
==
CFD_BOARD_TYPE
)
{
if
(
boardType
==
C1724_PHA_RT
)
{
*
buffer
|=
(
relativeTimeEvent
.
rollover
&
0xFFFF
);
*
(
buffer
+
1
)
=
relativeTimeEvent
.
timestamp
;
*
(
buffer
+
2
)
=
(
relativeTimeEvent
.
energy
&
0xFFF
);
memcpy
(
buffer
+
3
,
reinterpret_cast
<
const
void
*>
(
&
relativeTimeEvent
.
data
),
4
);
}
else
if
(
boardType
==
V1751_BOARD_TYPE
)
{
*
buffer
|=
(
relativeTimeEvent
.
rollover
&
0xFFFF
);
// There is one bit that is not used: first bit of data (the buffer written may be different from the buffer read).
*
(
buffer
+
1
)
=
relativeTimeEvent
.
timestamp
;
*
(
buffer
+
2
)
=
((
relativeTimeEvent
.
energy
<<
16
))
|
(
event
.
data
&
0x7FFF
);
*
(
buffer
+
3
)
=
0
;
}
else
if
(
boardType
==
V1724_BOARD_TYPE
)
{
// The card timestamp is on 30bits with 2 bits of zero.
// The card timestamp is on 30bits with 2 bits of zero.
// The rollover is calculated by taking the 2 bits of the actual timestamp (>> 30 for 32 bits = 2 bits).
// The rollover is calculated by taking the 2 bits of the actual timestamp (>> 30 for 32 bits = 2 bits).
...
@@ -210,18 +202,16 @@ void writeEvent(Event const & event, int32_t * buffer) {
...
@@ -210,18 +202,16 @@ void writeEvent(Event const & event, int32_t * buffer) {
// Taking the 30 bits and setting 0 to the 2 first bits.
// Taking the 30 bits and setting 0 to the 2 first bits.
*
(
buffer
+
1
)
=
(
relativeTimeEvent
.
timestamp
&
0x3FFFFFFF
);
*
(
buffer
+
1
)
=
(
relativeTimeEvent
.
timestamp
&
0x3FFFFFFF
);
*
(
buffer
+
2
)
=
(
relativeTimeEvent
.
energy
&
0x7FFF
);
}
*
(
buffer
+
3
)
=
0
;
else
{
}
else
if
(
boardType
==
V1730_BOARD_TYPE
)
{
*
buffer
|=
(
relativeTimeEvent
.
rollover
&
0xFFFF
);
*
buffer
|=
(
relativeTimeEvent
.
rollover
&
0xFFFF
);
*
(
buffer
+
1
)
=
(
relativeTimeEvent
.
timestamp
&
0xFFFFFFFF
);
*
(
buffer
+
1
)
=
relativeTimeEvent
.
timestamp
;
*
(
buffer
+
2
)
=
(
relativeTimeEvent
.
energy
&
0x7FFF
);
*
(
buffer
+
3
)
=
0
;
}
}
// Copy data.
memcpy
(
buffer
+
2
,
reinterpret_cast
<
const
void
*>
(
&
relativeTimeEvent
.
data
),
8
);
// Use printBinary(buffer) to debug if necessary.
// Use printBinary(buffer) to debug if necessary.
}
}
...
...
src/lstdpp128/Event.h
View file @
2811a30b
...
@@ -36,8 +36,7 @@ struct Event {
...
@@ -36,8 +36,7 @@ struct Event {
uint16_t
channel
;
uint16_t
channel
;
uint16_t
rollover
;
uint16_t
rollover
;
uint32_t
timestamp
;
uint32_t
timestamp
;
uint16_t
energy
;
uint32_t
data
[
2
];
uint32_t
data
;
enum
CleanType
{
CLEAN
,
NOT_CLEAN
,
ANTI_COMPTON
,
UNDEFINED
};
enum
CleanType
{
CLEAN
,
NOT_CLEAN
,
ANTI_COMPTON
,
UNDEFINED
};
CleanType
status
;
CleanType
status
;
...
@@ -48,9 +47,10 @@ struct Event {
...
@@ -48,9 +47,10 @@ struct Event {
channel
(
0
),
channel
(
0
),
rollover
(
0
),
rollover
(
0
),
timestamp
(
0
),
timestamp
(
0
),
energy
(
0
),
status
(
UNDEFINED
)
{
data
(
0
),
data
[
0
]
=
0
;
status
(
UNDEFINED
)
{}
data
[
1
]
=
0
;
}
/**
/**
* Returns the board type of the event in the current list mode context.
* Returns the board type of the event in the current list mode context.
...
@@ -75,53 +75,8 @@ struct Event {
...
@@ -75,53 +75,8 @@ struct Event {
* Sets the absolute time. The value is converted into rollover and timestamp.
* Sets the absolute time. The value is converted into rollover and timestamp.
*/
*/
void
setTime
(
time_type
value
);
void
setTime
(
time_type
value
);
/**
* Function provided for convenience to get the data as an int32 value.
*/
inline
int32_t
int32Data
()
const
{
return
*
reinterpret_cast
<
const
int32_t
*>
(
&
data
);
}
/**
* Function provided for convenience to get the data as a float value.
*/
inline
float
floatData
()
const
{
return
*
reinterpret_cast
<
const
float
*>
(
&
data
);
}
};
};
/**
* This function is only for CFD_BOARD_TYPE events.
*/
inline
float
zeroCrossing
(
Event
const
&
event
)
{
return
event
.
floatData
();
}
/**
* This function is only for V1751_BOARD_TYPE events.
*/
inline
uint16_t
qLong
(
Event
const
&
event
)
{
return
event
.
energy
;
}
/**
* This function is only for V1751_BOARD_TYPE events.
*/
inline
uint16_t
qShort
(
Event
const
&
event
)
{
return
event
.
data
;
}
/**
* This function is only for V1751_BOARD_TYPE events.
*/
inline
float
qRatio
(
Event
const
&
event
)
{
if
(
qLong
(
event
)
==
0
)
{
return
0.0
;
}
return
(
float
)(
qLong
(
event
)
-
qShort
(
event
))
/
(
float
)
qLong
(
event
);
}
/**
/**
* Comparator to sort events with time.
* Comparator to sort events with time.
*/
*/
...
@@ -132,6 +87,7 @@ struct CompareEvents {
...
@@ -132,6 +87,7 @@ struct CompareEvents {
}
}
};
};
std
::
string
eventColumnsToString
(
BoardType
type
);
std
::
ostream
&
operator
<<
(
std
::
ostream
&
os
,
Event
const
&
e
);
std
::
ostream
&
operator
<<
(
std
::
ostream
&
os
,
Event
const
&
e
);
std
::
string
printBinary
(
int32_t
*
buffer
);
std
::
string
printBinary
(
int32_t
*
buffer
);
...
...
src/lstdpp128/EventBlockArray.cpp
View file @
2811a30b
...
@@ -173,39 +173,39 @@ EventBlockArrayIterator EventBlockArray::insertEvent(Event const & event) {
...
@@ -173,39 +173,39 @@ EventBlockArrayIterator EventBlockArray::insertEvent(Event const & event) {
return
EventBlockArrayIterator
(
array
(),
array
().
begin
(),
e
);
return
EventBlockArrayIterator
(
array
(),
array
().
begin
(),
e
);
}
}
void
testIterator
(
EventBlockArray
const
&
EventBlocks
)
{
//
void testIterator(EventBlockArray const & EventBlocks) {
//
EventBlockArrayIterator
e
=
EventBlocks
.
begin
();
//
EventBlockArrayIterator e = EventBlocks.begin();
//
while
(
e
!=
EventBlocks
.
end
())
{
//
while (e != EventBlocks.end()) {
cout
<<
"event "
<<
*
e
<<
endl
;
//
cout << "event " << *e << endl;
++
e
;
//
++e;
--
e
;
//
--e;