CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Attributes
SelectionStep< Object > Class Template Reference

Templated helper class to allow a selection on a certain object collection. More...

#include <TopDQMHelpers.h>

Public Member Functions

bool select (const edm::Event &event)
 apply selection More...
 
bool select (const edm::Event &event, const std::string &type)
 apply selection with special treatment for PFCandidates More...
 
bool select (const edm::Event &event, const edm::EventSetup &setup)
 apply selection override for jets More...
 
 SelectionStep (const edm::ParameterSet &cfg, edm::ConsumesCollector &&iC)
 default constructor More...
 
bool selectVertex (const edm::Event &event)
 
 ~SelectionStep ()
 default destructor More...
 

Private Attributes

edm::EDGetTokenT
< reco::JetTagCollection
btagLabel_
 choice for b-tag as extra selection type More...
 
double btagWorkingPoint_
 choice of b-tag working point as extra selection type More...
 
double eidCutValue_
 
edm::EDGetTokenT
< edm::ValueMap< float > > 
electronId_
 electronId label as extra selection type More...
 
edm::EDGetTokenT< edm::View
< reco::GsfElectron > > 
gsfEs_
 
std::string jetCorrector_
 jet corrector as extra selection type More...
 
edm::EDGetTokenT
< reco::JetIDValueMap
jetIDLabel_
 jetID as an extra selection type More...
 
StringCutObjectSelector
< reco::JetID > * 
jetIDSelect_
 selection string on the jetID More...
 
int max_
 
int min_
 min/max for object multiplicity More...
 
edm::EDGetTokenT< edm::View
< reco::Vertex > > 
pvs_
 
StringCutObjectSelector< Object > select_
 string cut selector More...
 
edm::EDGetTokenT< edm::View
< Object > > 
src_
 input collection More...
 

Detailed Description

template<typename Object>
class SelectionStep< Object >

Templated helper class to allow a selection on a certain object collection.

"DQM/Physics/interface/TopDQMHelpers.h"

Templated helper class to allow a selection on a certain object collection, which may be monitored by a separate class afterwards. The class wraps and slightly extends the features of the StringCutParser to allow also to apply event based selections, according to a minimal or maximal number of elements in the collection after the object selection has been applied. It takes an edm::ParameterSet in the constructor, which should contain the following elements:

The parameters src and select are mandatory. The parameters min and max are optional. The parameters electronId and jetCorrector are optional. They are added to keep the possibility to apply selections on id'ed electrons or on corrected jets. They may be omitted in the PSet for simplification reasons if not needed at any time. They are not effiective for other object collections but electrons or jets. If none of the two parameters min or max is found in the event the select function returns true if at least one object fullfilled the requirements.

The class has one template value, which is the object collection to apply the selection on. This has to be parsed to the StringCutParser class. The function select is overrided for jets to circumvent problems with the template specialisation. Note that for MET not type1 or muon corrections are supported on reco candidates.

Templated helper class to allow a selection on a certain object collection, which may be monitored by a separate class afterwards. The class wraps and slightly extends the features of the StringCutParser to allow also to apply event based selections, according to a minimal or maximal number of elements in the collection after the object selection has been applied. It takes an edm::ParameterSet in the constructor, which should contain the following elements:

The parameters src and select are mandatory. The parameters min and max are optional. The parameters electronId and jetCorrector are optional. They are added to keep the possibility to apply selections on id'ed electrons or on corrected jets. They may be omitted in the PSet for simplification reasons if not needed at any time. They are not effiective for other object collections but electrons or jets. If none of the two parameters min or max is found in the event the select function returns true if at least one object fullfilled the requirements.

The class has one template value, which is the object collection to apply the selection on. This has to be parsed to the StringCutParser class. The function select is overrided for jets to circumvent problems with the template specialisation. Note that for MET not type1 or muon corrections are supported on reco candidates.

Definition at line 181 of file TopDQMHelpers.h.

Constructor & Destructor Documentation

template<typename Object >
SelectionStep< Object >::SelectionStep ( const edm::ParameterSet cfg,
edm::ConsumesCollector &&  iC 
)

default constructor

