CMS 3D CMS Logo

List of all members | Classes | Public Types | Public Member Functions | Static Public Member Functions | Private Types | Private Member Functions | Static Private Member Functions | Private Attributes
edm::EventSelector Class Reference

#include <EventSelector.h>

Classes

struct  BitInfo
 

Public Types

typedef std::vector< std::string > Strings
 

Public Member Functions

bool acceptEvent (TriggerResults const &)
 
bool acceptEvent (unsigned char const *, int) const
 
 EventSelector (Strings const &pathspecs, Strings const &names)
 
 EventSelector (Strings const &pathspecs)
 
 EventSelector (edm::ParameterSet const &pset, Strings const &pathNames)
 
std::shared_ptr< TriggerResultsmaskTriggerResults (TriggerResults const &inputResults)
 
bool wantAll () const
 

Static Public Member Functions

static void fillDescription (ParameterSetDescription &desc)
 
static std::vector< std::string > getEventSelectionVString (edm::ParameterSet const &pset)
 
static bool selectionIsValid (Strings const &pathspec, Strings const &fullPathList)
 
static evtSel::OverlapResult testSelectionOverlap (Strings const &pathspec1, Strings const &pathspec2, Strings const &fullPathList)
 

Private Types

typedef std::vector< BitInfoBits
 

Private Member Functions

bool acceptAllBits (Bits const &b, HLTGlobalStatus const &tr) const
 
bool acceptOneBit (Bits const &b, HLTGlobalStatus const &tr, hlt::HLTState const &s=hlt::Ready) const
 
bool acceptTriggerPath (HLTPathStatus const &, BitInfo const &) const
 
bool containsExceptions (HLTGlobalStatus const &tr) const
 
bool initAcceptAll ()
 
void initPathNames (Strings const &pathNames)
 
Strings initPathSpecs (Strings const &pathSpecs)
 
bool selectionDecision (HLTGlobalStatus const &tr) const
 

Static Private Member Functions

static std::vector< bool > combine (std::vector< bool > const &a, std::vector< bool > const &b)
 
static std::vector< bool > expandDecisionList (Bits const &b, bool PassOrFail, unsigned int n)
 
static std::string glob2reg (std::string const &s)
 
static bool identical (std::vector< bool > const &a, std::vector< bool > const &b)
 
static bool identical (EventSelector const &a, EventSelector const &b, unsigned int N)
 
static std::vector< Strings::const_iterator > matching_triggers (Strings const &trigs, std::string const &s)
 
static bool overlapping (std::vector< bool > const &a, std::vector< bool > const &b)
 
static bool subset (std::vector< bool > const &a, std::vector< bool > const &b)
 

Private Attributes

Bits absolute_acceptors_
 
bool const accept_all_
 
std::vector< Bitsall_must_fail_
 
std::vector< Bitsall_must_fail_noex_
 
Bits conditional_acceptors_
 
Bits exception_acceptors_
 
int nPathNames_
 
Strings const pathspecs_
 
ParameterSetID psetID_
 
bool const results_from_current_process_
 

Detailed Description

Definition at line 35 of file EventSelector.h.

Member Typedef Documentation

◆ Bits

typedef std::vector<BitInfo> edm::EventSelector::Bits
private

Definition at line 74 of file EventSelector.h.

◆ Strings

typedef std::vector<std::string> edm::EventSelector::Strings

Definition at line 37 of file EventSelector.h.

Constructor & Destructor Documentation

◆ EventSelector() [1/3]

EventSelector::EventSelector ( Strings const &  pathspecs,
Strings const &  names 
)

Definition at line 48 of file EventSelector.cc.

References initPathNames().

49  : pathspecs_(initPathSpecs(pathspecs)),
57  psetID_(),
58  nPathNames_(0) {
59  initPathNames(pathNames);
60  }
std::vector< Bits > all_must_fail_noex_
Definition: EventSelector.h:80
void initPathNames(Strings const &pathNames)
bool const accept_all_
Definition: EventSelector.h:72
Strings initPathSpecs(Strings const &pathSpecs)
std::vector< Bits > all_must_fail_
Definition: EventSelector.h:79
Strings const pathspecs_
Definition: EventSelector.h:70
ParameterSetID psetID_
Definition: EventSelector.h:82
bool const results_from_current_process_
Definition: EventSelector.h:71

◆ EventSelector() [2/3]

EventSelector::EventSelector ( Strings const &  pathspecs)
explicit

Definition at line 62 of file EventSelector.cc.

63  : pathspecs_(initPathSpecs(pathspecs)),
71  psetID_(),
72  nPathNames_(0) {}
std::vector< Bits > all_must_fail_noex_
Definition: EventSelector.h:80
bool const accept_all_
Definition: EventSelector.h:72
Strings initPathSpecs(Strings const &pathSpecs)
std::vector< Bits > all_must_fail_
Definition: EventSelector.h:79
Strings const pathspecs_
Definition: EventSelector.h:70
ParameterSetID psetID_
Definition: EventSelector.h:82
bool const results_from_current_process_
Definition: EventSelector.h:71

◆ EventSelector() [3/3]

EventSelector::EventSelector ( edm::ParameterSet const &  pset,
Strings const &  pathNames 
)

Definition at line 74 of file EventSelector.cc.

References initPathNames().

75  : pathspecs_(config.empty() ? Strings() : initPathSpecs(config.getParameter<Strings>("SelectEvents"))),
83  psetID_(),
84  nPathNames_(0) {
85  initPathNames(pathNames);
86  }
std::vector< Bits > all_must_fail_noex_
Definition: EventSelector.h:80
void initPathNames(Strings const &pathNames)
std::vector< std::string > Strings
Definition: EventSelector.h:37
bool const accept_all_
Definition: EventSelector.h:72
std::vector< std::string > Strings
Definition: MsgTools.h:18
Definition: config.py:1
Strings initPathSpecs(Strings const &pathSpecs)
std::vector< Bits > all_must_fail_
Definition: EventSelector.h:79
Strings const pathspecs_
Definition: EventSelector.h:70
ParameterSetID psetID_
Definition: EventSelector.h:82
bool const results_from_current_process_
Definition: EventSelector.h:71

Member Function Documentation

◆ acceptAllBits()

bool EventSelector::acceptAllBits ( Bits const &  b,
HLTGlobalStatus const &  tr 
) const
private

Definition at line 381 of file EventSelector.cc.

References b, edm::hlt::Fail, edm::hlt::Pass, and edm::HLTGlobalStatus::state().

