• Main Page
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

/Users/jmonk/Physics/ForIA/src/TriggerConfiguration.cxx

Go to the documentation of this file.
00001 #include "ForIA/TriggerConfiguration.hh"
00002 
00003 //#include <iostream>
00004 namespace ForIA{
00005   
00006   const string TriggerConfiguration::BAD_TRIGGER_NAME = "__BAD_TRIGGER_NAME__";
00007   
00008   TriggerConfiguration::TriggerConfiguration(): m_status(EMPTY), m_smk(0), m_l1PSK(0), m_hltPSK(0), 
00009   m_gotL1BitNames(false),m_gotHltChainNames(false){
00010     
00011   }
00013   TriggerConfiguration::Status TriggerConfiguration::status()const{
00014     return m_status;
00015   }
00017   void TriggerConfiguration::clear(){
00018     m_smk = 0;
00019     m_l1PSK = 0;
00020     m_hltPSK = 0;
00021     m_status = EMPTY;
00022     m_gotHltChainNames = false;
00023     return;
00024   }
00026   void TriggerConfiguration::resetChainNames(){
00027     m_l1BitNames.clear();
00028     m_gotL1BitNames = false;
00029     m_hltChainNames.clear();
00030     m_gotHltChainNames = false;
00031     m_hltNames.clear();
00032     m_lowerChainNames.clear();
00033     return;
00034   }
00036   unsigned int TriggerConfiguration::superMasterKey()const{
00037     return m_smk;
00038   }
00040   unsigned int TriggerConfiguration::l1PrescaleKey()const{
00041     return m_l1PSK;
00042   }
00044   unsigned int TriggerConfiguration::hltPrescaleKey()const{
00045     return m_hltPSK;
00046   }
00047   
00049   const string &TriggerConfiguration::lowerChainName(const string &hltName)const{
00050     map<string, string>::const_iterator it = m_lowerChainNames.find(hltName);
00051     
00052     if(it == m_lowerChainNames.end()) return TriggerConfiguration::BAD_TRIGGER_NAME;
00053     
00054     return it->second;
00055   }
00056   
00058   int TriggerConfiguration::hltChainID(const string &name)const{
00059     
00060     map<string, int>::const_iterator it = m_hltNames.find(name);
00061     
00062     if(it ==  m_hltNames.end()){
00063       return -1;
00064     }
00065     return it->second;
00066   }
00068   string TriggerConfiguration::hltChainName(int id)const{
00069     map<int, string>::const_iterator it = m_hltIDs.find(id);
00070     
00071     string result="";
00072     bool found = false;
00073     if(it==m_hltIDs.end()){
00074       for(map<string, int>::const_iterator nn = m_hltNames.begin();
00075           nn != m_hltNames.end(); ++nn){
00076         if(nn->second == id){
00077           m_hltIDs[id] = nn->first;
00078           result = nn->first;
00079           found = true;
00080           break;
00081         }
00082       }
00083     }else{
00084       return it->second;
00085     }
00086     
00087     if(!found){
00088       m_hltIDs[id]=result;
00089     }
00090     
00091     return result;
00092   }
00094   float TriggerConfiguration::hltPrescale(const string &name)const{
00095     
00096     map<string, float>::const_iterator it = m_hltPrescales.find(name);
00097     
00098     if(it == m_hltPrescales.end()) return -1.;
00099     
00100     return it->second;
00101   }
00102   
00104   float TriggerConfiguration::l1Prescale(const string &name)const{
00105     map<string, float>::const_iterator it = m_l1Prescales.find(name);
00106     if(it == m_l1Prescales.end()) return -1.;
00107     
00108     return it->second;
00109   }
00110 
00112   float TriggerConfiguration::chainPrescale(const string &name)const{
00113     
00114     boost::unordered_map<string, float>::const_iterator it = m_totalPrescale.find(name);
00115     if(it != m_totalPrescale.end())return it->second;
00116     
00117     string trigName = name;
00118     float prescale = 1.;
00119     float subTrig = hltPrescale(trigName);
00120     
00121     while(subTrig > 0.){
00122       prescale *= subTrig;
00123       trigName = lowerChainName(trigName);
00124       subTrig = hltPrescale(trigName);
00125     }
00126     
00127     subTrig = l1Prescale(trigName);
00128     if(subTrig > 0.) prescale *= subTrig;
00129     
00130     m_totalPrescale.insert(std::pair<string, float>(name, prescale));
00131     
00132     return prescale;
00133   }
00134   
00136   const vector<string> &TriggerConfiguration::l1Names()const{
00137     if(m_gotL1BitNames) return m_l1BitNames;
00138     m_l1BitNames.clear();
00139     
00140     for(NameIDMap::const_iterator it = m_l1Names.begin();
00141         it != m_l1Names.end(); ++it){
00142       m_l1BitNames.push_back(it->first);
00143     }
00144     
00145     return m_l1BitNames;
00146   }
00148   int TriggerConfiguration::l1Ctpid(const string &name)const{
00149     
00150 //    std::cout<<"queried name = "<<name<<std::endl;
00151   /*  
00152     for(NameIDMap::const_iterator i = m_l1Names.begin();
00153         i != m_l1Names.end(); ++i){
00154       std::cout<<i->first<<": "<<(i->first==name)<<std::endl;
00155     }
00156     */
00157     NameIDMap::const_iterator it = m_l1Names.find(name);
00158     
00159     if(it==m_l1Names.end()) return -1;
00160     return it->second;
00161   }
00163   const vector<string> &TriggerConfiguration::hltChainNames()const{
00164     if(m_gotHltChainNames) return m_hltChainNames;
00165     
00166     m_hltChainNames.clear();
00167     
00168     for(NameIDMap::const_iterator it = m_hltNames.begin();
00169         it != m_hltNames.end(); ++it){
00170       m_hltChainNames.push_back(it->first);
00171     }
00172         
00173     m_gotHltChainNames = true;
00174     
00175     return m_hltChainNames;
00176   }
00177   
00178 }
00179 

Generated on Mon Jul 30 2012 16:56:35 for ForIA by  doxygen 1.7.2