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 }