Referenced by selectionDecision().

381  {
382  for (auto const& bit : b) {
383  hlt::HLTState bstate = bit.accept_state_ ? hlt::Pass : hlt::Fail;
384  if (tr[bit.pos_].state() != bstate)
385  return false;
386  }
387  return true;
388  } // acceptAllBits
HLTState
status of a trigger path
Definition: HLTenums.h:16
reject
Definition: HLTenums.h:19
accept
Definition: HLTenums.h:18
double b
Definition: hdecay.h:118

◆ acceptEvent() [1/2]

bool EventSelector::acceptEvent ( TriggerResults const &  tr)

Definition at line 247 of file EventSelector.cc.

References accept_all_, Exception, initPathNames(), edm::Hash< I >::isValid(), edm::TriggerResults::parameterSetID(), psetID_, edm::Hash< I >::reset(), results_from_current_process_, selectionDecision(), and edm::errors::Unknown.

Referenced by edm::detail::NamedEventSelector::match(), and selectionIsValid().

247  {
248  if (accept_all_)
249  return true;
250 
252  // The path names for prior processes may be different in different runs.
253  // Check for this, and modify the selector accordingly if necessary.
254  if (!psetID_.isValid() || psetID_ != tr.parameterSetID()) {
255  Strings pathNames;
256  bool fromPSetRegistry = false;
258  if (tns->getTrigPaths(tr, pathNames, fromPSetRegistry)) {
259  initPathNames(pathNames);
260  if (fromPSetRegistry) {
261  psetID_ = tr.parameterSetID();
262  } else {
263  // This can only happen for very old data, when the path names were stored
264  // in TriggerResults itself, rather than in the parameter set registry.
265  psetID_.reset();
266  }
267  } else {
268  // This should never happen
270  << "EventSelector::acceptEvent cannot find the trigger names for\n"
271  "a process for which the configuration has requested that the\n"
272  "OutputModule use TriggerResults to select events from. This should\n"
273  "be impossible, please send information to reproduce this problem to\n"
274  "the edm developers.\n";
275  }
276  }
277  }
278 
279  // Now make the decision, based on the supplied TriggerResults tr,
280  // which of course can be treated as an HLTGlobalStatus by inheritance
281 
282  return selectionDecision(tr);
283 
284  } // acceptEvent(TriggerResults const& tr)
void initPathNames(Strings const &pathNames)
bool const accept_all_
Definition: EventSelector.h:72
std::vector< std::string > Strings
Definition: MsgTools.h:18
bool isValid() const
Definition: Hash.h:141
bool selectionDecision(HLTGlobalStatus const &tr) const
ParameterSetID psetID_
Definition: EventSelector.h:82
bool const results_from_current_process_
Definition: EventSelector.h:71
void reset()
Definition: Hash.h:136

◆ acceptEvent() [2/2]

bool EventSelector::acceptEvent ( unsigned char const *  array_of_trigger_results,
int  number_of_trigger_paths 
) const

Definition at line 286 of file EventSelector.cc.

References accept_all_, edm::errors::Configuration, Exception, results_from_current_process_, and selectionDecision().

286  {
287  // This should never occur unless someone uses this function in
288  // an incorrect way ...
290  throw edm::Exception(errors::Configuration) << "\nEventSelector.cc::acceptEvent, you are attempting to\n"
291  << "use a bit array for trigger results instead of the\n"
292  << "TriggerResults object for a previous process. This\n"
293  << "will not work and ought to be impossible\n";
294  }
295 
296  if (accept_all_)
297  return true;
298 
299  // Form HLTGlobalStatus object to represent the array_of_trigger_results
300  HLTGlobalStatus tr(number_of_trigger_paths);
301  int byteIndex = 0;
302  int subIndex = 0;
303  for (int pathIndex = 0; pathIndex < number_of_trigger_paths; ++pathIndex) {
304  int state = array_of_trigger_results[byteIndex] >> (subIndex * 2);
305  state &= 0x3;
306  HLTPathStatus pathStatus(static_cast<hlt::HLTState>(state));
307  tr[pathIndex] = pathStatus;
308  ++subIndex;
309  if (subIndex == 4) {
310  ++byteIndex;
311  subIndex = 0;
312  }
313  }
314 
315  // Now make the decision, based on the HLTGlobalStatus tr,
316  // which we have created from the supplied array of results
317 
318  return selectionDecision(tr);
319 
320  } // acceptEvent(array_of_trigger_results, number_of_trigger_paths)
bool const accept_all_
Definition: EventSelector.h:72
bool selectionDecision(HLTGlobalStatus const &tr) const
bool const results_from_current_process_
Definition: EventSelector.h:71

◆ acceptOneBit()

bool EventSelector::acceptOneBit ( Bits const &  b,
HLTGlobalStatus const &  tr,
hlt::HLTState const &  s = hlt::Ready 
) const
private

Definition at line 369 of file EventSelector.cc.

References b, edm::hlt::Exception, edm::hlt::Fail, edm::hlt::Pass, alignCSCRings::s, and edm::HLTGlobalStatus::state().

Referenced by selectionDecision().

369  {
370  bool lookForException = (s == hlt::Exception);
371  for (auto const& bit : b) {
372  hlt::HLTState bstate = lookForException ? hlt::Exception : bit.accept_state_ ? hlt::Pass : hlt::Fail;
373  if (tr[bit.pos_].state() == bstate)
374  return true;
375  }
376  return false;
377  } // acceptOneBit
HLTState
status of a trigger path
Definition: HLTenums.h:16
reject
Definition: HLTenums.h:19
accept
Definition: HLTenums.h:18
double b
Definition: hdecay.h:118

◆ acceptTriggerPath()

bool EventSelector::acceptTriggerPath ( HLTPathStatus const &  pathStatus,
BitInfo const &  pathInfo 
) const
private

Definition at line 360 of file EventSelector.cc.

References edm::EventSelector::BitInfo::accept_state_, edm::hlt::Exception, edm::hlt::Fail, edm::hlt::Pass, and edm::HLTPathStatus::state().

360  {
361  return (((pathStatus.state() == hlt::Pass) && (pathInfo.accept_state_)) ||
362  ((pathStatus.state() == hlt::Fail) && !(pathInfo.accept_state_)) ||
363  ((pathStatus.state() == hlt::Exception)));
364  }
reject
Definition: HLTenums.h:19
accept
Definition: HLTenums.h:18

◆ combine()

