File indexing completed on 2024-04-06 12:04:18
0001 #ifndef DATAFORMATS_HCALDIGI_HCALUNPACKERREPORT_H
0002 #define DATAFORMATS_HCALDIGI_HCALUNPACKERREPORT_H 1
0003
0004 #include <vector>
0005 #include <map>
0006 #include "DataFormats/DetId/interface/DetId.h"
0007 #include "DataFormats/HcalDetId/interface/HcalElectronicsId.h"
0008 #include "DataFormats/HcalDigi/interface/HcalCalibrationEventTypes.h"
0009
0010
0011
0012
0013
0014 class HcalUnpackerReport {
0015 public:
0016 HcalUnpackerReport();
0017 const std::vector<int>& getFedsUnpacked() const { return FEDsUnpacked_; }
0018 const std::vector<int>& getFedsError() const { return FEDsError_; }
0019 bool errorFree() const;
0020 bool anyValidHCAL() const;
0021 int unmappedDigis() const { return unmappedDigis_; }
0022 int unmappedTPDigis() const { return unmappedTPDigis_; }
0023 int spigotFormatErrors() const { return spigotFormatErrors_; }
0024 int badQualityDigis() const { return badqualityDigis_; }
0025 int totalDigis() const { return totalDigis_; }
0026 int totalTPDigis() const { return totalTPDigis_; }
0027 int totalHOTPDigis() const { return totalHOTPDigis_; }
0028 int emptyEventSpigots() const { return emptyEventSpigots_; }
0029 int OFWSpigots() const { return ofwSpigots_; }
0030 int busySpigots() const { return busySpigots_; }
0031
0032 bool unsuppressedChannels() const { return unsuppressed_; }
0033
0034 bool hasFedWithCalib() const { return !fedInfo_.empty(); }
0035 HcalCalibrationEventType fedCalibType(uint16_t fed) const;
0036
0037 void setFedCalibInfo(uint16_t fed, HcalCalibrationEventType ctype);
0038
0039 typedef std::vector<DetId> DetIdVector;
0040 typedef std::vector<HcalElectronicsId> ElectronicsIdVector;
0041
0042 DetIdVector::const_iterator bad_quality_begin() const { return badqualityIds_.begin(); }
0043 DetIdVector::const_iterator bad_quality_end() const { return badqualityIds_.end(); }
0044 ElectronicsIdVector::const_iterator unmapped_begin() const { return unmappedIds_.begin(); }
0045 ElectronicsIdVector::const_iterator unmapped_end() const { return unmappedIds_.end(); }
0046
0047 bool hasReportInfo(const std::string& name) const;
0048 std::string getReportInfo(const std::string& name) const;
0049 std::vector<std::string> getReportKeys() const;
0050
0051
0052 void addUnpacked(int fed);
0053 void addError(int fed);
0054 void countDigi();
0055 void countTPDigi(bool ho = false);
0056 void countUnmappedDigi();
0057 void countUnmappedTPDigi();
0058 void countSpigotFormatError();
0059 void countBadQualityDigi();
0060 void countEmptyEventSpigot();
0061 void countOFWSpigot();
0062 void countBusySpigot();
0063 void countUnmappedDigi(const HcalElectronicsId& eid);
0064 void countUnmappedTPDigi(const HcalElectronicsId& eid);
0065 void countBadQualityDigi(const DetId& did);
0066 void setUnsuppressed(bool isSup);
0067 void setReportInfo(const std::string& name, const std::string& value);
0068
0069 private:
0070 std::vector<int> FEDsUnpacked_;
0071 std::vector<int> FEDsError_;
0072 int unmappedDigis_, unmappedTPDigis_;
0073 int spigotFormatErrors_, badqualityDigis_;
0074 int totalDigis_, totalTPDigis_, totalHOTPDigis_;
0075 DetIdVector badqualityIds_;
0076 ElectronicsIdVector unmappedIds_;
0077 bool unsuppressed_;
0078
0079 std::vector<std::string> reportInfo_;
0080 std::vector<uint16_t> fedInfo_;
0081
0082 int emptyEventSpigots_, ofwSpigots_, busySpigots_;
0083 };
0084
0085 #endif