GRSISort
"v4.0.0.5"
An extension of the ROOT analysis Framework
Loading...
Searching...
No Matches
TTdrDataParserException.cxx
Go to the documentation of this file.
1
#include "
TTdrDataParserException.h
"
2
#include "
TTdrDataParser.h
"
3
4
TTdrDataParserException::TTdrDataParserException
(
TTdrDataParser::EDataParserState
state,
int
failedWord,
bool
multipleErrors)
5
: fParserState(state), fFailedWord(failedWord), fMultipleErrors(multipleErrors)
6
{
7
/// default constructor for TTdrDataParserException, stores the data parser state and the word the parser failed on
8
/// and creates a message based on them that can be accessed via TTdrDataParserException::what()
9
std::ostringstream stream;
10
stream<<
"TTdrDataParser failed "
;
11
if
(
fMultipleErrors
) {
12
stream<<
"on multiple words, first was "
;
13
}
else
{
14
stream<<
"only on "
;
15
}
16
stream<<
fFailedWord
<<
". word: "
;
17
switch
(
fParserState
) {
18
case
TTdrDataParser::EDataParserState::kGood
: stream<<
"state is good, no idea what went wrong!"
<<std::endl;
break
;
19
case
TTdrDataParser::EDataParserState::kBadHeader
:
20
stream<<
"bad header (either not high nibble 0x8 or an undefined bank)"
<<std::endl;
21
break
;
22
case
TTdrDataParser::EDataParserState::kMissingWords
: stream<<
"missing scaler words"
<<std::endl;
break
;
23
case
TTdrDataParser::EDataParserState::kBadScalerLowTS
:
24
stream<<
"bad scaler word with low time stamp bits (high nibble not 0xa)"
<<std::endl;
25
break
;
26
case
TTdrDataParser::EDataParserState::kBadScalerValue
:
27
stream<<
"bad scaler value (should never happen?)"
<<std::endl;
28
break
;
29
case
TTdrDataParser::EDataParserState::kBadScalerHighTS
:
30
stream<<
"bad scaler word with high time stamp bits (either high nibble not 0xe or the 8 LSB don't match the 8 "
31
"LSB of time stamp)"
32
<<std::endl;
33
break
;
34
case
TTdrDataParser::EDataParserState::kBadScalerType
: stream<<
"undefined scaler type"
<<std::endl;
break
;
35
case
TTdrDataParser::EDataParserState::kBadTriggerId
:
36
stream<<
"bad word with channel trigger ID (high nibble not 0x9)"
<<std::endl;
37
break
;
38
case
TTdrDataParser::EDataParserState::kBadLowTS
:
39
stream<<
"bad word with low time stamp bits (high nibble not 0xa)"
<<std::endl;
40
break
;
41
case
TTdrDataParser::EDataParserState::kBadHighTS
:
42
stream<<
"bad word with deadtime/high time stamp bits (high nibble not 0xb)"
<<std::endl;
43
break
;
44
case
TTdrDataParser::EDataParserState::kSecondHeader
:
45
stream<<
"found a second header (w/o finding a footer first)"
<<std::endl;
46
break
;
47
case
TTdrDataParser::EDataParserState::kWrongNofWords
: stream<<
"wrong number of words"
<<std::endl;
break
;
48
case
TTdrDataParser::EDataParserState::kNotSingleCfd
:
49
stream<<
"expected a single cfd word, got either none or multiple ones"
<<std::endl;
50
break
;
51
case
TTdrDataParser::EDataParserState::kSizeMismatch
:
52
stream<<
"number of charge, cfd, and integration length words doesn't match"
<<std::endl;
53
break
;
54
case
TTdrDataParser::EDataParserState::kBadFooter
:
55
stream<<
"bad footer (mismatch between lowest 14 bits of channel trigger ID)"
<<std::endl;
56
break
;
57
case
TTdrDataParser::EDataParserState::kFault
:
58
stream<<
"found a fault word (high nibble 0xf) from the DAQ"
<<std::endl;
59
break
;
60
case
TTdrDataParser::EDataParserState::kMissingPsd
: stream<<
"missing psd words"
<<std::endl;
break
;
61
case
TTdrDataParser::EDataParserState::kMissingCfd
:
62
stream<<
"missing the cfd word (second word w/o MSB set)"
<<std::endl;
63
break
;
64
case
TTdrDataParser::EDataParserState::kMissingCharge
:
65
stream<<
"missing charge words (should be at least two words w/o MSB set"
<<std::endl;
66
break
;
67
case
TTdrDataParser::EDataParserState::kBadBank
: stream<<
"undefined bank"
<<std::endl;
break
;
68
case
TTdrDataParser::EDataParserState::kBadModuleType
: stream<<
"undefined module type"
<<std::endl;
break
;
69
case
TTdrDataParser::EDataParserState::kEndOfData
:
70
stream<<
"reached end of bank data but not end of fragment"
<<std::endl;
71
break
;
72
case
TTdrDataParser::EDataParserState::kUndefined
:
73
stream<<
"undefined state, should not be possible?"
<<std::endl;
74
break
;
75
default
:
break
;
76
};
77
78
fMessage
= stream.str();
79
}
80
81
TTdrDataParserException::~TTdrDataParserException
()
82
{
83
/// default destructor
84
}
85
86
const
char
*
TTdrDataParserException::what
() const noexcept
87
{
88
/// return message string built in default constructor
89
return
fMessage
.c_str();
90
}
TTdrDataParser.h
TTdrDataParserException.h
TTdrDataParserException::what
const char * what() const noexcept override
Definition
TTdrDataParserException.cxx:86
TTdrDataParserException::TTdrDataParserException
TTdrDataParserException(TTdrDataParser::EDataParserState state, int failedWord, bool multipleErrors)
Definition
TTdrDataParserException.cxx:4
TTdrDataParserException::fMultipleErrors
bool fMultipleErrors
Definition
TTdrDataParserException.h:29
TTdrDataParserException::fParserState
TTdrDataParser::EDataParserState fParserState
Definition
TTdrDataParserException.h:27
TTdrDataParserException::fFailedWord
int fFailedWord
Definition
TTdrDataParserException.h:28
TTdrDataParserException::~TTdrDataParserException
~TTdrDataParserException() override
Definition
TTdrDataParserException.cxx:81
TTdrDataParserException::fMessage
std::string fMessage
Definition
TTdrDataParserException.h:30
TTdrDataParser::EDataParserState
EDataParserState
Definition
TTdrDataParser.h:52
TTdrDataParser::EDataParserState::kBadTriggerId
@ kBadTriggerId
TTdrDataParser::EDataParserState::kBadScalerLowTS
@ kBadScalerLowTS
TTdrDataParser::EDataParserState::kGood
@ kGood
TTdrDataParser::EDataParserState::kSizeMismatch
@ kSizeMismatch
TTdrDataParser::EDataParserState::kBadScalerHighTS
@ kBadScalerHighTS
TTdrDataParser::EDataParserState::kBadScalerType
@ kBadScalerType
TTdrDataParser::EDataParserState::kMissingCfd
@ kMissingCfd
TTdrDataParser::EDataParserState::kWrongNofWords
@ kWrongNofWords
TTdrDataParser::EDataParserState::kEndOfData
@ kEndOfData
TTdrDataParser::EDataParserState::kUndefined
@ kUndefined
TTdrDataParser::EDataParserState::kMissingPsd
@ kMissingPsd
TTdrDataParser::EDataParserState::kMissingWords
@ kMissingWords
TTdrDataParser::EDataParserState::kBadModuleType
@ kBadModuleType
TTdrDataParser::EDataParserState::kBadLowTS
@ kBadLowTS
TTdrDataParser::EDataParserState::kBadHeader
@ kBadHeader
TTdrDataParser::EDataParserState::kBadHighTS
@ kBadHighTS
TTdrDataParser::EDataParserState::kMissingCharge
@ kMissingCharge
TTdrDataParser::EDataParserState::kFault
@ kFault
TTdrDataParser::EDataParserState::kSecondHeader
@ kSecondHeader
TTdrDataParser::EDataParserState::kNotSingleCfd
@ kNotSingleCfd
TTdrDataParser::EDataParserState::kBadBank
@ kBadBank
TTdrDataParser::EDataParserState::kBadFooter
@ kBadFooter
TTdrDataParser::EDataParserState::kBadScalerValue
@ kBadScalerValue
iThembaData
libraries
TTdrDataParser
TTdrDataParserException.cxx
GRSISort ("v4.0.0.5") Reference Guide Generated on Mon Feb 3 2025 16:38:05.