Go to the documentation of this file.00001 #ifndef CondFormats_RPCObjects_L1RPCHwConfig_h
00002 #define CondFormats_RPCObjects_L1RPCHwConfig_h
00003
00004
00005
00006
00007
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #include <set>
00028 #include <vector>
00029 #include <sstream>
00030
00031 #include <iostream>
00032
00033 struct L1RPCDevCoords {
00034 public:
00035 L1RPCDevCoords(): m_tower(-255), m_PAC(-255) {};
00036 L1RPCDevCoords(int tower, int sector, int segment): m_tower(tower), m_PAC(sector*12+segment) {};
00037 int getTower() {return m_tower;};
00038 int getPAC() {return m_PAC;};
00039 int getSector() {return m_PAC/12;};
00040 int getSegment() {return m_PAC%12;};
00041
00042 std::string toString() const {
00043 std::stringstream ss;
00044 ss << m_tower << " " << m_PAC;
00045 return ss.str();
00046 };
00047
00048 bool operator<(const L1RPCDevCoords & l2 ) const{
00049 if (this->m_tower != l2.m_tower)
00050 return this->m_tower < l2.m_tower;
00051 return this->m_PAC < l2.m_PAC;
00052 }
00053
00054 bool operator==(const L1RPCDevCoords & l2) const{
00055 return (this->m_tower == l2.m_tower) && (this->m_PAC == l2.m_PAC);
00056 }
00057
00058
00059
00060 signed short m_tower;
00061 signed short m_PAC;
00062
00063 };
00064
00065
00066 class L1RPCHwConfig
00067 {
00068
00069 public:
00070 L1RPCHwConfig();
00071 virtual ~L1RPCHwConfig();
00072
00073
00074
00075 bool isActive(int tower, int sector, int segment) const
00076 {
00077 return m_disabledDevices.find( L1RPCDevCoords(tower, sector, segment) )==m_disabledDevices.end();
00078 };
00079
00080 bool isActive(int tower, int PAC) const
00081 {
00082 return m_disabledDevices.end()==m_disabledDevices.find( L1RPCDevCoords(tower, PAC/12, PAC%12) );
00083 };
00084
00085 void enablePAC(int tower, int sector, int segment, bool enable);
00086
00087 void enableTower(int tower, bool enable);
00088
00089 void enableTowerInCrate(int tower, int crate, bool enable);
00090
00091 void enableCrate(int logSector, bool enable);
00092
00093 void enableAll(bool enable);
00094
00095 int size() const {return m_disabledDevices.size(); } ;
00096 void dump() const {
00097 for(std::set<L1RPCDevCoords>::const_iterator it=m_disabledDevices.begin(); it!=m_disabledDevices.end();++it){
00098 std::cout << it->toString() << std::endl;
00099 }
00100 };
00101
00102
00103
00104
00105
00106
00107
00108
00109 private:
00110
00111 std::set<L1RPCDevCoords> m_disabledDevices;
00112
00113
00114
00115 };
00116
00117
00118 #endif