CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_5_3_14/src/L1Trigger/DTTrackFinder/src/L1MuDTSecProcId.cc

Go to the documentation of this file.
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 }