Definition at line 233 of file TopDQMHelpers.h.

References SelectionStep< Object >::btagLabel_, SelectionStep< Object >::btagWorkingPoint_, SelectionStep< Object >::eidCutValue_, SelectionStep< Object >::electronId_, edm::ParameterSet::exists(), edm::ParameterSet::existsAs(), edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), SelectionStep< Object >::gsfEs_, SelectionStep< Object >::jetCorrector_, SelectionStep< Object >::jetIDLabel_, SelectionStep< Object >::jetIDSelect_, SelectionStep< Object >::max_, SelectionStep< Object >::min_, SelectionStep< Object >::src_, and AlCaHLTBitMon_QueryRunRegistry::string.

235  : select_(cfg.getParameter<std::string>("select")), jetIDSelect_(0) {
236 
237  src_ =
239  // exist otherwise they are initialized with -1
240  cfg.exists("min") ? min_ = cfg.getParameter<int>("min") : min_ = -1;
241  cfg.exists("max") ? max_ = cfg.getParameter<int>("max") : max_ = -1;
242  std::string mygSF = "gedGsfElectrons";
244  cfg.getUntrackedParameter<edm::InputTag>("myGSF", mygSF));
245  if (cfg.existsAs<edm::ParameterSet>("electronId")) {
246  edm::ParameterSet elecId =
247  cfg.getParameter<edm::ParameterSet>("electronId");
249  elecId.getParameter<edm::InputTag>("src"));
250  eidCutValue_ = elecId.getParameter<double>("cutValue");
251  }
252  if (cfg.exists("jetCorrector")) {
253  jetCorrector_ = cfg.getParameter<std::string>("jetCorrector");
254  }
255  if (cfg.existsAs<edm::ParameterSet>("jetBTagger")) {
256  edm::ParameterSet jetBTagger =
257  cfg.getParameter<edm::ParameterSet>("jetBTagger");
259  jetBTagger.getParameter<edm::InputTag>("label"));
260  btagWorkingPoint_ = jetBTagger.getParameter<double>("workingPoint");
261  }
262  if (cfg.existsAs<edm::ParameterSet>("jetID")) {
263  edm::ParameterSet jetID = cfg.getParameter<edm::ParameterSet>("jetID");
265  jetID.getParameter<edm::InputTag>("label"));
267  jetID.getParameter<std::string>("select"));
268  }
269 }
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
bool existsAs(std::string const &parameterName, bool trackiness=true) const
checks if a parameter exists as a given type
Definition: ParameterSet.h:186
edm::EDGetTokenT< edm::ValueMap< float > > electronId_
electronId label as extra selection type
bool exists(std::string const &parameterName) const
checks if a parameter exists
edm::EDGetTokenT< edm::View< reco::GsfElectron > > gsfEs_
int min_
min/max for object multiplicity
edm::EDGetTokenT< reco::JetTagCollection > btagLabel_
choice for b-tag as extra selection type
double eidCutValue_
double btagWorkingPoint_
choice of b-tag working point as extra selection type
edm::EDGetTokenT< edm::View< Object > > src_
input collection
StringCutObjectSelector< reco::JetID > * jetIDSelect_
selection string on the jetID
std::string jetCorrector_
jet corrector as extra selection type
StringCutObjectSelector< Object > select_
string cut selector
edm::EDGetTokenT< reco::JetIDValueMap > jetIDLabel_
jetID as an extra selection type
template<typename Object >
SelectionStep< Object >::~SelectionStep ( )
inline

default destructor

Definition at line 186 of file TopDQMHelpers.h.

186 {};

Member Function Documentation

template<typename Object >
bool SelectionStep< Object >::select ( const edm::Event event)

apply selection

Definition at line 273 of file TopDQMHelpers.h.

References accept(), edm::Event::getByToken(), customizeTrackingMonitorSeedNumber::idx, gen::n, getGTfromDQMFile::obj, and alcazmumu_cfi::src.

