00001 #include "DQMOffline/Trigger/interface/EleHLTPathMon.h" 00002 00003 00004 00005 EleHLTPathMon::~EleHLTPathMon() 00006 { 00007 for(size_t i=0;i<filters_.size();i++) delete filters_[i]; 00008 } 00009 00010 //a design decision to take a minor efficiency hit at object contruction to ensure that the vector is always sorted 00011 //the alternative is to rely on the user (ha!) or a bool which is contiously checked to ensure the vector is sorted 00012 void EleHLTPathMon::addFilter(const std::string& filterName) 00013 { 00014 filters_.push_back(new EleHLTFilterMon(filterName,TrigCodes::getCode(filterName.c_str()))); 00015 std::sort(filters_.begin(),filters_.end(),EleHLTFilterMon::ptrLess<EleHLTFilterMon>()); 00016 } 00017 00018 00019 void EleHLTPathMon::addFilters(const std::vector<std::string>& names) 00020 { 00021 for(size_t i=0;i<names.size();i++) addFilter(pathName_+names[i]); 00022 00023 } 00024 00025 //void EleHLTPathMon::setStdFilters() 00026 //{ 00027 //addFilter(pathName_+"L1MatchFilterRegional"); 00028 //addFilter(pathName_+"EtFilter"); 00029 //addFilter(pathName_+"HcalIsolFilter"); 00030 //addFilter(pathName_+"PixelMatchFilter"); 00031 //addFilter(pathName_+"EoverpFilter"); 00032 //addFilter(pathName_+"HOneOEMinusOneOPFilter"); 00033 //addFilter(pathName_+"TrackIsolFilter"); 00034 //} 00035 00036 00037 00038 void EleHLTPathMon::fill(const EgHLTOffData& evtData,float weight) 00039 { 00040 for(size_t filterNr=0;filterNr<filters_.size();filterNr++){ 00041 // edm::LogInfo("EleHLTPathMon") << "fill filter "<<filterNr<<" / "<<filters_.size(); 00042 filters_[filterNr]->fill(evtData,weight); 00043 //edm::LogInfo("EleHLTPathMon") << "filled filter "<<filterNr<<" / "<<filters_.size(); 00044 } 00045 } 00046 00047 std::vector<std::string> EleHLTPathMon::getFilterNames()const 00048 { 00049 std::vector<std::string> names; 00050 for(size_t filterNr=0;filterNr<filters_.size();filterNr++){ 00051 names.push_back(filters_[filterNr]->filterName()); 00052 } 00053 return names; 00054 }