CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
GEMAMC13Status.h
Go to the documentation of this file.
1 #ifndef DataFormats_GEMDigi_GEMAMC13Status_h
2 #define DataFormats_GEMDigi_GEMAMC13Status_h
3 #include "AMC13Event.h"
4 #include "AMCdata.h"
7 #include <bitset>
8 #include <ostream>
9 
11 public:
12  union Errors {
13  uint8_t codes;
14  struct {
15  uint8_t InValidSize : 1;
16  uint8_t failTrailerCheck : 1;
17  uint8_t failFragmentLength : 1;
18  uint8_t failTrailerMatch : 1;
19  uint8_t moreTrailers : 1;
20  uint8_t crcModified : 1;
21  uint8_t slinkError : 1;
22  uint8_t wrongFedId : 1;
23  };
24  };
25  union Warnings {
26  uint8_t wcodes;
27  struct {
28  uint8_t InValidAMC : 1; // error for AMC but cant display when not found.
29  };
30  };
31 
33  GEMAMC13Status(const FEDRawData& fedData) {
34  Errors error{0};
35  if ((fedData.size() / sizeof(uint64_t)) < 5) {
36  error.InValidSize = 1;
37  } else {
38  FEDTrailer trailer(fedData.data() + fedData.size() - FEDTrailer::length);
39  error.failTrailerCheck = !trailer.check();
40  error.failFragmentLength = (trailer.fragmentLength() * sizeof(uint64_t) != fedData.size());
41  error.moreTrailers = trailer.moreTrailers();
42  error.crcModified = trailer.crcModified();
43  error.slinkError = trailer.slinkError();
44  error.wrongFedId = trailer.wrongFedId();
45  }
46  errors_ = error.codes;
47 
48  Warnings warn{0};
49  warnings_ = warn.wcodes;
50  }
51  void inValidAMC() {
53  warn.InValidAMC = 1;
54  warnings_ = warn.wcodes;
55  }
56 
57  bool isBad() const { return errors_ != 0; }
58  uint8_t errors() const { return errors_; }
59  uint8_t warnings() const { return warnings_; }
60 
61 private:
62  uint8_t errors_;
63  uint8_t warnings_;
64 };
65 
66 inline std::ostream& operator<<(std::ostream& out, const GEMAMC13Status& status) {
67  out << "GEMAMC13Status errors " << std::bitset<8>(status.errors()) << " warnings "
68  << std::bitset<8>(status.warnings());
69  return out;
70 }
71 
72 #endif
GEMAMC13Status::Errors
Definition: GEMAMC13Status.h:12
GEMAMC13Status::Errors::InValidSize
uint8_t InValidSize
Definition: GEMAMC13Status.h:15
GEMAMC13Status::warnings
uint8_t warnings() const
Definition: GEMAMC13Status.h:59
mps_update.status
status
Definition: mps_update.py:68
GEMAMC13Status::errors_
uint8_t errors_
Definition: GEMAMC13Status.h:62
GEMAMC13Status::Warnings::InValidAMC
uint8_t InValidAMC
Definition: GEMAMC13Status.h:28
GEMAMC13Status::Errors::wrongFedId
uint8_t wrongFedId
Definition: GEMAMC13Status.h:22
GEMAMC13Status::isBad
bool isBad() const
Definition: GEMAMC13Status.h:57
FEDRawData.h
relativeConstraints.error
error
Definition: relativeConstraints.py:53
operator<<
std::ostream & operator<<(std::ostream &out, const GEMAMC13Status &status)
Definition: GEMAMC13Status.h:66
FEDRawData::data
const unsigned char * data() const
Return a const pointer to the beginning of the data buffer.
Definition: FEDRawData.cc:24
FEDRawData
Definition: FEDRawData.h:19
GEMAMC13Status::Errors::slinkError
uint8_t slinkError
Definition: GEMAMC13Status.h:21
GEMAMC13Status::errors
uint8_t errors() const
Definition: GEMAMC13Status.h:58
GEMAMC13Status::Errors::failTrailerMatch
uint8_t failTrailerMatch
Definition: GEMAMC13Status.h:18
GEMAMC13Status::Errors::failFragmentLength
uint8_t failFragmentLength
Definition: GEMAMC13Status.h:17
AMCdata.h
GEMAMC13Status
Definition: GEMAMC13Status.h:10
python.warn
def warn(*args, **kwargs)
Definition: __init__.py:21
GEMAMC13Status::GEMAMC13Status
GEMAMC13Status()
Definition: GEMAMC13Status.h:32
GEMAMC13Status::Errors::moreTrailers
uint8_t moreTrailers
Definition: GEMAMC13Status.h:19
FEDTrailer
Definition: FEDTrailer.h:14
GEMAMC13Status::Warnings::wcodes
uint8_t wcodes
Definition: GEMAMC13Status.h:26
GEMAMC13Status::Errors::crcModified
uint8_t crcModified
Definition: GEMAMC13Status.h:20
FEDRawData::size
size_t size() const
Lenght of the data buffer in bytes.
Definition: FEDRawData.h:45
FEDTrailer::length
static const uint32_t length
Definition: FEDTrailer.h:57
GEMAMC13Status::Errors::codes
uint8_t codes
Definition: GEMAMC13Status.h:13
AMC13Event.h
GEMAMC13Status::inValidAMC
void inValidAMC()
Definition: GEMAMC13Status.h:51
cond::uint64_t
unsigned long long uint64_t
Definition: Time.h:13
MillePedeFileConverter_cfg.out
out
Definition: MillePedeFileConverter_cfg.py:31
GEMAMC13Status::Errors::failTrailerCheck
uint8_t failTrailerCheck
Definition: GEMAMC13Status.h:16
GEMAMC13Status::warnings_
uint8_t warnings_
Definition: GEMAMC13Status.h:63
GEMAMC13Status::Warnings
Definition: GEMAMC13Status.h:25
GEMAMC13Status::GEMAMC13Status
GEMAMC13Status(const FEDRawData &fedData)
Definition: GEMAMC13Status.h:33
FEDTrailer.h