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 Member Functions | Private Attributes
TopHLTSingleLeptonDQM Class Reference

define MonitorEnsembple to be used More...

#include "DQM/Physics/plugins/TopHLTSingleLeptonDQM.h"

Inheritance diagram for TopHLTSingleLeptonDQM:
edm::EDAnalyzer edm::EDConsumerBase

Public Member Functions

virtual void analyze (const edm::Event &event, const edm::EventSetup &setup)
 do this during the event loop More...
 
 TopHLTSingleLeptonDQM (const edm::ParameterSet &cfg)
 default constructor More...
 
 ~TopHLTSingleLeptonDQM ()
 default destructor More...
 
- Public Member Functions inherited from edm::EDAnalyzer
 EDAnalyzer ()
 
std::string workerType () const
 
virtual ~EDAnalyzer ()
 
- Public Member Functions inherited from edm::EDConsumerBase
 EDConsumerBase ()
 
ProductHolderIndex indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductHolderIndex > &) const
 
void itemsToGet (BranchType, std::vector< ProductHolderIndex > &) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void updateLookup (BranchType iBranchType, ProductHolderIndexHelper const &)
 
virtual ~EDConsumerBase ()
 

Private Member Functions

std::string objectType (const std::string &label)
 
std::string selectionStep (const std::string &label)
 

Private Attributes

edm::InputTag beamspot_
 beamspot More...
 
StringCutObjectSelector
< reco::BeamSpot > * 
beamspotSelect_
 string cut selector More...
 
std::map< std::string,
std::pair< edm::ParameterSet,
TopHLTSingleLepton::MonitorEnsemble * > > 
selection_
 
std::vector< std::string > selectionOrder_
 
std::vector< std::string > triggerPaths_
 trigger paths More...
 
edm::InputTag triggerTable_
 trigger table More...
 
edm::InputTag vertex_
 primary vertex More...
 
StringCutObjectSelector
< reco::Vertex > * 
vertexSelect_
 string cut selector More...
 

Additional Inherited Members

- Public Types inherited from edm::EDAnalyzer
typedef EDAnalyzer ModuleType
 
typedef WorkerT< EDAnalyzerWorkerType
 
- Static Public Member Functions inherited from edm::EDAnalyzer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &)
 
- Protected Member Functions inherited from edm::EDAnalyzer
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
CurrentProcessingContext const * currentContext () const
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

define MonitorEnsembple to be used

Module to apply a monitored selection of top like events in the semi-leptonic channel.

Plugin to apply a monitored selection of top like events with some minimal flexibility in the number and definition of the selection steps. To achieve this flexibility it employes the SelectionStep class. The MonitorEnsemble class is used to provide a well defined set of histograms to be monitored after each selection step. The SelectionStep class provides a flexible and intuitive selection via the StringCutParser. SelectionStep and MonitorEnsemble classes are interleaved. The monitoring starts after a preselection step (which is not monitored in the context of this module) with an instance of the MonitorEnsemble class. The following objects are supported for selection:

These types have to be present as prefix of the selection step paramter label separated from the rest of the label by a ':' (e.g. in the form "jets:step0"). The class expects selection labels of this type. They will be disentangled by the private helper functions objectType and seletionStep as declared below.

Definition at line 213 of file TopHLTSingleLeptonDQM.h.

Constructor & Destructor Documentation

TopHLTSingleLeptonDQM::TopHLTSingleLeptonDQM ( const edm::ParameterSet cfg)

default constructor

Definition at line 571 of file TopHLTSingleLeptonDQM.cc.

References beamspot_, beamspotSelect_, edm::ParameterSet::existsAs(), edm::ParameterSet::getParameter(), i, EgammaValidation_Wenu_cff::sel, selection_, selectionOrder_, selectionStep(), AlCaHLTBitMon_QueryRunRegistry::string, triggerPaths_, triggerTable_, vertex_, and vertexSelect_.