Referenced by Vispa.Views.LineDecayView.LineDecayContainer::createObject(), Vispa.Plugins.Browser.BrowserTabController.BrowserTabController::find(), Vispa.Views.LineDecayView.LineDecayContainer::mousePressEvent(), Vispa.Gui.PortConnection.PointToPointConnection::mousePressEvent(), Vispa.Gui.VispaWidget.VispaWidget::mousePressEvent(), and Vispa.Views.AbstractView.AbstractView::restoreSelection().

273  {
274 
275  // fetch input collection
277  if (!event.getByToken(src_, src)) return false;
278 
279  // load electronId value map if configured such
281  if (!electronId_.isUninitialized()) {
282  if (!event.getByToken(electronId_, electronId)) return false;
283  }
284 
285  // determine multiplicity of selected objects
286  int n = 0;
287  for (typename edm::View<Object>::const_iterator obj = src->begin();
288  obj != src->end(); ++obj) {
289  // special treatment for electrons
290  if (dynamic_cast<const reco::GsfElectron*>(&*obj)) {
291  unsigned int idx = obj - src->begin();
293  ? true
294  : ((double)(*electronId)[src->refAt(idx)] >= eidCutValue_)) {
295  if (select_(*obj)) ++n;
296  }
297  }
298  // normal treatment
299  else {
300  if (select_(*obj)) ++n;
301  }
302  }
303  bool accept =
304  (min_ >= 0 ? n >= min_ : true) && (max_ >= 0 ? n <= max_ : true);
305  return (min_ < 0 && max_ < 0) ? (n > 0) : accept;
306 }
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:464
edm::EDGetTokenT< edm::ValueMap< float > > electronId_
electronId label as extra selection type
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
Definition: TopDQMHelpers.h:24
int min_
min/max for object multiplicity
double eidCutValue_
tuple idx
DEBUGGING if hasattr(process,&quot;trackMonIterativeTracking2012&quot;): print &quot;trackMonIterativeTracking2012 D...
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
Definition: View.h:85
bool isUninitialized() const
Definition: EDGetToken.h:73
edm::EDGetTokenT< edm::View< Object > > src_
input collection
StringCutObjectSelector< Object > select_
string cut selector
template<typename Object >
bool SelectionStep< Object >::select ( const edm::Event event,
const std::string &  type 
)

apply selection with special treatment for PFCandidates

Definition at line 310 of file TopDQMHelpers.h.

References accept(), edm::Event::getByToken(), reco::PFCandidate::gsfElectronRef(), customizeTrackingMonitorSeedNumber::idx, edm::Ref< C, T, F >::isNonnull(), reco::PFCandidate::muonRef(), gen::n, getGTfromDQMFile::obj, and alcazmumu_cfi::src.

Referenced by Vispa.Views.LineDecayView.LineDecayContainer::createObject(), Vispa.Plugins.Browser.BrowserTabController.BrowserTabController::find(), Vispa.Views.LineDecayView.LineDecayContainer::mousePressEvent(), Vispa.Gui.PortConnection.PointToPointConnection::mousePressEvent(), Vispa.Gui.VispaWidget.VispaWidget::mousePressEvent(), and Vispa.Views.AbstractView.AbstractView::restoreSelection().

