CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
Functions
egHLT::trigTools Namespace Reference

Functions

void filterInactiveTightLooseTriggers (std::vector< std::string > &namesToFilter, const std::vector< std::string > &activeFilters)
 
void filterInactiveTriggers (std::vector< std::string > &namesToFilter, const std::vector< std::string > &activeFilters)
 
void getActiveFilters (const HLTConfigProvider &hltConfig, std::vector< std::string > &activeFilters)
 
float getEtThresFromName (const std::string &trigName)
 
TrigCodes::TrigBitSet getFiltersPassed (const std::vector< std::pair< std::string, int > > &filters, const trigger::TriggerEvent *trigEvt, const std::string &hltTag)
 
std::string getL1SeedFilterOfPath (const HLTConfigProvider &hltConfig, const std::string &path)
 
int getMinNrObjsRequiredByFilter (const std::string &filterName)
 
template<class T >
void setFiltersObjPasses (std::vector< T > &objs, const std::vector< std::string > &filters, const std::vector< std::pair< std::string, std::string > > &l1PreAndSeedFilters, const TrigCodes::TrigBitSet &evtTrigBits, const trigger::TriggerEvent *trigEvt, const std::string &hltTag)
 
void translateFiltersToPathNames (const HLTConfigProvider &hltConfig, const std::vector< std::string > &filters, std::vector< std::string > &paths)
 

Function Documentation

void egHLT::trigTools::filterInactiveTightLooseTriggers ( std::vector< std::string > &  namesToFilter,
const std::vector< std::string > &  activeFilters 
)

Definition at line 107 of file EgHLTTrigTools.cc.

References h::names, and split.

Referenced by EgHLTOfflineClient::beginRun(), and EgHLTOfflineSource::filterTriggers().

108 {
109  //tempory vector to store the filtered results
110  std::vector<std::string> filteredNames;
111 
112  for(size_t inputFilterNr=0;inputFilterNr<namesToFilter.size();inputFilterNr++){
113  std::vector<std::string> names;
114  boost::split(names,namesToFilter[inputFilterNr],boost::is_any_of(std::string(":")));
115  if(names.size()!=2) continue; //format incorrect, reject it
116  if(std::binary_search(activeFilters.begin(),activeFilters.end(),names[0]) &&
117  std::binary_search(activeFilters.begin(),activeFilters.end(),names[1])){ //both filters are valid
118  filteredNames.push_back(namesToFilter[inputFilterNr]);
119  }
120  }
121 
122  namesToFilter.swap(filteredNames);
123 }
static const HistoName names[]
double split
Definition: MVATrainer.cc:139
void egHLT::trigTools::filterInactiveTriggers ( std::vector< std::string > &  namesToFilter,
const std::vector< std::string > &  activeFilters 
)

Definition at line 92 of file EgHLTTrigTools.cc.

Referenced by EgHLTOfflineClient::beginRun(), EgHLTOfflineSummaryClient::beginRun(), and EgHLTOfflineSource::filterTriggers().

93 {
94  //tempory vector to store the filtered results
95  std::vector<std::string> filteredNames;
96 
97  for(size_t inputFilterNr=0;inputFilterNr<namesToFilter.size();inputFilterNr++){
98  if(std::binary_search(activeFilters.begin(),activeFilters.end(),namesToFilter[inputFilterNr])){
99  filteredNames.push_back(namesToFilter[inputFilterNr]);
100  }
101  }
102 
103  namesToFilter.swap(filteredNames);
104 }
void egHLT::trigTools::getActiveFilters ( const HLTConfigProvider hltConfig,
std::vector< std::string > &  activeFilters 
)

Definition at line 67 of file EgHLTTrigTools.cc.

References filters, HLTConfigProvider::moduleLabels(), pathName(), HLTConfigProvider::size(), python.multivaluedict::sort(), and HLTConfigProvider::triggerName().

Referenced by EgHLTOfflineClient::beginRun(), EgHLTOfflineSummaryClient::beginRun(), and EgHLTOfflineSource::filterTriggers().

68 {
69  activeFilters.clear();
70 
71  for(size_t pathNr=0;pathNr<hltConfig.size();pathNr++){
72  const std::string& pathName = hltConfig.triggerName(pathNr);
73  if(pathName.find("HLT_")==0){ //hlt path as they all start with HLT_XXXX
74 
75  std::string lastFilter;
76  const std::vector<std::string>& filters = hltConfig.moduleLabels(pathNr);
77  if(!filters.empty()){
78  if(filters.back()=="hltBoolEnd" && filters.size()>=2){
79  activeFilters.push_back(filters[filters.size()-2]); //2nd to last element is the last filter, useally the case as last is hltBool except for ES bits
80  }else activeFilters.push_back(filters.back());
81  }
82  }//end hlt path check
83  }//end path loop over
84 
85  std::sort(activeFilters.begin(),activeFilters.end());
86 
87 }
unsigned int size() const
number of trigger paths in trigger table
const std::string & triggerName(unsigned int triggerIndex) const
std::vector< TPRegexp > filters
Definition: eve_filter.cc:25
const std::string * pathName() const
Definition: HLTadd.h:31
const std::vector< std::string > & moduleLabels(unsigned int trigger) const
label(s) of module(s) on a trigger path
float egHLT::trigTools::getEtThresFromName ( const std::string &  trigName)

