CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_5_3_13_patch3/src/CondFormats/L1TObjects/src/L1MuDTEtaPatternLut.cc

Go to the documentation of this file.
00001 //-------------------------------------------------
00002 //
00003 //   Class: L1MuDTEtaPatternLut
00004 //
00005 //   Description: Look-up table for eta track finder
00006 //
00007 //
00008 //   $Date: 2008/02/25 15:26:57 $
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/L1MuDTEtaPatternLut.h"
00022 
00023 //---------------
00024 // C++ Headers --
00025 //---------------
00026 
00027 #include <iostream>
00028 #include <iomanip>
00029 #include <string>
00030 
00031 //-------------------------------
00032 // Collaborating Class Headers --
00033 //-------------------------------
00034 
00035 #include "FWCore/ParameterSet/interface/FileInPath.h"
00036 #include "CondFormats/L1TObjects/interface/L1TriggerLutFile.h"
00037 
00038 using namespace std;
00039 
00040 // --------------------------------
00041 //       class L1MuDTEtaPatternLut
00042 //---------------------------------
00043 
00044 //----------------
00045 // Constructors --
00046 //----------------
00047 
00048 L1MuDTEtaPatternLut::L1MuDTEtaPatternLut() {
00049 
00050   //  if ( load() != 0 ) {
00051   //    cout << "Can not open files to load eta track finder look-up tables for DTTrackFinder!" << endl;
00052   //  }
00053 
00054   //  if ( L1MuDTTFConfig::Debug(6) ) print();
00055 
00056 }
00057 
00058 
00059 //--------------
00060 // Destructor --
00061 //--------------
00062 
00063 L1MuDTEtaPatternLut::~L1MuDTEtaPatternLut() {
00064 
00065   m_lut.clear();
00066 
00067 }
00068 
00069 
00070 //--------------
00071 // Operations --
00072 //--------------
00073 
00074 //
00075 // reset look-up table
00076 //
00077 void L1MuDTEtaPatternLut::reset() {
00078 
00079   m_lut.clear();
00080 
00081 }
00082 
00083 
00084 //
00085 // load pattern look-up table for ETF
00086 //
00087 int L1MuDTEtaPatternLut::load() {
00088 
00089   // get directory name
00090   string defaultPath = "L1TriggerConfig/DTTrackFinder/parameters/";
00091   string eau_dir = "L1TriggerData/DTTrackFinder/Eau/";
00092 
00093   // assemble file name
00094   edm::FileInPath lut_f = edm::FileInPath(string(defaultPath + eau_dir + "ETFPatternList.lut"));
00095   string etf_file = lut_f.fullPath();
00096 
00097   // open file
00098   L1TriggerLutFile file(etf_file);
00099   if ( file.open() != 0 ) return -1;
00100   //  if ( L1MuDTTFConfig::Debug(1) ) cout << "Reading file : " 
00101   //                                       << file.getName() << endl; 
00102 
00103   // ignore comment lines 
00104   file.ignoreLines(16);
00105  
00106   // read patterns
00107   while ( file.good() ) {
00108 
00109     int id     = file.readInteger();
00110     if ( !file.good() ) break;
00111     string pat = file.readString();
00112     if ( !file.good() ) break;
00113     int qual   = file.readInteger();
00114     if ( !file.good() ) break;
00115     int eta    = file.readInteger();
00116     if ( !file.good() ) break;
00117     L1MuDTEtaPattern pattern(id,pat,eta,qual);
00118       
00119     m_lut[pattern.id()] = pattern;
00120 
00121     if ( !file.good() ) { file.close(); break; }
00122     
00123   }
00124 
00125   file.close();
00126     
00127   return 0;
00128 
00129 }
00130 
00131 
00132 //
00133 // print pattern look-up table for ETF
00134 //
00135 void L1MuDTEtaPatternLut::print() const {
00136 
00137   cout << endl;
00138   cout << "L1 barrel Track Finder ETA Pattern look-up table :" << endl;
00139   cout << "==================================================" << endl;
00140   cout << endl;
00141 
00142   cout << "ETF Patterns : " <<  m_lut.size() << endl;
00143   cout << "======================" << endl;
00144   cout << endl;
00145 
00146   LUT::const_iterator iter = m_lut.begin();
00147   while ( iter != m_lut.end() ) {
00148     cout << (*iter).second << endl;
00149     iter++;
00150   }
00151 
00152   cout << endl;
00153 
00154 }
00155 
00156 
00157 //
00158 // get pattern with a given ID
00159 //
00160 L1MuDTEtaPattern L1MuDTEtaPatternLut::getPattern(int id) const {
00161 
00162   LUT::const_iterator it = m_lut.find(id);
00163   if ( it == m_lut.end() ) {
00164     cerr << "Error: L1MuDTEtaPatternLut: pattern not found : " << id << endl;
00165     //    return 0;
00166   }
00167   return (*it).second;  
00168 
00169 }