00001 //------------------------------------------------- 00002 // 00003 // Class: L1MuDTSecProcId 00004 // 00005 // Description: Sector Processor identifier 00006 // 00007 // 00008 // $Date: 2008/10/13 07:44:43 $ 00009 // $Revision: 1.3 $ 00010 // 00011 // Author : 00012 // N. Neumeister CERN EP 00013 // 00014 //-------------------------------------------------- 00015 00016 //----------------------- 00017 // This Class's Header -- 00018 //----------------------- 00019 00020 #include "L1Trigger/DTTrackFinder/src/L1MuDTSecProcId.h" 00021 00022 //--------------- 00023 // C++ Headers -- 00024 //--------------- 00025 00026 #include <iostream> 00027 #include <iomanip> 00028 #include <cstdlib> 00029 00030 //------------------------------- 00031 // Collaborating Class Headers -- 00032 //------------------------------- 00033 00034 using namespace std; 00035 00036 // -------------------------------- 00037 // class L1MuDTSecProcId 00038 //--------------------------------- 00039 00040 //---------------- 00041 // Constructors -- 00042 //---------------- 00043 00044 L1MuDTSecProcId::L1MuDTSecProcId() : 00045 m_wheel(0), m_sector(0) {} 00046 00047 L1MuDTSecProcId::L1MuDTSecProcId(int wheel_id, int sector_id) : 00048 m_wheel(wheel_id), m_sector(sector_id) { 00049 00050 if ( !(wheel_id >= -3 && wheel_id <= 3) ) { 00051 // cerr << "SecProcId : wheel out of range: " << wheel_id << endl; 00052 } 00053 if ( !(sector_id >= 0 && sector_id < 12) ) { 00054 // cerr << "SecProcId : sector out of range: " << sector_id << endl; 00055 } 00056 00057 } 00058 00059 00060 L1MuDTSecProcId::L1MuDTSecProcId(const L1MuDTSecProcId& id) : 00061 m_wheel(id.m_wheel), m_sector(id.m_sector) {} 00062 00063 00064 //-------------- 00065 // Destructor -- 00066 //-------------- 00067 00068 L1MuDTSecProcId::~L1MuDTSecProcId() {} 00069 00070 //-------------- 00071 // Operations -- 00072 //-------------- 00073 00074 // 00075 // Assignment operator 00076 // 00077 L1MuDTSecProcId& L1MuDTSecProcId::operator=(const L1MuDTSecProcId& id) { 00078 00079 if ( this != &id ) { 00080 m_wheel = id.m_wheel; 00081 m_sector = id.m_sector; 00082 } 00083 return *this; 00084 00085 } 00086 00087 00088 // 00089 // return logical wheel 00090 // 00091 int L1MuDTSecProcId::locwheel() const { 00092 00093 return ( m_wheel/abs(m_wheel)*(abs(m_wheel)-1) ); 00094 00095 } 00096 00097 00098 // 00099 // Equal operator 00100 // 00101 bool L1MuDTSecProcId::operator==(const L1MuDTSecProcId& id) const { 00102 00103 if ( wheel() != id.wheel() ) return false; 00104 if ( sector() != id.sector() ) return false; 00105 return true; 00106 00107 } 00108 00109 00110 // 00111 // Unequal operator 00112 // 00113 bool L1MuDTSecProcId::operator!=(const L1MuDTSecProcId& id) const { 00114 00115 if ( m_wheel != id.wheel() ) return true; 00116 if ( m_sector != id.sector() ) return true; 00117 return false; 00118 00119 } 00120 00121 00122 // 00123 // Less operator 00124 // 00125 bool L1MuDTSecProcId::operator<(const L1MuDTSecProcId& id) const { 00126 00127 if ( sector() < id.sector() ) return true; 00128 if ( sector() > id.sector() ) return false; 00129 if ( wheel() < 0 && id.wheel() < 0 ) { 00130 if ( -wheel() < -id.wheel() ) return true; 00131 } 00132 else { 00133 if ( wheel() < id.wheel() ) return true; 00134 } 00135 return false; 00136 00137 } 00138 00139 00140 // 00141 // output stream operator 00142 // 00143 ostream& operator<<(ostream& s, const L1MuDTSecProcId& id) { 00144 00145 s.setf(ios::right,ios::adjustfield); 00146 s << "Sector Processor ( " << setw(2) << id.wheel() << "," 00147 << setw(2) << id.sector() << " )"; 00148 return s; 00149 00150 }