std::vector< bool > EventSelector::combine ( std::vector< bool > const &  a,
std::vector< bool > const &  b 
)
staticprivate

Definition at line 984 of file EventSelector.cc.

References a, cms::cuda::assert(), b, mps_fire::i, and x.

Referenced by testSelectionOverlap().

984  {
985  assert(a.size() == b.size());
986  std::vector<bool> x(a.size());
987  for (unsigned int i = 0; i != a.size(); ++i) {
988  x[i] = a[i] || b[i];
989  } // a really sharp compiler will optimize the hell out of this,
990  // exploiting word-size OR operations.
991  return x;
992  } // combine
assert(be >=bs)
double b
Definition: hdecay.h:118
double a
Definition: hdecay.h:119
float x

◆ containsExceptions()

bool EventSelector::containsExceptions ( HLTGlobalStatus const &  tr) const
private

Definition at line 835 of file EventSelector.cc.

References MillePedeFileConverter_cfg::e, edm::hlt::Exception, mps_fire::i, and edm::HLTGlobalStatus::size().

Referenced by selectionDecision().

835  {
836  unsigned int e = tr.size();
837  for (unsigned int i = 0; i < e; ++i) {
838  if (tr[i].state() == hlt::Exception)
839  return true;
840  }
841  return false;
842  }

◆ expandDecisionList()

std::vector< bool > EventSelector::expandDecisionList ( Bits const &  b,
bool  PassOrFail,
unsigned int  n 
)
staticprivate

Definition at line 921 of file EventSelector.cc.

References b, mps_fire::i, dqmiodumpmetadata::n, and x.

Referenced by identical(), maskTriggerResults(), and testSelectionOverlap().

921  {
922  std::vector<bool> x(n, false);
923  for (unsigned int i = 0; i != b.size(); ++i) {
924  if (b[i].accept_state_ == PassOrFail)
925  x[b[i].pos_] = true;
926  }
927  return x;
928  } // expandDecisionList
double b
Definition: hdecay.h:118
float x

◆ fillDescription()

void EventSelector::fillDescription ( ParameterSetDescription desc)
static

Definition at line 994 of file EventSelector.cc.

References edm::ParameterSetDescription::addOptional(), and submitPVResolutionJobs::desc.

Referenced by edm::core::OutputModuleCore::fillDescription().

994  {
995  ParameterSetDescription selector;
996  selector.addOptional<std::vector<std::string> >("SelectEvents");
997  desc.addUntracked<ParameterSetDescription>("SelectEvents", selector);
998  }

◆ getEventSelectionVString()

std::vector< std::string > EventSelector::getEventSelectionVString ( edm::ParameterSet const &  pset)
static

Returns the list of strings that correspond to the trigger selection request in the specified parameter set (the list of strings contained in the "SelectEvents" parameter).

Parameters
psetThe ParameterSet that contains the trigger selection.
Returns
the trigger selection list (vector of string).

Definition at line 814 of file EventSelector.cc.

References edm::ParameterSet::empty(), edm::ParameterSet::getParameter(), muonDTDigis_cfi::pset, and corrVsCorr::selection.

Referenced by dqmservices::TriggerSelector::getEventSelectionVString(), and edm::StreamerOutputModuleCommon::StreamerOutputModuleCommon().

814  {
815  // default the selection to everything (wildcard)
817  selection.push_back("*");
818  selection.push_back("!*");
819  selection.push_back("exception@*");
820 
821  // the SelectEvents parameter is a ParameterSet within
822  // a ParameterSet, so we have to pull it out twice
823  ParameterSet selectEventsParamSet = pset.getUntrackedParameter("SelectEvents", ParameterSet());
824  if (!selectEventsParamSet.empty()) {
825  Strings path_specs = selectEventsParamSet.getParameter<Strings>("SelectEvents");
826  if (!path_specs.empty()) {
827  selection = path_specs;
828  }
829  }
830 
831  // return the result
832  return selection;
833  }
std::vector< std::string > Strings
Definition: MsgTools.h:18
selection
main part
Definition: corrVsCorr.py:100

◆ glob2reg()

static std::string edm::EventSelector::glob2reg ( std::string const &  s)
staticprivate

◆ identical() [1/2]

bool EventSelector::identical ( std::vector< bool > const &  a,
std::vector< bool > const &  b 
)
staticprivate

Definition at line 846 of file EventSelector.cc.

References a, b, mps_fire::i, and dqmiodumpmetadata::n.

Referenced by identical(), and testSelectionOverlap().

846  {
847  unsigned int n = a.size();
848  if (n != b.size())
849  return false;
850  for (unsigned int i = 0; i != n; ++i) {
851  if (a[i] != b[i])
852  return false;
853  }
854  return true;
855  }
double b
Definition: hdecay.h:118
double a
Definition: hdecay.h:119

◆ identical() [2/2]

bool EventSelector::identical ( EventSelector const &  a,
EventSelector const &  b,
unsigned int  N 
)
staticprivate

Definition at line 857 of file EventSelector.cc.

References a, b, expandDecisionList(), identical(), dqmdumpme::k, visualization-live-secondInstance_cfg::m, edm::match(), and N.

