File indexing completed on 2024-04-06 12:02:06
0001 #ifndef DTStatusFlag_H
0002 #define DTStatusFlag_H
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020 #include "CondFormats/Serialization/interface/Serializable.h"
0021
0022 #include "DataFormats/MuonDetId/interface/DTWireId.h"
0023 #include "FWCore/Utilities/interface/ConstRespectingPtr.h"
0024
0025
0026
0027
0028 #include <string>
0029 #include <vector>
0030 #include <utility>
0031
0032 template <class Key, class Content>
0033 class DTBufferTree;
0034
0035
0036
0037
0038
0039 class DTStatusFlagId {
0040 public:
0041 DTStatusFlagId();
0042 ~DTStatusFlagId();
0043
0044 int wheelId;
0045 int stationId;
0046 int sectorId;
0047 int slId;
0048 int layerId;
0049 int cellId;
0050
0051 COND_SERIALIZABLE;
0052 };
0053
0054 class DTStatusFlagData {
0055 public:
0056 DTStatusFlagData();
0057 ~DTStatusFlagData();
0058
0059 bool noiseFlag;
0060 bool feMask;
0061 bool tdcMask;
0062 bool trigMask;
0063 bool deadFlag;
0064 bool nohvFlag;
0065
0066 COND_SERIALIZABLE;
0067 };
0068
0069 class DTStatusFlagCompare {
0070 public:
0071 bool operator()(const DTStatusFlagId& idl, const DTStatusFlagId& idr) const;
0072 };
0073
0074 class DTStatusFlag {
0075 public:
0076
0077
0078 DTStatusFlag();
0079 DTStatusFlag(DTStatusFlag const&) = delete;
0080 DTStatusFlag& operator=(DTStatusFlag const&) = delete;
0081 DTStatusFlag(const std::string& version);
0082
0083
0084
0085 ~DTStatusFlag();
0086
0087
0088
0089
0090 int cellStatus(int wheelId,
0091 int stationId,
0092 int sectorId,
0093 int slId,
0094 int layerId,
0095 int cellId,
0096 bool& noiseFlag,
0097 bool& feMask,
0098 bool& tdcMask,
0099 bool& trigMask,
0100 bool& deadFlag,
0101 bool& nohvFlag) const {
0102 return get(
0103 wheelId, stationId, sectorId, slId, layerId, cellId, noiseFlag, feMask, tdcMask, trigMask, deadFlag, nohvFlag);
0104 };
0105 int cellStatus(const DTWireId& id,
0106 bool& noiseFlag,
0107 bool& feMask,
0108 bool& tdcMask,
0109 bool& trigMask,
0110 bool& deadFlag,
0111 bool& nohvFlag) const {
0112 return get(id, noiseFlag, feMask, tdcMask, trigMask, deadFlag, nohvFlag);
0113 };
0114 int get(int wheelId,
0115 int stationId,
0116 int sectorId,
0117 int slId,
0118 int layerId,
0119 int cellId,
0120 bool& noiseFlag,
0121 bool& feMask,
0122 bool& tdcMask,
0123 bool& trigMask,
0124 bool& deadFlag,
0125 bool& nohvFlag) const;
0126 int get(const DTWireId& id,
0127 bool& noiseFlag,
0128 bool& feMask,
0129 bool& tdcMask,
0130 bool& trigMask,
0131 bool& deadFlag,
0132 bool& nohvFlag) const;
0133
0134
0135 const std::string& version() const;
0136 std::string& version();
0137
0138
0139 void clear();
0140
0141 int setCellStatus(int wheelId,
0142 int stationId,
0143 int sectorId,
0144 int slId,
0145 int layerId,
0146 int cellId,
0147 bool noiseFlag,
0148 bool feMask,
0149 bool tdcMask,
0150 bool trigMask,
0151 bool deadFlag,
0152 bool nohvFlag) {
0153 return set(
0154 wheelId, stationId, sectorId, slId, layerId, cellId, noiseFlag, feMask, tdcMask, trigMask, deadFlag, nohvFlag);
0155 };
0156 int setCellStatus(
0157 const DTWireId& id, bool noiseFlag, bool feMask, bool tdcMask, bool trigMask, bool deadFlag, bool nohvFlag) {
0158 return set(id, noiseFlag, feMask, tdcMask, trigMask, deadFlag, nohvFlag);
0159 };
0160
0161 int set(int wheelId,
0162 int stationId,
0163 int sectorId,
0164 int slId,
0165 int layerId,
0166 int cellId,
0167 bool noiseFlag,
0168 bool feMask,
0169 bool tdcMask,
0170 bool trigMask,
0171 bool deadFlag,
0172 bool nohvFlag);
0173 int set(const DTWireId& id, bool noiseFlag, bool feMask, bool tdcMask, bool trigMask, bool deadFlag, bool nohvFlag);
0174
0175 int setCellNoise(int wheelId, int stationId, int sectorId, int slId, int layerId, int cellId, bool flag);
0176 int setCellNoise(const DTWireId& id, bool flag);
0177
0178 int setCellFEMask(int wheelId, int stationId, int sectorId, int slId, int layerId, int cellId, bool mask);
0179 int setCellFEMask(const DTWireId& id, bool mask);
0180
0181 int setCellTDCMask(int wheelId, int stationId, int sectorId, int slId, int layerId, int cellId, bool mask);
0182 int setCellTDCMask(const DTWireId& id, bool mask);
0183
0184 int setCellTrigMask(int wheelId, int stationId, int sectorId, int slId, int layerId, int cellId, bool mask);
0185 int setCellTrigMask(const DTWireId& id, bool mask);
0186
0187 int setCellDead(int wheelId, int stationId, int sectorId, int slId, int layerId, int cellId, bool flag);
0188 int setCellDead(const DTWireId& id, bool flag);
0189
0190 int setCellNoHV(int wheelId, int stationId, int sectorId, int slId, int layerId, int cellId, bool flag);
0191 int setCellNoHV(const DTWireId& id, bool flag);
0192
0193
0194 typedef std::vector<std::pair<DTStatusFlagId, DTStatusFlagData> >::const_iterator const_iterator;
0195 const_iterator begin() const;
0196 const_iterator end() const;
0197
0198 void initialize();
0199
0200 private:
0201 std::string dataVersion;
0202
0203 std::vector<std::pair<DTStatusFlagId, DTStatusFlagData> > dataList;
0204
0205 edm::ConstRespectingPtr<DTBufferTree<int, int> > dBuf COND_TRANSIENT;
0206
0207 std::string mapName() const;
0208
0209 COND_SERIALIZABLE;
0210 };
0211 #endif