311  {
312  // fetch input collection
314  if (!event.getByToken(src_, src)) return false;
315 
316  // special for gsfElectron
318 
319  // load electronId value map if configured such
321  if (!electronId_.isUninitialized()) {
322  if (!event.getByToken(electronId_, electronId)) return false;
323  }
324 
325  // determine multiplicity of selected objects
326  int n = 0;
327  for (typename edm::View<Object>::const_iterator obj = src->begin();
328  obj != src->end(); ++obj) {
329 
330  // special treatment for PF candidates
331  if (dynamic_cast<const reco::PFCandidate*>(&*obj)) {
332  reco::PFCandidate objtmp = dynamic_cast<const reco::PFCandidate&>(*obj);
333 
334  if (objtmp.muonRef().isNonnull() && type == "muon") {
335  if (select_(*obj)) {
336  ++n;
337  }
338  } else if (objtmp.gsfElectronRef().isNonnull() && type == "electron") {
339  if (select_(*obj)) {
341  ++n;
342  } else if (((double)(*electronId)[obj->gsfElectronRef()] >=
343  eidCutValue_)) {
344  ++n;
345  }
346  }
347  // idx_gsf++;
348  }
349  }
350 
351  // special treatment for electrons
352  else if (dynamic_cast<const reco::GsfElectron*>(&*obj)) {
353  unsigned int idx = obj - src->begin();
355  ? true
356  : ((double)(*electronId)[src->refAt(idx)] >= eidCutValue_)) {
357  if (select_(*obj)) ++n;
358  }
359  }
360 
361  // normal treatment
362  else {
363  if (select_(*obj)) ++n;
364  }
365  }
366  bool accept =
367  (min_ >= 0 ? n >= min_ : true) && (max_ >= 0 ? n <= max_ : true);
368  return (min_ < 0 && max_ < 0) ? (n > 0) : accept;
369 }
type
Definition: HCALResponse.h:21
bool isNonnull() const
Checks for non-null.
Definition: Ref.h:252
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:464
edm::EDGetTokenT< edm::ValueMap< float > > electronId_
electronId label as extra selection type
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
Definition: TopDQMHelpers.h:24
int min_
min/max for object multiplicity
reco::GsfElectronRef gsfElectronRef() const
return a reference to the corresponding GsfElectron if any
Definition: PFCandidate.cc:574
double eidCutValue_
reco::MuonRef muonRef() const
Definition: PFCandidate.cc:450
tuple idx
DEBUGGING if hasattr(process,&quot;trackMonIterativeTracking2012&quot;): print &quot;trackMonIterativeTracking2012 D...
Particle reconstructed by the particle flow algorithm.
Definition: PFCandidate.h:39
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
Definition: View.h:85
bool isUninitialized() const
Definition: EDGetToken.h:73
edm::EDGetTokenT< edm::View< Object > > src_
input collection
StringCutObjectSelector< Object > select_
string cut selector
template<typename Object >
bool SelectionStep< Object >::select ( const edm::Event event,
const edm::EventSetup setup 
)

apply selection override for jets

apply selection (w/o using the template class Object), override for jets

Definition at line 397 of file TopDQMHelpers.h.

References accept(), JetCorrector::correction(), mvaPFMET_cff::corrector, edm::EventSetup::find(), edm::Event::getByToken(), JetCorrector::getJetCorrector(), customizeTrackingMonitorSeedNumber::idx, metsig::jet, edm::eventsetup::EventSetupRecordKey::makeKey(), gen::n, getGTfromDQMFile::obj, and alcazmumu_cfi::src.

Referenced by Vispa.Views.LineDecayView.LineDecayContainer::createObject(), Vispa.Plugins.Browser.BrowserTabController.BrowserTabController::find(), Vispa.Views.LineDecayView.LineDecayContainer::mousePressEvent(), Vispa.Gui.PortConnection.PointToPointConnection::mousePressEvent(), Vispa.Gui.VispaWidget.VispaWidget::mousePressEvent(), and Vispa.Views.AbstractView.AbstractView::restoreSelection().