857  {
858  // create the expanded masks for the various decision lists in a and b
859  if (!identical(expandDecisionList(a.absolute_acceptors_, true, N),
860  expandDecisionList(b.absolute_acceptors_, true, N)))
861  return false;
862  if (!identical(expandDecisionList(a.conditional_acceptors_, true, N),
863  expandDecisionList(b.conditional_acceptors_, true, N)))
864  return false;
865  if (!identical(expandDecisionList(a.absolute_acceptors_, false, N),
866  expandDecisionList(b.absolute_acceptors_, false, N)))
867  return false;
868  if (!identical(expandDecisionList(a.conditional_acceptors_, false, N),
869  expandDecisionList(b.conditional_acceptors_, false, N)))
870  return false;
871  if (!identical(expandDecisionList(a.exception_acceptors_, true, N),
872  expandDecisionList(b.exception_acceptors_, true, N)))
873  return false;
874  if (a.all_must_fail_.size() != b.all_must_fail_.size())
875  return false;
876 
877  std::vector<std::vector<bool> > aMustFail;
878  for (unsigned int m = 0; m != a.all_must_fail_.size(); ++m) {
879  aMustFail.push_back(expandDecisionList(a.all_must_fail_[m], false, N));
880  }
881  std::vector<std::vector<bool> > aMustFailNoex;
882  for (unsigned int m = 0; m != a.all_must_fail_noex_.size(); ++m) {
883  aMustFailNoex.push_back(expandDecisionList(a.all_must_fail_noex_[m], false, N));
884  }
885  std::vector<std::vector<bool> > bMustFail;
886  for (unsigned int m = 0; m != b.all_must_fail_.size(); ++m) {
887  bMustFail.push_back(expandDecisionList(b.all_must_fail_[m], false, N));
888  }
889  std::vector<std::vector<bool> > bMustFailNoex;
890  for (unsigned int m = 0; m != b.all_must_fail_noex_.size(); ++m) {
891  bMustFailNoex.push_back(expandDecisionList(b.all_must_fail_noex_[m], false, N));
892  }
893 
894  for (unsigned int m = 0; m != aMustFail.size(); ++m) {
895  bool match = false;
896  for (unsigned int k = 0; k != bMustFail.size(); ++k) {
897  if (identical(aMustFail[m], bMustFail[k])) {
898  match = true;
899  break;
900  }
901  }
902  if (!match)
903  return false;
904  }
905  for (unsigned int m = 0; m != aMustFailNoex.size(); ++m) {
906  bool match = false;
907  for (unsigned int k = 0; k != bMustFailNoex.size(); ++k) {
908  if (identical(aMustFailNoex[m], bMustFailNoex[k])) {
909  match = true;
910  break;
911  }
912  }
913  if (!match)
914  return false;
915  }
916 
917  return true;
918 
919  } // identical (EventSelector, EventSelector, N);
#define N
Definition: blowfish.cc:9
double b
Definition: hdecay.h:118
static bool identical(std::vector< bool > const &a, std::vector< bool > const &b)
double a
Definition: hdecay.h:119
static std::vector< bool > expandDecisionList(Bits const &b, bool PassOrFail, unsigned int n)
std::string match(BranchDescription const &a, BranchDescription const &b, std::string const &fileName)

◆ initAcceptAll()

bool EventSelector::initAcceptAll ( )
private

Definition at line 100 of file EventSelector.cc.

References pathspecs_.

100  {
101  if (pathspecs_.empty()) {
102  return true;
103  }
104  // The following are for the purpose of establishing accept_all_ by
105  // virtue of an inclusive set of paths:
106  bool unrestricted_star = false;
107  bool negated_star = false;
108  bool exception_star = false;
109 
110  for (auto const& pathspecifier : pathspecs_) {
111  if (pathspecifier == "*")
112  unrestricted_star = true;
113  if (pathspecifier == "!*")
114  negated_star = true;
115  if (pathspecifier == "exception@*")
116  exception_star = true;
117  }
118  return (unrestricted_star && negated_star && exception_star);
119  }
Strings const pathspecs_
Definition: EventSelector.h:70

◆ initPathNames()

void EventSelector::initPathNames ( Strings const &  pathNames)
private

Definition at line 121 of file EventSelector.cc.

References absolute_acceptors_, accept_all_, all_must_fail_, all_must_fail_noex_, conditional_acceptors_, edm::errors::Configuration, HLT_2022v11_cff::distance, Exception, exception_acceptors_, edm::is_glob(), oniaPATMuonsWithTrigger_cff::matches, nPathNames_, pathspecs_, edm::regexMatch(), AlCaHLTBitMon_QueryRunRegistry::string, and submitPVValidationJobs::t.

Referenced by acceptEvent(), and EventSelector().

121  {
122  if (accept_all_) {
123  return;
124  }
125  // std::cerr << "### init entered\n";
127  all_must_fail_noex_.clear();
128  nPathNames_ = pathNames.size();
129 
130  for (auto const& pathspecifier : pathspecs_) {
131  std::string basePathSpec(pathspecifier);
132  bool noex_demanded = false;
133  std::string::size_type and_noexception = pathspecifier.find("&noexception");
134  if (and_noexception != std::string::npos) {
135  basePathSpec = pathspecifier.substr(0, and_noexception);
136  noex_demanded = true;
137  }
138  std::string::size_type and_noex = pathspecifier.find("&noex");
139  if (and_noex != std::string::npos) {
140  basePathSpec = pathspecifier.substr(0, and_noexception);
141  noex_demanded = true;
142  }
143  and_noexception = basePathSpec.find("&noexception");
144  and_noex = basePathSpec.find("&noex");
145  if (and_noexception != std::string::npos || and_noex != std::string::npos)
146  throw edm::Exception(errors::Configuration) << "EventSelector::init, An OutputModule is using SelectEvents\n"
147  "to request a trigger name, but specifying &noexceptions twice\n"
148  << "The improper trigger name is: " << pathspecifier << "\n";
149 
150  std::string realname(basePathSpec);
151  bool negative_criterion = false;
152  if (basePathSpec[0] == '!') {
153  negative_criterion = true;
154  realname = basePathSpec.substr(1, std::string::npos);
155  }
156  bool exception_spec = false;
157  if (realname.find("exception@") == 0) {
158  exception_spec = true;
159  realname = realname.substr(10, std::string::npos);
160  // strip off 10 chars, which is length of "exception@"
161  }
162  if (negative_criterion && exception_spec)
163  throw edm::Exception(errors::Configuration) << "EventSelector::init, An OutputModule is using SelectEvents\n"
164  "to request a trigger name starting with !exception@.\n"
165  "This is not supported.\n"
166  << "The improper trigger name is: " << pathspecifier << "\n";
167  if (noex_demanded && exception_spec)
168  throw edm::Exception(errors::Configuration) << "EventSelector::init, An OutputModule is using SelectEvents\n"
169  "to request a trigger name starting with exception@ "
170  "and also demanding no &exceptions.\n"
171  << "The improper trigger name is: " << pathspecifier << "\n";
172 
173  // instead of "see if the name can be found in the full list of paths"
174  // we want to find all paths that match this name.
175  std::vector<Strings::const_iterator> matches = regexMatch(pathNames, realname);
176 
177  if (matches.empty() && !is_glob(realname)) {
178  throw edm::Exception(errors::Configuration) << "EventSelector::init, An OutputModule is using SelectEvents\n"
179  "to request a trigger name that does not exist\n"
180  << "The unknown trigger name is: " << realname << "\n";
181  }
182  if (matches.empty() && is_glob(realname)) {
183  LogWarning("Configuration") << "EventSelector::init, An OutputModule is using SelectEvents\n"
184  "to request a wildcarded trigger name that does not match any trigger \n"
185  << "The wildcarded trigger name is: " << realname << "\n";
186  }
187 
188  if (!negative_criterion && !noex_demanded && !exception_spec) {
189  for (unsigned int t = 0; t != matches.size(); ++t) {
190  BitInfo bi(distance(pathNames.begin(), matches[t]), true);
191  absolute_acceptors_.push_back(bi);
192  }
193  } else if (!negative_criterion && noex_demanded) {
194  for (unsigned int t = 0; t != matches.size(); ++t) {
195  BitInfo bi(distance(pathNames.begin(), matches[t]), true);
196  conditional_acceptors_.push_back(bi);
197  }
198  } else if (exception_spec) {
199  for (unsigned int t = 0; t != matches.size(); ++t) {
200  BitInfo bi(distance(pathNames.begin(), matches[t]), true);
201  exception_acceptors_.push_back(bi);
202  }
203  } else if (negative_criterion && !noex_demanded) {
204  if (matches.empty()) {
206  << "EventSelector::init, An OutputModule is using SelectEvents\n"
207  "to request all fails on a set of trigger names that do not exist\n"
208  << "The problematic name is: " << pathspecifier << "\n";
209 
210  } else if (matches.size() == 1) {
211  BitInfo bi(distance(pathNames.begin(), matches[0]), false);
212  absolute_acceptors_.push_back(bi);
213  } else {
214  Bits mustfail;
215  for (unsigned int t = 0; t != matches.size(); ++t) {
216  BitInfo bi(distance(pathNames.begin(), matches[t]), false);
217  // We set this to false because that will demand bits are Fail.
218  mustfail.push_back(bi);
219  }
220  all_must_fail_.push_back(mustfail);
221  }
222  } else if (negative_criterion && noex_demanded) {
223  if (matches.empty()) {
225  << "EventSelector::init, An OutputModule is using SelectEvents\n"
226  "to request all fails on a set of trigger names that do not exist\n"
227  << "The problematic name is: " << pathspecifier << "\n";
228 
229  } else if (matches.size() == 1) {
230  BitInfo bi(distance(pathNames.begin(), matches[0]), false);
231  conditional_acceptors_.push_back(bi);
232  } else {
233  Bits mustfail;
234  for (unsigned int t = 0; t != matches.size(); ++t) {
235  BitInfo bi(distance(pathNames.begin(), matches[t]), false);
236  mustfail.push_back(bi);
237  }
238  all_must_fail_noex_.push_back(mustfail);
239  }
240  }
241  } // end of the for loop on pathspecs
242 
243  // std::cerr << "### init exited\n";
244 
245  } // EventSelector::init
std::vector< Bits > all_must_fail_noex_
Definition: EventSelector.h:80
bool const accept_all_
Definition: EventSelector.h:72
bool is_glob(std::string const &pattern)
Definition: RegexMatch.cc:17
std::vector< BitInfo > Bits
Definition: EventSelector.h:74
uint16_t size_type
std::vector< Bits > all_must_fail_
Definition: EventSelector.h:79
Strings const pathspecs_
Definition: EventSelector.h:70
std::vector< std::vector< std::string >::const_iterator > regexMatch(std::vector< std::string > const &strings, std::regex const &regexp)
Definition: RegexMatch.cc:26
Log< level::Warning, false > LogWarning

