00001 #ifndef DTDeadFlag_H
00002 #define DTDeadFlag_H
00003
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "CondFormats/DTObjects/interface/DTBufferTree.h"
00023 #include "DataFormats/MuonDetId/interface/DTWireId.h"
00024
00025
00026
00027
00028 #include <string>
00029 #include <vector>
00030
00031
00032
00033
00034
00035 class DTDeadFlagId {
00036
00037 public:
00038
00039 DTDeadFlagId();
00040 ~DTDeadFlagId();
00041
00042 int wheelId;
00043 int stationId;
00044 int sectorId;
00045 int slId;
00046 int layerId;
00047 int cellId;
00048
00049 };
00050
00051
00052 class DTDeadFlagData {
00053
00054 public:
00055
00056 DTDeadFlagData();
00057 ~DTDeadFlagData();
00058
00059 bool dead_HV;
00060 bool dead_TP;
00061 bool dead_RO;
00062 bool discCat;
00063
00064 };
00065
00066
00067 class DTDeadFlag {
00068
00069 public:
00070
00073 DTDeadFlag();
00074 DTDeadFlag( const std::string& version );
00075
00078 ~DTDeadFlag();
00079
00082
00083 int cellStatus( int wheelId,
00084 int stationId,
00085 int sectorId,
00086 int slId,
00087 int layerId,
00088 int cellId,
00089 bool& dead_HV,
00090 bool& dead_TP,
00091 bool& dead_RO,
00092 bool& discCat ) const
00093 { return get( wheelId, stationId, sectorId, slId, layerId, cellId,
00094 dead_HV, dead_TP, dead_RO, discCat ); };
00095 int cellStatus( const DTWireId& id,
00096 bool& dead_HV,
00097 bool& dead_TP,
00098 bool& dead_RO,
00099 bool& discCat ) const
00100 { return get( id, dead_HV, dead_TP, dead_RO, discCat ); };
00101 int get( int wheelId,
00102 int stationId,
00103 int sectorId,
00104 int slId,
00105 int layerId,
00106 int cellId,
00107 bool& dead_HV,
00108 bool& dead_TP,
00109 bool& dead_RO,
00110 bool& discCat ) const;
00111 int get( const DTWireId& id,
00112 bool& dead_HV,
00113 bool& dead_TP,
00114 bool& dead_RO,
00115 bool& discCat ) const;
00116
00117 bool getCellDead_HV( int wheelId,
00118 int stationId,
00119 int sectorId,
00120 int slId,
00121 int layerId,
00122 int cellId ) const;
00123 bool getCellDead_HV( const DTWireId& id ) const;
00124
00125 bool getCellDead_TP( int wheelId,
00126 int stationId,
00127 int sectorId,
00128 int slId,
00129 int layerId,
00130 int cellId ) const;
00131 bool getCellDead_TP( const DTWireId& id ) const;
00132
00133 bool getCellDead_RO( int wheelId,
00134 int stationId,
00135 int sectorId,
00136 int slId,
00137 int layerId,
00138 int cellId ) const;
00139 bool getCellDead_RO( const DTWireId& id ) const;
00140
00141 bool getCellDiscCat( int wheelId,
00142 int stationId,
00143 int sectorId,
00144 int slId,
00145 int layerId,
00146 int cellId ) const;
00147 bool getCellDiscCat( const DTWireId& id ) const;
00148
00150 const
00151 std::string& version() const;
00152 std::string& version();
00153
00155 void clear();
00156
00157 int setCellStatus( int wheelId,
00158 int stationId,
00159 int sectorId,
00160 int slId,
00161 int layerId,
00162 int cellId,
00163 bool dead_HV,
00164 bool dead_TP,
00165 bool dead_RO,
00166 bool discCat )
00167 { return set( wheelId, stationId, sectorId, slId, layerId, cellId,
00168 dead_HV, dead_TP, dead_RO, discCat ); };
00169 int setCellStatus( const DTWireId& id,
00170 bool dead_HV,
00171 bool dead_TP,
00172 bool dead_RO,
00173 bool discCat )
00174 { return set( id, dead_HV, dead_TP, dead_RO, discCat ); };
00175
00176 int set( int wheelId,
00177 int stationId,
00178 int sectorId,
00179 int slId,
00180 int layerId,
00181 int cellId,
00182 bool dead_HV,
00183 bool dead_TP,
00184 bool dead_RO,
00185 bool discCat ) ;
00186 int set( const DTWireId& id,
00187 bool dead_HV,
00188 bool dead_TP,
00189 bool dead_RO,
00190 bool discCat );
00191
00192 int setCellDead_HV( int wheelId,
00193 int stationId,
00194 int sectorId,
00195 int slId,
00196 int layerId,
00197 int cellId,
00198 bool flag );
00199 int setCellDead_HV( const DTWireId& id,
00200 bool flag );
00201
00202 int setCellDead_TP( int wheelId,
00203 int stationId,
00204 int sectorId,
00205 int slId,
00206 int layerId,
00207 int cellId,
00208 bool flag );
00209 int setCellDead_TP( const DTWireId& id,
00210 bool flag );
00211
00212 int setCellDead_RO( int wheelId,
00213 int stationId,
00214 int sectorId,
00215 int slId,
00216 int layerId,
00217 int cellId,
00218 bool flag );
00219 int setCellDead_RO( const DTWireId& id,
00220 bool flag );
00221
00222 int setCellDiscCat( int wheelId,
00223 int stationId,
00224 int sectorId,
00225 int slId,
00226 int layerId,
00227 int cellId,
00228 bool flag );
00229 int setCellDiscCat( const DTWireId& id,
00230 bool flag );
00231
00233 typedef std::vector< std::pair<DTDeadFlagId,
00234 DTDeadFlagData> >::const_iterator
00235 const_iterator;
00236 const_iterator begin() const;
00237 const_iterator end() const;
00238
00239 private:
00240
00241 std::string dataVersion;
00242
00243 std::vector< std::pair<DTDeadFlagId,DTDeadFlagData> > dataList;
00244
00245 DTBufferTree<int,int>* dBuf;
00246
00248 void cacheMap() const;
00249 std::string mapName() const;
00250
00251 };
00252
00253
00254 #endif // DTDeadFlag_H
00255