Definition at line 186 of file EgHLTTrigTools.cc.

Referenced by egHLT::MonElemFuncs::addTightLooseTrigHist(), and egHLT::MonElemFuncs::initTrigTagProbeHists().

187 {
188  size_t etStrPos = trigName.find("Et");
189  while(etStrPos!=std::string::npos && trigName.find_first_of("1234567890",etStrPos)!=etStrPos+2){
190  etStrPos = trigName.find("Et",etStrPos+1);
191  }
192  if(etStrPos!=std::string::npos && trigName.find_first_of("1234567890",etStrPos)==etStrPos+2){
193  size_t endOfEtValStr = trigName.find_first_not_of("1234567890",etStrPos+2);
194 
195  std::istringstream etValStr(trigName.substr(etStrPos+2,endOfEtValStr-etStrPos-2));
196  float etVal;
197  etValStr>> etVal;
198  return etVal;
199 
200  }
201  return 0;
202 
203 }
TrigCodes::TrigBitSet egHLT::trigTools::getFiltersPassed ( const std::vector< std::pair< std::string, int > > &  filters,
const trigger::TriggerEvent trigEvt,
const std::string &  hltTag 
)

Definition at line 10 of file EgHLTTrigTools.cc.

References alcaDQMUpload::encode(), trigger::TriggerEvent::filterIndex(), trigger::TriggerEvent::filterKeys(), filters, first, egHLT::TrigCodes::getCode(), and edm::second().

Referenced by egHLT::OffHelper::setTrigInfo().

11 {
12  TrigCodes::TrigBitSet evtTrigs;
13  for(size_t filterNrInVec=0;filterNrInVec<filters.size();filterNrInVec++){
14  size_t filterNrInEvt = trigEvt->filterIndex(edm::InputTag(filters[filterNrInVec].first,"",hltTag).encode());
15  const TrigCodes::TrigBitSet filterCode = TrigCodes::getCode(filters[filterNrInVec].first.c_str());
16  if(filterNrInEvt<trigEvt->sizeFilters()){ //filter found in event, however this only means that something passed the previous filter
17  const trigger::Keys& trigKeys = trigEvt->filterKeys(filterNrInEvt);
18  if(static_cast<int>(trigKeys.size())>=filters[filterNrInVec].second){
19  evtTrigs |=filterCode; //filter was passed
20  }
21  }//end check if filter is present
22  }//end loop over all filters
23 
24 
25  return evtTrigs;
26 
27 }
const Keys & filterKeys(trigger::size_type index) const
Definition: TriggerEvent.h:106
trigger::size_type filterIndex(const edm::InputTag &filterTag) const
find index of filter in data-member vector from filter tag
Definition: TriggerEvent.h:118
std::vector< TPRegexp > filters
Definition: eve_filter.cc:25
U second(std::pair< T, U > const &p)
bool first
Definition: L1TdeRCT.cc:79
std::vector< size_type > Keys
std::bitset< maxNrBits_ > TrigBitSet
std::string egHLT::trigTools::getL1SeedFilterOfPath ( const HLTConfigProvider hltConfig,
const std::string &  path 
)

Definition at line 172 of file EgHLTTrigTools.cc.

References HLTConfigProvider::moduleLabels().

Referenced by egHLT::OffHelper::setupTriggers().

173 {
174  const std::vector<std::string>& modules = hltConfig.moduleLabels(path);
175 
176  for(size_t moduleNr=0;moduleNr<modules.size();moduleNr++){
177  const std::string& moduleName=modules[moduleNr];
178  if(moduleName.find("hltL1s")==0) return moduleName; //found l1 seed module
179  }
180  std::string dummy;
181  return dummy;
182 
183 }
int path() const
Definition: HLTadd.h:3
const std::vector< std::string > & moduleLabels(unsigned int trigger) const
label(s) of module(s) on a trigger path
int egHLT::trigTools::getMinNrObjsRequiredByFilter ( const std::string &  filterName)

Definition at line 39 of file EgHLTTrigTools.cc.

References edm::detail::ThreadSafeRegistry< KEY, T, E >::begin(), edm::detail::ThreadSafeRegistry< KEY, T, E >::end(), reco_skim_cfg_mod::filterName, edm::detail::ThreadSafeRegistry< KEY, T, E >::instance(), and NULL.