◆ initPathSpecs()

Strings EventSelector::initPathSpecs ( Strings const &  pathSpecs)
private

Definition at line 88 of file EventSelector.cc.

References c.

88  {
89  Strings trimmedPathSpecs(pathSpecs);
90  for (auto& pathspecifier : trimmedPathSpecs) {
91  pathspecifier.erase(std::remove_if(pathspecifier.begin(),
92  pathspecifier.end(),
93  [](char c) { return std::isspace(static_cast<unsigned char>(c)); }),
94  pathspecifier.end()); // whitespace eliminated
95  }
96  // Return value optimization should avoid another copy;
97  return trimmedPathSpecs;
98  }
std::vector< std::string > Strings
Definition: MsgTools.h:18

◆ maskTriggerResults()

std::shared_ptr< TriggerResults > EventSelector::maskTriggerResults ( TriggerResults const &  inputResults)

Applies a trigger selection mask to a specified trigger result object. Within the trigger result object, each path status is left unchanged if it satisfies the trigger selection (path specs) or cleared if it does not satisfy the trigger selection. In this way, the resulting trigger result object contains only path status values that "pass" the selection criteria.

Parameters
inputResultsThe raw trigger results object that will be masked.
Returns
a copy of the input trigger results object with only the path status results that match the trigger selection.
Exceptions
edm::Exceptionif the number of paths in the TriggerResults object does not match the specified full trigger list, or if the trigger selection is invalid in the context of the full trigger list.

Definition at line 678 of file EventSelector.cc.

References absolute_acceptors_, all_must_fail_, all_must_fail_noex_, conditional_acceptors_, edm::errors::EventCorruption, edm::hlt::Exception, Exception, exception_acceptors_, expandDecisionList(), f, edm::hlt::Fail, visualization-live-secondInstance_cfg::m, N, nPathNames_, edm::TriggerResults::parameterSetID(), edm::hlt::Pass, alignCSCRings::s, edm::HLTGlobalStatus::size(), and edm::HLTGlobalStatus::state().