572 {
573  // configure preselection
574  edm::ParameterSet presel=cfg.getParameter<edm::ParameterSet>("preselection");
575  if( presel.existsAs<edm::ParameterSet>("trigger") ){
576  edm::ParameterSet trigger=presel.getParameter<edm::ParameterSet>("trigger");
577  triggerTable_=trigger.getParameter<edm::InputTag>("src");
578  triggerPaths_=trigger.getParameter<std::vector<std::string> >("select");
579  }
580  if( presel.existsAs<edm::ParameterSet>("vertex" ) ){
581  edm::ParameterSet vertex=presel.getParameter<edm::ParameterSet>("vertex");
582  vertex_= vertex.getParameter<edm::InputTag>("src");
584  }
585  if( presel.existsAs<edm::ParameterSet>("beamspot" ) ){
586  edm::ParameterSet beamspot=presel.getParameter<edm::ParameterSet>("beamspot");
587  beamspot_= beamspot.getParameter<edm::InputTag>("src");
589  }
590 
591  // conifgure the selection
592  std::vector<edm::ParameterSet> sel=cfg.getParameter<std::vector<edm::ParameterSet> >("selection");
593  for(unsigned int i=0; i<sel.size(); ++i){
594  selectionOrder_.push_back(sel.at(i).getParameter<std::string>("label"));
595  selection_[selectionStep(selectionOrder_.back())] = std::make_pair(sel.at(i), new TopHLTSingleLepton::MonitorEnsemble(selectionStep(selectionOrder_.back()).c_str(), cfg.getParameter<edm::ParameterSet>("setup")));
596  }
597 }
std::map< std::string, std::pair< edm::ParameterSet, TopHLTSingleLepton::MonitorEnsemble * > > selection_
T getParameter(std::string const &) const
int i
Definition: DBlmapReader.cc:9
bool existsAs(std::string const &parameterName, bool trackiness=true) const
checks if a parameter exists as a given type
Definition: ParameterSet.h:187
edm::InputTag vertex_
primary vertex
std::vector< std::string > triggerPaths_
trigger paths
StringCutObjectSelector< reco::BeamSpot > * beamspotSelect_
string cut selector
edm::InputTag beamspot_
beamspot
std::vector< std::string > selectionOrder_
std::string selectionStep(const std::string &label)
edm::InputTag triggerTable_
trigger table
StringCutObjectSelector< reco::Vertex > * vertexSelect_
string cut selector
TopHLTSingleLeptonDQM::~TopHLTSingleLeptonDQM ( )
inline

default destructor

Definition at line 218 of file TopHLTSingleLeptonDQM.h.

References beamspotSelect_, and vertexSelect_.

218  {
219  if( vertexSelect_ ) delete vertexSelect_;
220  if( beamspotSelect_ ) delete beamspotSelect_;
221  };
StringCutObjectSelector< reco::BeamSpot > * beamspotSelect_
string cut selector
StringCutObjectSelector< reco::Vertex > * vertexSelect_
string cut selector

Member Function Documentation

void TopHLTSingleLeptonDQM::analyze ( const edm::Event event,
const edm::EventSetup setup 
)
virtual

do this during the event loop

Implements edm::EDAnalyzer.

Definition at line 600 of file TopHLTSingleLeptonDQM.cc.

References acceptHLT(), beamspot_, beamspotSelect_, gather_cfg::cout, first, edm::Event::getByLabel(), combine::key, edm::InputTag::label(), objectType(), SelectionStep< Object >::select(), selection_, selectionOrder_, selectionStep(), relval_parameters_module::step, AlCaHLTBitMon_QueryRunRegistry::string, triggerPaths_, triggerTable_, vertex_, and vertexSelect_.