Referenced by egHLT::OffHelper::setupTriggers().

40 {
41 
42  //will return out of for loop once its found it to save time
43  const edm::pset::Registry* psetRegistry = edm::pset::Registry::instance();
44  if(psetRegistry==NULL) return -1;
45  for(edm::pset::Registry::const_iterator psetIt=psetRegistry->begin();psetIt!=psetRegistry->end();++psetIt){ //loop over every pset for every module ever run
46  const std::map<std::string,edm::Entry>& mapOfPara = psetIt->second.tbl(); //contains the parameter name and value for all the parameters of the pset
47  const std::map<std::string,edm::Entry>::const_iterator itToModLabel = mapOfPara.find("@module_label");
48  if(itToModLabel!=mapOfPara.end()){
49  if(itToModLabel->second.getString()==filterName){ //moduleName is the filter name, we have found filter, we will now return something
50  std::map<std::string,edm::Entry>::const_iterator itToCandCut = mapOfPara.find("ncandcut");
51  if(itToCandCut!=mapOfPara.end() && itToCandCut->second.typeCode()=='I') return itToCandCut->second.getInt32();
52  else{ //checks if MinN exists and is int32, if not return -1
53  itToCandCut = mapOfPara.find("MinN");
54  if(itToCandCut!=mapOfPara.end() && itToCandCut->second.typeCode()=='I') return itToCandCut->second.getInt32();
55  else return -1;
56  }
57  }
58 
59  }
60  }
61  return -1;
62 }
#define NULL
Definition: scimark2.h:8
collection_type::const_iterator const_iterator
static ThreadSafeRegistry * instance()
template<class T >
void egHLT::trigTools::setFiltersObjPasses ( std::vector< T > &  objs,
const std::vector< std::string > &  filters,
const std::vector< std::pair< std::string, std::string > > &  l1PreAndSeedFilters,
const TrigCodes::TrigBitSet &  evtTrigBits,
const trigger::TriggerEvent trigEvt,
const std::string &  hltTag 
)

Definition at line 40 of file EgHLTTrigTools.h.

References reco::deltaR(), alcaDQMUpload::encode(), eta(), trigger::TriggerEvent::filterIndex(), trigger::TriggerEvent::filterKeys(), first, egHLT::TrigCodes::getCode(), trigger::TriggerEvent::getObjects(), phi, and edm::second().

Referenced by egHLT::OffHelper::setTrigInfo().