678  {
679  // fetch and validate the total number of paths
680  unsigned int fullPathCount = nPathNames_;
681  unsigned int N = fullPathCount;
682  if (fullPathCount != inputResults.size()) {
684  << "EventSelector::maskTriggerResults, the TriggerResults\n"
685  << "size (" << inputResults.size() << ") does not match the number of paths in the\n"
686  << "full trigger list (" << fullPathCount << ").\n";
687  }
688 
689  // create a suitable global status object to work with, all in Ready state
690  HLTGlobalStatus mask(fullPathCount);
691 
692  // Deal with must_fail acceptors that would cause selection
693  for (unsigned int m = 0; m < this->all_must_fail_.size(); ++m) {
694  std::vector<bool> f = expandDecisionList(this->all_must_fail_[m], false, N);
695  bool all_fail = true;
696  for (unsigned int ipath = 0; ipath < N; ++ipath) {
697  if ((f[ipath]) && (inputResults[ipath].state() != hlt::Fail)) {
698  all_fail = false;
699  break;
700  }
701  }
702  if (all_fail) {
703  for (unsigned int ipath = 0; ipath < N; ++ipath) {
704  if (f[ipath]) {
705  mask[ipath] = hlt::Fail;
706  }
707  }
708  }
709  }
710  for (unsigned int m = 0; m < this->all_must_fail_noex_.size(); ++m) {
711  std::vector<bool> f = expandDecisionList(this->all_must_fail_noex_[m], false, N);
712  bool all_fail = true;
713  for (unsigned int ipath = 0; ipath < N; ++ipath) {
714  if ((f[ipath]) && (inputResults[ipath].state() != hlt::Fail)) {
715  all_fail = false;
716  break;
717  }
718  }
719  if (all_fail) {
720  for (unsigned int ipath = 0; ipath < N; ++ipath) {
721  if (f[ipath]) {
722  mask[ipath] = hlt::Fail;
723  }
724  }
725  }
726  } // factoring opportunity - work done for fail_noex_ is same as for fail_
727 
728  // Deal with normal acceptors that would cause selection
729  std::vector<bool> aPassAbs = expandDecisionList(this->absolute_acceptors_, true, N);
730  std::vector<bool> aPassCon = expandDecisionList(this->conditional_acceptors_, true, N);
731  std::vector<bool> aFailAbs = expandDecisionList(this->absolute_acceptors_, false, N);
732  std::vector<bool> aFailCon = expandDecisionList(this->conditional_acceptors_, false, N);
733  std::vector<bool> aExc = expandDecisionList(this->exception_acceptors_, true, N);
734  for (unsigned int ipath = 0; ipath < N; ++ipath) {
735  hlt::HLTState s = inputResults[ipath].state();
736  if (((aPassAbs[ipath]) && (s == hlt::Pass)) || ((aPassCon[ipath]) && (s == hlt::Pass)) ||
737  ((aFailAbs[ipath]) && (s == hlt::Fail)) || ((aFailCon[ipath]) && (s == hlt::Fail)) ||
738  ((aExc[ipath]) && (s == hlt::Exception))) {
739  mask[ipath] = s;
740  }
741  }
742 
743  // Based on the global status for the mask, create and return a
744  // TriggerResults
745  auto maskedResults = std::make_shared<TriggerResults>(mask, inputResults.parameterSetID());
746  return maskedResults;
747  } // maskTriggerResults
std::vector< Bits > all_must_fail_noex_
Definition: EventSelector.h:80
HLTState
status of a trigger path
Definition: HLTenums.h:16
reject
Definition: HLTenums.h:19
std::vector< Bits > all_must_fail_
Definition: EventSelector.h:79
accept
Definition: HLTenums.h:18
double f[11][100]
#define N
Definition: blowfish.cc:9
static std::vector< bool > expandDecisionList(Bits const &b, bool PassOrFail, unsigned int n)

◆ matching_triggers()

static std::vector<Strings::const_iterator> edm::EventSelector::matching_triggers ( Strings const &  trigs,
std::string const &  s 
)
staticprivate

◆ overlapping()

bool EventSelector::overlapping ( std::vector< bool > const &  a,
std::vector< bool > const &  b 
)
staticprivate

Definition at line 931 of file EventSelector.cc.

References a, b, and mps_fire::i.

Referenced by testSelectionOverlap().

931  {
932  if (a.size() != b.size())
933  return false;
934  for (unsigned int i = 0; i != a.size(); ++i) {
935  if (a[i] && b[i])
936  return true;
937  }
938  return false;
939  } // overlapping
double b
Definition: hdecay.h:118
double a
Definition: hdecay.h:119

◆ selectionDecision()

bool EventSelector::selectionDecision ( HLTGlobalStatus const &  tr) const
private

Definition at line 322 of file EventSelector.cc.

References absolute_acceptors_, accept_all_, acceptAllBits(), acceptOneBit(), all_must_fail_, all_must_fail_noex_, conditional_acceptors_, containsExceptions(), edm::hlt::Exception, and exception_acceptors_.

Referenced by acceptEvent().

322  {
323  if (accept_all_)
324  return true;
325 
326  bool exceptionPresent = false;
327  bool exceptionsLookedFor = false;
328 
330  return true;
332  exceptionPresent = containsExceptions(tr);
333  if (!exceptionPresent)
334  return true;
335  exceptionsLookedFor = true;
336  }
338  return true;
339 
340  for (auto const& bit : all_must_fail_) {
341  if (acceptAllBits(bit, tr))
342  return true;
343  }
344  for (auto const& bitn : all_must_fail_noex_) {
345  if (acceptAllBits(bitn, tr)) {
346  if (!exceptionsLookedFor)
347  exceptionPresent = containsExceptions(tr);
348  return (!exceptionPresent);
349  }
350  }
351 
352  // If we have not accepted based on any of the acceptors, nor on any one of
353  // the all_must_fail_ collections, then we reject this event.
354 
355  return false;
356 
357  } // selectionDecision()
std::vector< Bits > all_must_fail_noex_
Definition: EventSelector.h:80
bool acceptOneBit(Bits const &b, HLTGlobalStatus const &tr, hlt::HLTState const &s=hlt::Ready) const
bool const accept_all_
Definition: EventSelector.h:72
bool containsExceptions(HLTGlobalStatus const &tr) const
bool acceptAllBits(Bits const &b, HLTGlobalStatus const &tr) const
std::vector< Bits > all_must_fail_
Definition: EventSelector.h:79

◆ selectionIsValid()

bool EventSelector::selectionIsValid ( Strings const &  pathspecs,
Strings const &  fullPathList 
)
static

Tests if the specified trigger selection list (pathspecs) is valid in the context of the specified full trigger list. Each element in the selection list is tested to see if it possible for some combination of trigger results to satisfy the selection. If all selection elements can be satisfied one way or another, then this method returns true. If one or more selection elements could never be satisfied given the input full trigger list, then this method returns false. At some level, this method tests whether the selection list is a "subset" of the full path list.

Parameters
pathspecsThe trigger selection list (vector of string).
fullPathListThe full list of path names (vector of string).
Returns
true if the selection list is valid, false otherwise.

Definition at line 405 of file EventSelector.cc.

References acceptEvent(), edm::hlt::Exception, edm::hlt::Fail, heavyIonCSV_trainingSettings::idx, edm::hlt::Pass, edm::HLTGlobalStatus::reset(), and wantAll().

Referenced by testSelectionOverlap().