601 {
602 // cout<<"NEW EVENT -----------"<<endl;
603  if(!triggerTable_.label().empty()){
605  if( !event.getByLabel(triggerTable_, triggerTable) ) return;
606  if(!acceptHLT(event, *triggerTable, triggerPaths_)) return;
607  }
608 // cout<<"trig passed"<<endl;
609  if(!beamspot_.label().empty()){
611  if( !event.getByLabel(beamspot_, beamspot) ) return;
612  if(!(*beamspotSelect_)(*beamspot)) return;
613  }
614  if(!vertex_.label().empty()){
616  if( !event.getByLabel(vertex_, vtx) ) {cout<<"NO VTX COLLECTION FOUND"<<endl;return;}
618  if(!(*vertexSelect_)(*pv)) return;
619  }
620  // apply selection steps
621  unsigned int passed=0;
622  for(std::vector<std::string>::const_iterator selIt=selectionOrder_.begin(); selIt!=selectionOrder_.end(); ++selIt){
623  std::string key = selectionStep(*selIt), type = objectType(*selIt);
624  if(selection_.find(key)!=selection_.end()){
625  if(type=="empty"){
626  selection_[key].second->fill(event, setup);
627  }
628  if(type=="Hlt" ){
629 // cout<<"HLT filled"<<endl;
630  selection_[key].second->fill(event, setup);
631  }
632  if(type=="muons"){
633 // cout<<"Good Mu found"<<endl;
635  if(step.select(event)){ ++passed;
636  selection_[key].second->fill(event, setup);
637  } else break;
638  }
639  if(type=="elecs"){
641  if(step.select(event)){ ++passed;
642  selection_[key].second->fill(event, setup);
643  } else break;
644  }
645  if(type=="jets" ){
647  if(step.select(event, setup)){ ++passed;
648  selection_[key].second->fill(event, setup);
649  } else break;
650  }
651  if(type=="jets/pf" ){
653  if(step.select(event, setup)){ ++passed;
654  selection_[key].second->fill(event, setup);
655  } else break;
656  }
657  if(type=="jets/calo" ){
658 // cout<<"Jet found!"<<endl;
660  if(step.select(event, setup)){ ++passed;
661  selection_[key].second->fill(event, setup);
662  } else break;
663  }
664  if(type=="met" ){
666  if(step.select(event)){ ++passed;
667  selection_[key].second->fill(event, setup);
668  } else break;
669  }
670  }
671  }
672 }
std::map< std::string, std::pair< edm::ParameterSet, TopHLTSingleLepton::MonitorEnsemble * > > selection_
type
Definition: HCALResponse.h:21
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
Definition: View.h:81
bool acceptHLT(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
edm::InputTag vertex_
primary vertex
std::vector< std::string > triggerPaths_
trigger paths
StringCutObjectSelector< reco::BeamSpot > * beamspotSelect_
string cut selector
edm::InputTag beamspot_
beamspot
bool first
Definition: L1TdeRCT.cc:94
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:361
std::vector< std::string > selectionOrder_
Templated helper class to allow a selection on a certain object collection.
std::string const & label() const
Definition: InputTag.h:42
std::string selectionStep(const std::string &label)
list key
Definition: combine.py:13
edm::InputTag triggerTable_
trigger table
StringCutObjectSelector< reco::Vertex > * vertexSelect_
string cut selector
tuple cout
Definition: gather_cfg.py:121
std::string objectType(const std::string &label)
std::string TopHLTSingleLeptonDQM::objectType ( const std::string &  label)
inlineprivate

deduce object type from ParameterSet label, the label is expected to be of type 'objectType:selectionStep'

Definition at line 229 of file TopHLTSingleLeptonDQM.h.

Referenced by analyze().

229 { return label.substr(0, label.find(':')); };
std::string TopHLTSingleLeptonDQM::selectionStep ( const std::string &  label)
inlineprivate

deduce selection step from ParameterSet label, the label is expected to be of type 'objectType:selectionStep'

Definition at line 232 of file TopHLTSingleLeptonDQM.h.

Referenced by analyze(), and TopHLTSingleLeptonDQM().

232 { return label.substr(label.find(':')+1); };

Member Data Documentation

edm::InputTag TopHLTSingleLeptonDQM::beamspot_
private

beamspot

Definition at line 245 of file TopHLTSingleLeptonDQM.h.

Referenced by analyze(), and TopHLTSingleLeptonDQM().

StringCutObjectSelector<reco::BeamSpot>* TopHLTSingleLeptonDQM::beamspotSelect_
private

string cut selector

Definition at line 247 of file TopHLTSingleLeptonDQM.h.

Referenced by analyze(), TopHLTSingleLeptonDQM(), and ~TopHLTSingleLeptonDQM().

std::map<std::string, std::pair<edm::ParameterSet, TopHLTSingleLepton::MonitorEnsemble*> > TopHLTSingleLeptonDQM::selection_
private

this is the heart component of the plugin; std::string keeps a label the selection step for later identification, edm::ParameterSet keeps the configuration of the selection for the SelectionStep class, MonitoringEnsemble keeps an instance of the MonitorEnsemble class to be filled after each selection step

Definition at line 257 of file TopHLTSingleLeptonDQM.h.

Referenced by analyze(), and TopHLTSingleLeptonDQM().

std::vector<std::string> TopHLTSingleLeptonDQM::selectionOrder_
private

needed to guarantee the selection order as defined by the order of ParameterSets in the selection vector as defined in the config

Definition at line 251 of file TopHLTSingleLeptonDQM.h.

Referenced by analyze(), and TopHLTSingleLeptonDQM().

std::vector<std::string> TopHLTSingleLeptonDQM::triggerPaths_
private

trigger paths

Definition at line 238 of file TopHLTSingleLeptonDQM.h.

Referenced by analyze(), and TopHLTSingleLeptonDQM().

edm::InputTag TopHLTSingleLeptonDQM::triggerTable_
private

trigger table

Definition at line 232 of file TopHLTSingleLeptonDQM.h.

Referenced by analyze(), and TopHLTSingleLeptonDQM().

edm::InputTag TopHLTSingleLeptonDQM::vertex_
private

primary vertex

Definition at line 240 of file TopHLTSingleLeptonDQM.h.

Referenced by analyze(), and TopHLTSingleLeptonDQM().

StringCutObjectSelector<reco::Vertex>* TopHLTSingleLeptonDQM::vertexSelect_
private

string cut selector

Definition at line 242 of file TopHLTSingleLeptonDQM.h.

Referenced by analyze(), TopHLTSingleLeptonDQM(), and ~TopHLTSingleLeptonDQM().