398  {
399  // fetch input collection
401  if (!event.getByToken(src_, src)) return false;
402 
403  // load btag collection if configured such
404  // NOTE that the JetTagCollection needs an
405  // edm::View to reco::Jets; we have to add
406  // another Handle bjets for this purpose
410  if (!btagLabel_.isUninitialized()) {
411  if (!event.getByToken(src_, bjets)) return false;
412  if (!event.getByToken(btagLabel_, btagger)) return false;
413  if (!event.getByToken(pvs_, pvertex)) return false;
414  }
415 
416  // load jetID value map if configured such
418  if (jetIDSelect_) {
419  if (!event.getByToken(jetIDLabel_, jetID)) return false;
420  }
421 
422  // load jet corrector if configured such
423  const JetCorrector* corrector = 0;
424  if (!jetCorrector_.empty()) {
425  // check whether a jet correcto is in the event setup or not
427  JetCorrectionsRecord>())) {
428  corrector = JetCorrector::getJetCorrector(jetCorrector_, setup);
429  } else {
430  edm::LogVerbatim("TopDQMHelpers")
431  << "\n"
432  << "---------------------------------------------------------------\n"
433  << " No JetCorrectionsRecord available from EventSetup:\n"
434  << " - Jets will not be corrected.\n"
435  << " - If you want to change this add the following lines to your "
436  "cfg file:\n"
437  << "\n"
438  << " ## load jet corrections\n"
439  << " process.load(\""
440  "JetMETCorrections.Configuration.JetCorrectionServicesAllAlgos_cff"
441  "\")\n"
442  << " process.prefer(\"ak5CaloL2L3\")\n"
443  << "---------------------------------------------------------------"
444  "\n";
445  }
446  }
447  // determine multiplicity of selected objects
448  int n = 0;
449  for (typename edm::View<Object>::const_iterator obj = src->begin();
450  obj != src->end(); ++obj) {
451  // check for chosen btag discriminator to be above the
452  // corresponding working point if configured such
453  unsigned int idx = obj - src->begin();
454  if (btagLabel_.isUninitialized() ? true : (*btagger)[bjets->refAt(idx)] >
456  bool passedJetID = true;
457  // check jetID for calo jets
458  if (jetIDSelect_ &&
459  dynamic_cast<const reco::CaloJet*>(src->refAt(idx).get())) {
460  passedJetID = (*jetIDSelect_)((*jetID)[src->refAt(idx)]);
461  }
462  if (passedJetID) {
463  // scale jet energy if configured such
464  Object jet = *obj;
465  jet.scaleEnergy(corrector ? corrector->correction(*obj) : 1.);
466  if (select_(jet)) ++n;
467  }
468  }
469  }
470  bool accept =
471  (min_ >= 0 ? n >= min_ : true) && (max_ >= 0 ? n <= max_ : true);
472  return (min_ < 0 && max_ < 0) ? (n > 0) : accept;
473 }
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:464
virtual double correction(const LorentzVector &fJet) const =0
get correction using Jet information only
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
Definition: TopDQMHelpers.h:24
edm::EDGetTokenT< edm::View< reco::Vertex > > pvs_
const eventsetup::EventSetupRecord * find(const eventsetup::EventSetupRecordKey &) const
Definition: EventSetup.cc:91
int min_
min/max for object multiplicity
edm::EDGetTokenT< reco::JetTagCollection > btagLabel_
choice for b-tag as extra selection type
tuple corrector
Definition: mvaPFMET_cff.py:86
tuple idx
DEBUGGING if hasattr(process,&quot;trackMonIterativeTracking2012&quot;): print &quot;trackMonIterativeTracking2012 D...
static const JetCorrector * getJetCorrector(const std::string &fName, const edm::EventSetup &fSetup)
retrieve corrector from the event setup. troughs exception if something is missing ...
Definition: JetCorrector.cc:50
double btagWorkingPoint_
choice of b-tag working point as extra selection type
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
Definition: View.h:85
static EventSetupRecordKey makeKey()
bool isUninitialized() const
Definition: EDGetToken.h:73
edm::EDGetTokenT< edm::View< Object > > src_
input collection
StringCutObjectSelector< reco::JetID > * jetIDSelect_
selection string on the jetID
std::string jetCorrector_
jet corrector as extra selection type
StringCutObjectSelector< Object > select_
string cut selector
edm::EDGetTokenT< reco::JetIDValueMap > jetIDLabel_
jetID as an extra selection type
template<typename Object >
bool SelectionStep< Object >::selectVertex ( const edm::Event event)

Definition at line 372 of file TopDQMHelpers.h.

References accept(), edm::Event::getByToken(), gen::n, getGTfromDQMFile::obj, and alcazmumu_cfi::src.