405  {
406  // an empty selection list is not valid
407  // (we default an empty "SelectEvents" parameter to {"*","!*"} in
408  // the getEventSelectionVString method below to help avoid this)
409  if (pathspecs.empty()) {
410  return false;
411  }
412 
413  // loop over each element in the selection list
414  for (unsigned int idx = 0; idx < pathspecs.size(); idx++) {
415  Strings workingList;
416  workingList.push_back(pathspecs[idx]);
417 
418  // catch exceptions from the EventSelector constructor
419  // (and anywhere else) and mark those as failures.
420  // The EventSelector constructor seems to do the work of
421  // checking if the selection is outside the full trigger list.
422  try {
423  // create an EventSelector instance for this selection
424  EventSelector evtSelector(workingList, fullPathList);
425 
426  // create the TriggerResults instance that we'll use for testing
427  unsigned int fullPathCount = fullPathList.size();
428  HLTGlobalStatus hltGS(fullPathCount);
429  TriggerResults sampleResults(hltGS, fullPathList);
430 
431  // loop over each path
432  bool oneResultMatched = false;
433  for (unsigned int iPath = 0; iPath < fullPathCount; iPath++) {
434  // loop over the possible values for the path status
435  for (int iState = static_cast<int>(hlt::Pass); iState <= static_cast<int>(hlt::Exception); iState++) {
436  sampleResults[iPath] = HLTPathStatus(static_cast<hlt::HLTState>(iState), 0);
437  if (evtSelector.wantAll() || evtSelector.acceptEvent(sampleResults)) {
438  oneResultMatched = true;
439  break;
440  }
441 
442  sampleResults.reset(iPath);
443  }
444 
445  if (oneResultMatched)
446  break;
447  }
448 
449  // Finally, check in case the selection element was a wildcarded
450  // negative such as "!*":
451 
452  if (!oneResultMatched) {
453  for (unsigned int iPath = 0; iPath < fullPathCount; iPath++) {
454  sampleResults[iPath] = HLTPathStatus(hlt::Fail, 0);
455  }
456  if (evtSelector.acceptEvent(sampleResults)) {
457  oneResultMatched = true;
458  }
459  }
460 
461  // if none of the possible trigger results matched the
462  // selection element, then we declare the whole selection
463  // list invalid
464  if (!oneResultMatched) {
465  return false;
466  }
467  } catch (edm::Exception const&) {
468  return false;
469  }
470  }
471 
472  // if we made it to this point, then it must have been possible
473  // to satisfy every selection element one way or another
474  return true;
475  }
std::vector< std::string > Strings
Definition: MsgTools.h:18
reject
Definition: HLTenums.h:19
accept
Definition: HLTenums.h:18
A selector of events.
Definition: EventSelector.h:16

◆ subset()

bool EventSelector::subset ( std::vector< bool > const &  a,
std::vector< bool > const &  b 
)
staticprivate

Definition at line 943 of file EventSelector.cc.

References a, b, and mps_fire::i.

Referenced by testSelectionOverlap().

943  {
944  if (a.size() != b.size())
945  return false;
946  // First test whether a is a non-empty subset of b
947  bool aPresent = false;
948  bool aSubset = true;
949  for (unsigned int i = 0; i != a.size(); ++i) {
950  if (a[i]) {
951  aPresent = true;
952  if (!b[i]) {
953  aSubset = false;
954  break;
955  }
956  }
957  }
958  if (!aPresent)
959  return false;
960  if (aSubset)
961  return true;
962 
963  // Now test whether b is a non-empty subset of a
964  bool bPresent = false;
965  bool bSubset = true;
966  for (unsigned int i = 0; i != b.size(); ++i) {
967  if (b[i]) {
968  bPresent = true;
969  if (!a[i]) {
970  bSubset = false;
971  break;
972  }
973  }
974  }
975  if (!bPresent)
976  return false;
977  if (bSubset)
978  return true;
979 
980  return false;
981  } // subset
double b
Definition: hdecay.h:118
double a
Definition: hdecay.h:119

◆ testSelectionOverlap()

evtSel::OverlapResult EventSelector::testSelectionOverlap ( Strings const &  pathspec1,
Strings const &  pathspec2,
Strings const &  fullPathList 
)
static

Tests if the specified trigger selection lists (path specs) overlap, where "overlap" means that a valid trigger result (given the full trigger list) could satisfy both selections.

Parameters
pathspec1The first trigger selection list (vector of string).
pathspec2The second trigger selection list (vector of string).
fullPathListThe full list of trigger names (vector of string).
Returns
OverlapResult which indicates the degree of overlap.

Definition at line 487 of file EventSelector.cc.

References a, b, combine(), edm::evtSel::ExactMatch, expandDecisionList(), f, g, identical(), edm::evtSel::InvalidSelection, visualization-live-secondInstance_cfg::m, N, edm::evtSel::NoOverlap, hltL1SingleMuFiltered5_cfi::overlap, overlapping(), edm::evtSel::PartialOverlap, selectionIsValid(), and subset().