44  {
45  std::vector<TrigCodes::TrigBitSet> partTrigBits(particles.size());
46  const double maxDeltaR=0.1;
47  for(size_t filterNrInVec=0;filterNrInVec<filters.size();filterNrInVec++){
48  size_t filterNrInEvt = trigEvt->filterIndex(edm::InputTag(filters[filterNrInVec],"",hltTag).encode());
49  const TrigCodes::TrigBitSet filterCode = TrigCodes::getCode(filters[filterNrInVec].c_str());
50 
51  if(filterNrInEvt<trigEvt->sizeFilters()){ //filter found in event, something passes it
52  const trigger::Keys& trigKeys = trigEvt->filterKeys(filterNrInEvt); //trigger::Keys is actually a vector<uint16_t> holding the position of trigger objects in the trigger collection passing the filter
53  const trigger::TriggerObjectCollection & trigObjColl(trigEvt->getObjects());
54  for(size_t partNr=0;partNr<particles.size();partNr++){
55  for(trigger::Keys::const_iterator keyIt=trigKeys.begin();keyIt!=trigKeys.end();++keyIt){
56  float trigObjEta = trigObjColl[*keyIt].eta();
57  float trigObjPhi = trigObjColl[*keyIt].phi();
58  if (reco::deltaR(particles[partNr].eta(),particles[partNr].phi(),trigObjEta,trigObjPhi) < maxDeltaR){
59  partTrigBits[partNr] |= filterCode;
60  }//end dR<maxDeltaR trig obj match test
61  }//end loop over all objects passing filter
62  }//end loop over particles
63  }//end check if filter is present
64  }//end loop over all filters
65 
66  //okay the first element is the key, the second is the filter that exists in trigger event
67  for(size_t l1FilterNrInVec=0;l1FilterNrInVec<l1PreAndSeedFilters.size();l1FilterNrInVec++){
68  const TrigCodes::TrigBitSet filterCode = TrigCodes::getCode(l1PreAndSeedFilters[l1FilterNrInVec].first.c_str());
69  if((filterCode&evtTrigBits)==filterCode){ //check that filter has fired in the event
70 
71  size_t filterNrInEvt = trigEvt->filterIndex(edm::InputTag(l1PreAndSeedFilters[l1FilterNrInVec].second,"",hltTag).encode());
72 
73  if(filterNrInEvt<trigEvt->sizeFilters()){ //filter found in event, something passes it
74  const trigger::Keys& trigKeys = trigEvt->filterKeys(filterNrInEvt); //trigger::Keys is actually a vector<uint16_t> holding the position of trigger objects in the trigger collection passing the filter
75  const trigger::TriggerObjectCollection & trigObjColl(trigEvt->getObjects());
76  for(size_t partNr=0;partNr<particles.size();partNr++){
77  for(trigger::Keys::const_iterator keyIt=trigKeys.begin();keyIt!=trigKeys.end();++keyIt){
78  float trigObjEta = trigObjColl[*keyIt].eta();
79  float trigObjPhi = trigObjColl[*keyIt].phi();
80  if (reco::deltaR(particles[partNr].eta(),particles[partNr].phi(),trigObjEta,trigObjPhi) < maxDeltaR){
81  partTrigBits[partNr] |= filterCode;
82  }//end dR<maxDeltaR trig obj match test
83  }//end loop over all objects passing filter
84  }//end loop over particles
85  }//end check if filter is present
86  }//end check if path has fired in the event
87  }//end loop over all filters
88 
89  for(size_t partNr=0;partNr<particles.size();partNr++) particles[partNr].setTrigBits(partTrigBits[partNr]);
90 
91  }
const Keys & filterKeys(trigger::size_type index) const
Definition: TriggerEvent.h:106
trigger::size_type filterIndex(const edm::InputTag &filterTag) const
find index of filter in data-member vector from filter tag
Definition: TriggerEvent.h:118
T eta() const
std::vector< TPRegexp > filters
Definition: eve_filter.cc:25
double deltaR(double eta1, double phi1, double eta2, double phi2)
Definition: deltaR.h:19
U second(std::pair< T, U > const &p)
const TriggerObjectCollection & getObjects() const
Definition: TriggerEvent.h:100
bool first
Definition: L1TdeRCT.cc:79
std::vector< TriggerObject > TriggerObjectCollection
collection of trigger physics objects (e.g., all isolated muons)
Definition: TriggerObject.h:83
std::vector< size_type > Keys
Definition: DDAxes.h:10
void egHLT::trigTools::translateFiltersToPathNames ( const HLTConfigProvider hltConfig,
const std::vector< std::string > &  filters,
std::vector< std::string > &  paths 
)

Definition at line 139 of file EgHLTTrigTools.cc.

References HLTConfigProvider::moduleLabels(), pathName(), HLTConfigProvider::size(), python.multivaluedict::sort(), and HLTConfigProvider::triggerName().

Referenced by EgHLTOfflineSummaryClient::beginRun(), and egHLT::OffHelper::setupTriggers().

140 {
141 
142  paths.clear();
143  std::vector<std::pair<std::string,std::string> > filtersAndPaths;
144 
145  for(size_t pathNr=0;pathNr<hltConfig.size();pathNr++){
146  const std::string& pathName = hltConfig.triggerName(pathNr);
147  if(pathName.find("HLT_")==0){ //hlt path as they all start with HLT_XXXX
148 
149  std::string lastFilter;
150  const std::vector<std::string>& pathFilters = hltConfig.moduleLabels(pathNr);
151  if(!pathFilters.empty()){
152  if(pathFilters.back()=="hltBoolEnd" && pathFilters.size()>=2){
153  //2nd to last element is the last filter, useally the case as last is hltBool except for ES bits
154  filtersAndPaths.push_back(std::make_pair(pathFilters[pathFilters.size()-2],pathName));
155  }else filtersAndPaths.push_back(std::make_pair(pathFilters.back(),pathName));
156  }
157  }//end hlt path check
158  }//end path loop over
159 
160  std::sort(filtersAndPaths.begin(),filtersAndPaths.end(),StringPairCompare());
161 
162  for(size_t filterNr=0;filterNr<filters.size();filterNr++){
163  typedef std::vector<std::pair<std::string,std::string> >::const_iterator VecIt;
164  std::pair<VecIt,VecIt> searchResult = std::equal_range(filtersAndPaths.begin(),filtersAndPaths.end(),filters[filterNr],StringPairCompare());
165  if(searchResult.first!=searchResult.second) paths.push_back(searchResult.first->second);
166  else paths.push_back(filters[filterNr]);//if cant find the path, just write the filter
167 
168  }
169 
170 }
unsigned int size() const
number of trigger paths in trigger table
const std::string & triggerName(unsigned int triggerIndex) const
std::vector< TPRegexp > filters
Definition: eve_filter.cc:25
const std::string * pathName() const
Definition: HLTadd.h:31
const std::vector< std::string > & moduleLabels(unsigned int trigger) const
label(s) of module(s) on a trigger path