372  {
373  // fetch input collection
375  if (!event.getByToken(src_, src)) return false;
376 
377  // load electronId value map if configured such
379  if (!electronId_.isUninitialized()) {
380  if (!event.getByToken(electronId_, electronId)) return false;
381  }
382 
383  // determine multiplicity of selected objects
384  int n = 0;
385  for (typename edm::View<Object>::const_iterator obj = src->begin();
386  obj != src->end(); ++obj) {
387 
388  if (select_(*obj)) ++n;
389  }
390  bool accept =
391  (min_ >= 0 ? n >= min_ : true) && (max_ >= 0 ? n <= max_ : true);
392  return (min_ < 0 && max_ < 0) ? (n > 0) : accept;
393 }
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:464
edm::EDGetTokenT< edm::ValueMap< float > > electronId_
electronId label as extra selection type
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
Definition: TopDQMHelpers.h:24
int min_
min/max for object multiplicity
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
Definition: View.h:85
bool isUninitialized() const
Definition: EDGetToken.h:73
edm::EDGetTokenT< edm::View< Object > > src_
input collection
StringCutObjectSelector< Object > select_
string cut selector

Member Data Documentation

template<typename Object >
edm::EDGetTokenT<reco::JetTagCollection> SelectionStep< Object >::btagLabel_
private

choice for b-tag as extra selection type

Definition at line 217 of file TopDQMHelpers.h.

Referenced by SelectionStep< Object >::SelectionStep().

template<typename Object >
double SelectionStep< Object >::btagWorkingPoint_
private

choice of b-tag working point as extra selection type

Definition at line 219 of file TopDQMHelpers.h.

Referenced by SelectionStep< Object >::SelectionStep().

template<typename Object >
double SelectionStep< Object >::eidCutValue_
private

electronId pattern we expect the following pattern: 0: fails 1: passes electron ID only 2: passes electron Isolation only 3: passes electron ID and Isolation only 4: passes conversion rejection 5: passes conversion rejection and ID 6: passes conversion rejection and Isolation 7: passes the whole selection As described on https://twiki.cern.ch/twiki/bin/view/CMS/SimpleCutBasedEleID

Definition at line 213 of file TopDQMHelpers.h.

Referenced by SelectionStep< Object >::SelectionStep().

template<typename Object >
edm::EDGetTokenT<edm::ValueMap<float> > SelectionStep< Object >::electronId_
private

electronId label as extra selection type

Definition at line 201 of file TopDQMHelpers.h.

Referenced by SelectionStep< Object >::SelectionStep().

template<typename Object >
edm::EDGetTokenT<edm::View<reco::GsfElectron> > SelectionStep< Object >::gsfEs_
private

Definition at line 224 of file TopDQMHelpers.h.

Referenced by SelectionStep< Object >::SelectionStep().

template<typename Object >
std::string SelectionStep< Object >::jetCorrector_
private

jet corrector as extra selection type

Definition at line 215 of file TopDQMHelpers.h.

Referenced by SelectionStep< Object >::SelectionStep().

template<typename Object >
edm::EDGetTokenT<reco::JetIDValueMap> SelectionStep< Object >::jetIDLabel_
private

jetID as an extra selection type

Definition at line 221 of file TopDQMHelpers.h.

Referenced by SelectionStep< Object >::SelectionStep().

template<typename Object >
StringCutObjectSelector<reco::JetID>* SelectionStep< Object >::jetIDSelect_
private

selection string on the jetID

Definition at line 228 of file TopDQMHelpers.h.

Referenced by SelectionStep< Object >::SelectionStep().

template<typename Object >
int SelectionStep< Object >::max_
private

Definition at line 199 of file TopDQMHelpers.h.

Referenced by SelectionStep< Object >::SelectionStep().

template<typename Object >
int SelectionStep< Object >::min_
private

min/max for object multiplicity

Definition at line 199 of file TopDQMHelpers.h.

Referenced by SelectionStep< Object >::SelectionStep().

template<typename Object >
edm::EDGetTokenT<edm::View<reco::Vertex> > SelectionStep< Object >::pvs_
private

Definition at line 223 of file TopDQMHelpers.h.

template<typename Object >
StringCutObjectSelector<Object> SelectionStep< Object >::select_
private

string cut selector

Definition at line 226 of file TopDQMHelpers.h.

template<typename Object >
edm::EDGetTokenT<edm::View<Object> > SelectionStep< Object >::src_
private

input collection

Definition at line 197 of file TopDQMHelpers.h.

Referenced by SelectionStep< Object >::SelectionStep().