489  {
490  bool overlap = false;
491 
492  // first, test that the selection lists are valid
493  if (!selectionIsValid(pathspec1, fullPathList) || !selectionIsValid(pathspec2, fullPathList)) {
495  }
496 
497  // catch exceptions from the EventSelector constructor
498  // (and anywhere else) and mark those as failures
499  try {
500  // create an EventSelector instance for each selection list
501  EventSelector a(pathspec1, fullPathList);
502  EventSelector b(pathspec2, fullPathList);
503 
504  unsigned int N = fullPathList.size();
505 
506  // create the expanded masks for the various decision lists in a and b
507  std::vector<bool> aPassAbs = expandDecisionList(a.absolute_acceptors_, true, N);
508  std::vector<bool> aPassCon = expandDecisionList(a.conditional_acceptors_, true, N);
509  std::vector<bool> aFailAbs = expandDecisionList(a.absolute_acceptors_, false, N);
510  std::vector<bool> aFailCon = expandDecisionList(a.conditional_acceptors_, false, N);
511  std::vector<bool> aExc = expandDecisionList(a.exception_acceptors_, true, N);
512  std::vector<std::vector<bool> > aMustFail;
513  for (unsigned int m = 0; m != a.all_must_fail_.size(); ++m) {
514  aMustFail.push_back(expandDecisionList(a.all_must_fail_[m], false, N));
515  }
516  std::vector<std::vector<bool> > aMustFailNoex;
517  for (unsigned int m = 0; m != a.all_must_fail_noex_.size(); ++m) {
518  aMustFailNoex.push_back(expandDecisionList(a.all_must_fail_noex_[m], false, N));
519  }
520 
521  std::vector<bool> bPassAbs = expandDecisionList(b.absolute_acceptors_, true, N);
522  std::vector<bool> bPassCon = expandDecisionList(b.conditional_acceptors_, true, N);
523  std::vector<bool> bFailAbs = expandDecisionList(b.absolute_acceptors_, false, N);
524  std::vector<bool> bFailCon = expandDecisionList(b.conditional_acceptors_, false, N);
525  std::vector<bool> bExc = expandDecisionList(b.exception_acceptors_, true, N);
526  std::vector<std::vector<bool> > bMustFail;
527  for (unsigned int m = 0; m != b.all_must_fail_.size(); ++m) {
528  bMustFail.push_back(expandDecisionList(b.all_must_fail_[m], false, N));
529  }
530  std::vector<std::vector<bool> > bMustFailNoex;
531  for (unsigned int m = 0; m != b.all_must_fail_noex_.size(); ++m) {
532  bMustFailNoex.push_back(expandDecisionList(b.all_must_fail_noex_[m], false, N));
533  }
534 
535  std::vector<bool> aPass = combine(aPassAbs, aPassCon);
536  std::vector<bool> bPass = combine(bPassAbs, bPassCon);
537  std::vector<bool> aFail = combine(aFailAbs, aFailCon);
538  std::vector<bool> bFail = combine(bFailAbs, bFailCon);
539 
540  // Check for overlap in the primary masks
541  overlap = overlapping(aPass, bPass) || overlapping(aFail, bFail) || overlapping(aExc, bExc);
542  if (overlap)
544 
545  // Check for overlap of a primary fail mask with a must fail mask
546  for (unsigned int f = 0; f != aMustFail.size(); ++f) {
547  overlap = overlapping(aMustFail[f], bFail);
548  if (overlap)
549  return evtSel::PartialOverlap;
550  for (unsigned int g = 0; g != bMustFail.size(); ++g) {
551  overlap = subset(aMustFail[f], bMustFail[g]);
552  if (overlap)
553  return evtSel::PartialOverlap;
554  }
555  for (unsigned int g = 0; g != bMustFailNoex.size(); ++g) {
556  overlap = subset(aMustFail[f], bMustFailNoex[g]);
557  if (overlap)
558  return evtSel::PartialOverlap;
559  }
560  }
561  for (unsigned int f = 0; f != aMustFailNoex.size(); ++f) {
562  overlap = overlapping(aMustFailNoex[f], bFail);
563  if (overlap)
564  return evtSel::PartialOverlap;
565  for (unsigned int g = 0; g != bMustFail.size(); ++g) {
566  overlap = subset(aMustFailNoex[f], bMustFail[g]);
567  if (overlap)
568  return evtSel::PartialOverlap;
569  }
570  for (unsigned int g = 0; g != bMustFailNoex.size(); ++g) {
571  overlap = subset(aMustFailNoex[f], bMustFailNoex[g]);
572  if (overlap)
573  return evtSel::PartialOverlap;
574  }
575  }
576  for (unsigned int g = 0; g != bMustFail.size(); ++g) {
577  overlap = overlapping(bMustFail[g], aFail);
578  if (overlap)
579  return evtSel::PartialOverlap;
580  }
581  for (unsigned int g = 0; g != bMustFailNoex.size(); ++g) {
582  overlap = overlapping(bMustFail[g], aFail);
583  if (overlap)
584  return evtSel::PartialOverlap;
585  }
586 
587  } catch (edm::Exception const&) {
589  }
590 
591  // If we get to here without overlap becoming true, there is no overlap
592 
593  return evtSel::NoOverlap;
594 
595  } // testSelectionOverlap
static bool selectionIsValid(Strings const &pathspec, Strings const &fullPathList)
static std::vector< bool > combine(std::vector< bool > const &a, std::vector< bool > const &b)
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e g
Definition: Activities.doc:4
double f[11][100]
static bool overlapping(std::vector< bool > const &a, std::vector< bool > const &b)
static bool subset(std::vector< bool > const &a, std::vector< bool > const &b)
#define N
Definition: blowfish.cc:9
double b
Definition: hdecay.h:118
A selector of events.
Definition: EventSelector.h:16
static bool identical(std::vector< bool > const &a, std::vector< bool > const &b)
double a
Definition: hdecay.h:119
static std::vector< bool > expandDecisionList(Bits const &b, bool PassOrFail, unsigned int n)

◆ wantAll()

bool edm::EventSelector::wantAll ( ) const
inline

Definition at line 45 of file EventSelector.h.

References accept_all_.

Referenced by selectionIsValid().

45 { return accept_all_; }
bool const accept_all_
Definition: EventSelector.h:72

Member Data Documentation

◆ absolute_acceptors_

Bits edm::EventSelector::absolute_acceptors_
private

Definition at line 76 of file EventSelector.h.

Referenced by initPathNames(), maskTriggerResults(), and selectionDecision().

◆ accept_all_

bool const edm::EventSelector::accept_all_
private

Definition at line 72 of file EventSelector.h.

Referenced by acceptEvent(), initPathNames(), selectionDecision(), and wantAll().

◆ all_must_fail_

std::vector<Bits> edm::EventSelector::all_must_fail_
private

Definition at line 79 of file EventSelector.h.

Referenced by initPathNames(), maskTriggerResults(), and selectionDecision().

◆ all_must_fail_noex_

std::vector<Bits> edm::EventSelector::all_must_fail_noex_
private

Definition at line 80 of file EventSelector.h.

Referenced by initPathNames(), maskTriggerResults(), and selectionDecision().

◆ conditional_acceptors_

Bits edm::EventSelector::conditional_acceptors_
private

Definition at line 77 of file EventSelector.h.

Referenced by initPathNames(), maskTriggerResults(), and selectionDecision().

◆ exception_acceptors_

Bits edm::EventSelector::exception_acceptors_
private

Definition at line 78 of file EventSelector.h.

Referenced by initPathNames(), maskTriggerResults(), and selectionDecision().

◆ nPathNames_

int edm::EventSelector::nPathNames_
private

Definition at line 84 of file EventSelector.h.

Referenced by initPathNames(), and maskTriggerResults().

◆ pathspecs_

Strings const edm::EventSelector::pathspecs_
private

Definition at line 70 of file EventSelector.h.

Referenced by initAcceptAll(), and initPathNames().

◆ psetID_

ParameterSetID edm::EventSelector::psetID_
private

Definition at line 82 of file EventSelector.h.

Referenced by acceptEvent().

◆ results_from_current_process_

bool const edm::EventSelector::results_from_current_process_
private

Definition at line 71 of file EventSelector.h.

Referenced by acceptEvent().