CMS 3D CMS Logo

TrigCodes::TrigBitSetMap Class Reference

#include <DQMOffline/Trigger/interface/TrigCodes.h>

List of all members.

Public Member Functions

TrigBitSet getCode (const char *descript) const
void getCodeName (TrigBitSet code, std::string &id) const
void printCodes ()
void setCode (const char *descript, int bitNr)
void setCode (const char *descript, TrigBitSet code)
size_t size () const
void sort ()
 TrigBitSetMap ()
 ~TrigBitSetMap ()

Static Public Member Functions

static bool keyComp (const std::pair< std::string, TrigBitSet > &lhs, const std::pair< std::string, TrigBitSet > &rhs)

Private Attributes

std::vector< std::pair
< std::string, TrigBitSet > > 
codeDefs_


Detailed Description

Definition at line 28 of file TrigCodes.h.


Constructor & Destructor Documentation

TrigCodes::TrigBitSetMap::TrigBitSetMap (  )  [inline]

Definition at line 35 of file TrigCodes.h.

00035 {}

TrigCodes::TrigBitSetMap::~TrigBitSetMap (  )  [inline]

Definition at line 36 of file TrigCodes.h.

00036 {}


Member Function Documentation

TrigCodes::TrigBitSet TrigCodes::TrigBitSetMap::getCode ( const char *  descript  )  const

Definition at line 40 of file TrigCodes.cc.

References code, codeDefs_, first, i, and NULL.

Referenced by TrigCodes::getCode().

00041 { 
00042   //first copy the character string to a local array so we can manipulate it
00043   char localDescript[512];
00044   strcpy(localDescript,descript);
00045   
00046   TrigBitSet code; 
00047   char* codeKey = strtok(localDescript,":");
00048   //  std::map<std::string,int> ::const_iterator mapIt;
00049   while(codeKey!=NULL){
00050     bool found=false;
00051 
00052     for(size_t i=0;i<codeDefs_.size() && !found;i++){
00053       if(codeDefs_[i].first.compare(codeKey)==0){
00054         found=true;
00055         code |= codeDefs_[i].second;
00056 
00057        }
00058     }
00059    
00060     if(!found)  edm::LogError("TrigCodes::TrigBitSetMap") <<"TrigCodes::TrigBitSetMap::getCode : Error, Key "<<codeKey<<" not found";
00061     codeKey = strtok(NULL,":"); //getting new substring
00062     
00063   }
00064   return code;
00065 }

void TrigCodes::TrigBitSetMap::getCodeName ( TrigBitSet  code,
std::string &  id 
) const

Definition at line 72 of file TrigCodes.cc.

References codeDefs_, empty, i, and edm::second().

Referenced by TrigCodes::getCodeName().

00073 {
00074   id.clear();
00075   for(size_t i=0;i<codeDefs_.size();i++){ 
00076     if((code&codeDefs_[i].second)==codeDefs_[i].second){
00077       if(!id.empty()) id+=":";//seperating entries by a ':'
00078       id+=codeDefs_[i].first;
00079     }
00080     
00081   }
00082  
00083 }

bool TrigCodes::TrigBitSetMap::keyComp ( const std::pair< std::string, TrigBitSet > &  lhs,
const std::pair< std::string, TrigBitSet > &  rhs 
) [static]

Definition at line 67 of file TrigCodes.cc.

Referenced by sort().

00068 {
00069   return lhs.first < rhs.first;
00070 }

void TrigCodes::TrigBitSetMap::printCodes (  ) 

Definition at line 85 of file TrigCodes.cc.

References codeDefs_, GenMuonPlsPt100GeV_cfg::cout, lat::endl(), first, i, and edm::second().

Referenced by TrigCodes::printCodes().

00086 {
00087   std::cout <<"trig bits defined"<<std::endl;
00088   for(size_t i=0;i<codeDefs_.size();i++) std::cout <<" key : "<<codeDefs_[i].first<<" bit "<<codeDefs_[i].second<<std::endl;
00089 }

void TrigCodes::TrigBitSetMap::setCode ( const char *  descript,
int  bitNr 
)

Definition at line 17 of file TrigCodes.cc.

References code, TrigCodes::maxNrBits(), and setCode().

00018 {
00019   if(bitNr<maxNrBits()){
00020     TrigBitSet code;
00021     code.set(bitNr);
00022     setCode(descript,code);
00023   }else{
00024     edm::LogWarning("TrigCodes::TrigBitSetMap") <<" Warning, trying to store at bit "<<bitNr<<" but max nr bits is "<<maxNrBits();
00025   }
00026 }

void TrigCodes::TrigBitSetMap::setCode ( const char *  descript,
TrigBitSet  code 
)

Definition at line 28 of file TrigCodes.cc.

References codeDefs_, first, and i.

Referenced by setCode(), and TrigCodes::setCodes().

00029 {
00030   bool found=false;
00031   for(size_t i=0;i<codeDefs_.size() && !found;i++){
00032     if(codeDefs_[i].first.compare(descript)==0) found=true;
00033   }
00034   if(!found) codeDefs_.push_back(std::make_pair<std::string,TrigBitSet>(descript,code));
00035   //_codeDefs[descript] = code;
00036 }

size_t TrigCodes::TrigBitSetMap::size ( void   )  const [inline]

Definition at line 49 of file TrigCodes.h.

References codeDefs_.

Referenced by TrigCodes::setCodes().

00049 {return codeDefs_.size();}

void TrigCodes::TrigBitSetMap::sort (  )  [inline]

Definition at line 48 of file TrigCodes.h.

References codeDefs_, keyComp(), and python::multivaluedict::sort().

Referenced by TrigCodes::setCodes().

00048 {std::sort(codeDefs_.begin(),codeDefs_.end(),keyComp);}


Member Data Documentation

std::vector<std::pair<std::string,TrigBitSet> > TrigCodes::TrigBitSetMap::codeDefs_ [private]

Definition at line 32 of file TrigCodes.h.

Referenced by getCode(), getCodeName(), printCodes(), setCode(), size(), and sort().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:34:30 2009 for CMSSW by  doxygen 1.5.4