class Converter {
public: // data structures
enum ErrorSeverity { OK, WARNING, FATAL, IGNORE };
enum ErrorType {
// General errors
// (usually HW fatal errors: No way to decode data)
GEN_HBITSET=0, GEN_HBITNOTSET, GEN_ERRFLAG, GEN_HBIT2,
GEN_SMALLSIZE, GEN_SIZE, GEN_SUMLENGTH,
// Controller errors
CTRLR_ERRFLAG, CTRLR_SIZE, CTRLR_SIZEPARITY,
CTRLR_UNKNOWN, CTRLR_MULTIPLE, CTRLR_ABSENT,
CTRLR_EVTNUM, CTRLR_MODULESEQ, CTRLR_TIMESEQ,
// Module errors
MOD_UNEXPECTED, MOD_CHANNELSEQ,
// Data conversion errors
MAP_DET_ABSENT, MAP_SE_ABSENT, MAP_SE_MULTIPLE,
////
LAST_ERRORTYPE
};
struct ErrorDesc {
ErrorType type_;
Crate crate_;
CrateChannel channel_;
Detector detector_;
std::vector<uint16> data_;
ErrorDesc();
explicit ErrorDesc(ErrorType et);
};
public: // functions
// ...
void UseReadoutDB(ReadoutDB * db);
void SetSeverity(ErrorType, ErrorSeverity);
void SetCheckDepth(EventStage d);
ErrorSeverity Check ( const RawEvent & );
ErrorSeverity Convert ( const RawEvent &, ModEvent & );
ErrorSeverity QuickConvert ( const ModEvent &, DetEvent & );
ErrorSeverity QuickConvert ( const RawEvent &, DetEvent & );
const std::vector<ErrorDesc> & GetErrors() const;
std::string StrError() const;
};