CMS 3D CMS Logo

L1MuDTEtaPattern.cc

Go to the documentation of this file.
00001 //-------------------------------------------------
00002 //
00003 //   Class: L1MuDTEtaPattern
00004 //
00005 //   Description: Pattern for Eta for Eta Track Finder
00006 //
00007 //
00008 //   $Date: 2008/01/22 18:50:24 $
00009 //   $Revision: 1.2 $
00010 //
00011 //   Author :
00012 //   N. Neumeister             CERN EP
00013 //   J. Troconiz               UAM Madrid
00014 //
00015 //--------------------------------------------------
00016 
00017 //-----------------------
00018 // This Class's Header --
00019 //-----------------------
00020 
00021 #include "CondFormats/L1TObjects/interface/L1MuDTEtaPattern.h"
00022 
00023 //---------------
00024 // C++ Headers --
00025 //---------------
00026 
00027 #include <iostream>
00028 #include <iomanip>
00029 #include <bitset>
00030 
00031 //-------------------------------
00032 // Collaborating Class Headers --
00033 //-------------------------------
00034 
00035 using namespace std;
00036 
00037 // --------------------------------
00038 //       class L1MuDTEtaPattern  
00039 //---------------------------------
00040 
00041 //----------------
00042 // Constructors --
00043 //----------------
00044 
00045 L1MuDTEtaPattern::L1MuDTEtaPattern() :
00046   m_id(0), m_eta(0), m_qual(0) {
00047   
00048   for (int i = 0; i < 3; i++) {
00049     m_wheel[i] = 0; 
00050     m_position[i] = 0;
00051   }
00052      
00053 }
00054 
00055 
00056 L1MuDTEtaPattern::L1MuDTEtaPattern(int id, int w1, int w2, int w3, 
00057                                    int p1, int p2, int p3, 
00058                                    int eta, int qual) : 
00059                                 
00060   m_id(id), m_eta(eta), m_qual(qual) { 
00061   
00062   m_wheel[0] = w1;
00063   m_wheel[1] = w2;
00064   m_wheel[2] = w3; 
00065   m_position[0] = p1;
00066   m_position[1] = p2;
00067   m_position[2] = p3;
00068   
00069 }                                                
00070 
00071 
00072 L1MuDTEtaPattern::L1MuDTEtaPattern(int id, string pat, int eta, int qual) :
00073   m_id(id), m_eta(eta), m_qual(qual) {
00074   
00075   for ( int i = 0; i < 3; i++ ) {
00076     string sub = pat.substr(3*i,3);
00077     if ( sub == "___" ) {
00078       m_wheel[i] = 0;
00079       m_position[i] = 0;
00080     }
00081     else {
00082       m_wheel[i] = atoi(sub.substr(0,2).c_str());
00083       m_position[i] = atoi(sub.substr(2,1).c_str());
00084     }
00085   }
00086 }
00087 
00088 
00089 L1MuDTEtaPattern::L1MuDTEtaPattern(const L1MuDTEtaPattern& p) :
00090   m_id(p.m_id), m_eta(p.m_eta), m_qual(p.m_qual) {
00091   
00092   for (int i = 0; i < 3; i++) {
00093     m_wheel[i] = p.m_wheel[i]; 
00094     m_position[i] = p.m_position[i];
00095   }   
00096 
00097 }
00098 
00099 
00100 //--------------
00101 // Destructor --
00102 //--------------
00103 
00104 L1MuDTEtaPattern::~L1MuDTEtaPattern() {}
00105 
00106 
00107 //--------------
00108 // Operations --
00109 //--------------
00110 
00111 //
00112 // Assignment operator
00113 //
00114 L1MuDTEtaPattern& L1MuDTEtaPattern::operator=(const L1MuDTEtaPattern& p) {
00115 
00116   if ( this != &p ) {
00117     m_id   = p.m_id;
00118     m_eta  = p.m_eta;
00119     m_qual = p.m_qual;
00120     for (int i = 0; i < 3; i++) {
00121       m_wheel[i] = p.m_wheel[i];
00122       m_position[i] = p.m_position[i];
00123     }
00124   }
00125   return *this; 
00126   
00127 }
00128 
00129 
00130 //
00131 // Equal operator
00132 //
00133 bool L1MuDTEtaPattern::operator==(const L1MuDTEtaPattern& p) const { 
00134 
00135   if ( m_id   != p.id() )      return false;
00136   if ( m_eta  != p.eta() )     return false;
00137   if ( m_qual != p.quality() ) return false;
00138   for (int i = 0; i < 3; i++) {
00139     if ( m_wheel[i]    != p.m_wheel[i] )    return false;
00140     if ( m_position[i] != p.m_position[i] ) return false;
00141   }
00142   return true;
00143   
00144 }
00145 
00146 
00147 //
00148 // Unequal operator
00149 //
00150 bool L1MuDTEtaPattern::operator!=(const L1MuDTEtaPattern& p) const {
00151 
00152   if ( m_id   != p.id() )      return true;
00153   if ( m_eta  != p.eta() )     return true;
00154   if ( m_qual != p.quality() ) return true;
00155   for (int i = 0; i < 3; i++) {
00156     if ( m_wheel[i]    != p.m_wheel[i] )    return true;
00157     if ( m_position[i] != p.m_position[i] ) return true;
00158   }
00159   return false;
00160   
00161 }
00162 
00163 
00164 
00165 //
00166 // output stream operator
00167 //
00168 ostream& operator<<(ostream& s, const L1MuDTEtaPattern& p) {
00169 
00170   s.setf(ios::right,ios::adjustfield);
00171   s << "ID = " << setw(8) << p.id() << "  " 
00172     << "quality = "  << setw(2) << p.quality()  << "  " 
00173     << "eta = " << setw(1) << p.eta() << endl;
00174     for (int i = 0; i < 3; i++) {
00175       s << "station = " << i+1 << " : ";
00176       for (int j = 0; j < 5; j++) {
00177         bitset<7> pos;
00178         if ( p.m_position[i] && (p.m_wheel[i] == j-2) ) pos.set(p.m_position[i]-1);
00179         s <<  pos << " ";
00180       }
00181       s << endl;
00182     }    
00183 
00184   return s;
00185 
00186 }
00187 
00188 
00189 //
00190 // input stream operator
00191 //
00192 istream& operator>>(istream& s, L1MuDTEtaPattern& p) {
00193 
00194   string pat;
00195 
00196   s >> p.m_id >> pat >> p.m_qual >> p.m_eta;
00197 
00198   for ( int i = 0; i < 3; i++ ) {
00199     string sub = pat.substr(3*i,3);
00200     if ( sub == "___" ) {
00201       p.m_wheel[i] = 0;
00202       p.m_position[i] = 0;
00203     }
00204     else {
00205       p.m_wheel[i] = atoi(sub.substr(0,2).c_str());
00206       p.m_position[i] = atoi(sub.substr(2,1).c_str());
00207     }
00208   }
00209 
00210   return s;
00211 
00212 }

Generated on Tue Jun 9 17:26:38 2009 for CMSSW by  doxygen 1.5.4