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
TopHLTDiLeptonOfflineDQM Class Reference

define MonitorEnsembple to be used More...

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

Inheritance diagram for TopHLTDiLeptonOfflineDQM:
edm::EDAnalyzer

Public Member Functions

virtual void analyze (const edm::Event &event, const edm::EventSetup &setup)
 do this during the event loop More...
 
 TopHLTDiLeptonOfflineDQM (const edm::ParameterSet &cfg)
 default constructor More...
 
 ~TopHLTDiLeptonOfflineDQM ()
 default destructor More...
 
- Public Member Functions inherited from edm::EDAnalyzer
 EDAnalyzer ()
 
std::string workerType () const
 
virtual ~EDAnalyzer ()
 

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,
TopDiLeptonOffline::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
CurrentProcessingContext const * currentContext () const
 

Detailed Description

define MonitorEnsembple to be used

Module to apply a monitored selection of top like events in the di-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 248 of file TopHLTDiLeptonOfflineDQM.h.

Constructor & Destructor Documentation

TopHLTDiLeptonOfflineDQM::TopHLTDiLeptonOfflineDQM ( const edm::ParameterSet cfg)

default constructor

Definition at line 586 of file TopHLTDiLeptonOfflineDQM.cc.

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

587 {
588  // configure the preselection
589  edm::ParameterSet presel=cfg.getParameter<edm::ParameterSet>("preselection");
590  if( presel.existsAs<edm::ParameterSet>("trigger") ){
591  edm::ParameterSet trigger=presel.getParameter<edm::ParameterSet>("trigger");
592  triggerTable_=trigger.getParameter<edm::InputTag>("src");
593  triggerPaths_=trigger.getParameter<std::vector<std::string> >("select");
594  }
595  if( presel.existsAs<edm::ParameterSet>("vertex" ) ){
596  edm::ParameterSet vertex=presel.getParameter<edm::ParameterSet>("vertex");
597  vertex_= vertex.getParameter<edm::InputTag>("src");
598  vertexSelect_= new StringCutObjectSelector<reco::Vertex>(vertex.getParameter<std::string>("select"));
599  }
600  if( presel.existsAs<edm::ParameterSet>("beamspot" ) ){
601  edm::ParameterSet beamspot=presel.getParameter<edm::ParameterSet>("beamspot");
602  beamspot_= beamspot.getParameter<edm::InputTag>("src");
603  beamspotSelect_= new StringCutObjectSelector<reco::BeamSpot>(beamspot.getParameter<std::string>("select"));
604  }
605 
606  // conifgure the selection
607  std::vector<edm::ParameterSet> sel=cfg.getParameter<std::vector<edm::ParameterSet> >("selection");
608  for(unsigned int i=0; i<sel.size(); ++i){
609  selectionOrder_.push_back(sel.at(i).getParameter<std::string>("label"));
610  selection_[selectionStep(selectionOrder_.back())] = std::make_pair(sel.at(i), new TopDiLeptonOffline::MonitorEnsemble(selectionStep(selectionOrder_.back()).c_str(), cfg.getParameter<edm::ParameterSet>("setup")));
611  }
612 }
T getParameter(std::string const &) const
int i
Definition: DBlmapReader.cc:9
StringCutObjectSelector< reco::BeamSpot > * beamspotSelect_
string cut selector
bool existsAs(std::string const &parameterName, bool trackiness=true) const
checks if a parameter exists as a given type
Definition: ParameterSet.h:187
std::string selectionStep(const std::string &label)
std::vector< std::string > selectionOrder_
edm::InputTag triggerTable_
trigger table
std::vector< std::string > triggerPaths_
trigger paths
StringCutObjectSelector< reco::Vertex > * vertexSelect_
string cut selector
std::map< std::string, std::pair< edm::ParameterSet, TopDiLeptonOffline::MonitorEnsemble * > > selection_
edm::InputTag beamspot_
beamspot
edm::InputTag vertex_
primary vertex
TopHLTDiLeptonOfflineDQM::~TopHLTDiLeptonOfflineDQM ( )
inline

default destructor

Definition at line 253 of file TopHLTDiLeptonOfflineDQM.h.

References beamspotSelect_, and vertexSelect_.

253  {
254  if( beamspotSelect_ ) delete beamspotSelect_;
255  if( vertexSelect_ ) delete vertexSelect_;
256  }
StringCutObjectSelector< reco::BeamSpot > * beamspotSelect_
string cut selector
StringCutObjectSelector< reco::Vertex > * vertexSelect_
string cut selector

Member Function Documentation

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

do this during the event loop

Implements edm::EDAnalyzer.

Definition at line 615 of file TopHLTDiLeptonOfflineDQM.cc.

References acceptHLT(), beamspot_, beamspotSelect_, first, edm::Event::getByLabel(), combine::key, edm::InputTag::label(), objectType(), SelectionStepHLT< Object >::select(), selection_, selectionOrder_, selectionStep(), launcher::step, triggerPaths_, triggerTable_, and vertex_.

616 {
617  if(!triggerTable_.label().empty()){
619  if( !event.getByLabel(triggerTable_, triggerTable) ) return;
620  if(!acceptHLT(event, *triggerTable, triggerPaths_)) return;
621  }
622  if(!vertex_.label().empty()){
624  if( !event.getByLabel(vertex_, vertex) ) return;
625  if(vertex->empty() || !(*vertexSelect_)(vertex->front())) return;
626  }
627  if(!beamspot_.label().empty()){
629  if( !event.getByLabel(beamspot_, beamspot) ) return;
630  if(!(*beamspotSelect_)(*beamspot)) return;
631  }
632  // apply selection steps
633  for(std::vector<std::string>::const_iterator selIt=selectionOrder_.begin(); selIt!=selectionOrder_.end(); ++selIt){
634  std::string key = selectionStep(*selIt), type = objectType(*selIt);
635  if(selection_.find(key)!=selection_.end()){
636  if(type=="empty"){
637  selection_[key].second->fill(event, setup);
638  }
639  if(type=="Hlt" ){
640 // cout<<"HLT filled"<<endl;
641  selection_[key].second->fill(event, setup);
642  }
643  if(type=="muons"){
645  if(step.select(event)){
646  selection_[key].second->fill(event, setup);
647  } else break;
648  }
649  if(type=="elecs"){
651  if(step.select(event)){
652  selection_[key].second->fill(event, setup);
653  } else break;
654  }
655  if(type=="jets" ){
657  if(step.select(event, setup)){
658  selection_[key].second->fill(event, setup);
659  } else break;
660  }
661  if(type=="jets/pf" ){
663  if(step.select(event, setup)){
664  selection_[key].second->fill(event, setup);
665  } else break;
666  }
667  if(type=="jets/calo" ){
669  if(step.select(event, setup)){
670  selection_[key].second->fill(event, setup);
671  } else break;
672  }
673  if(type=="met" ){
675  if(step.select(event)){
676  selection_[key].second->fill(event, setup);
677  } else break;
678  }
679  }
680  }
681 }
type
Definition: HCALResponse.h:22
StringCutObjectSelector< reco::BeamSpot > * beamspotSelect_
string cut selector
bool acceptHLT(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
list step
Definition: launcher.py:15
std::string selectionStep(const std::string &label)
std::vector< std::string > selectionOrder_
edm::InputTag triggerTable_
trigger table
std::vector< std::string > triggerPaths_
trigger paths
std::map< std::string, std::pair< edm::ParameterSet, TopDiLeptonOffline::MonitorEnsemble * > > selection_
bool first
Definition: L1TdeRCT.cc:94
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:356
edm::InputTag beamspot_
beamspot
std::string const & label() const
Definition: InputTag.h:25
std::string objectType(const std::string &label)
list key
Definition: combine.py:13
edm::InputTag vertex_
primary vertex
std::string TopHLTDiLeptonOfflineDQM::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 264 of file TopHLTDiLeptonOfflineDQM.h.

Referenced by analyze().

264 { return label.substr(0, label.find(':')); };
std::string TopHLTDiLeptonOfflineDQM::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 267 of file TopHLTDiLeptonOfflineDQM.h.

Referenced by analyze(), and TopHLTDiLeptonOfflineDQM().

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

Member Data Documentation

edm::InputTag TopHLTDiLeptonOfflineDQM::beamspot_
private

beamspot

Definition at line 279 of file TopHLTDiLeptonOfflineDQM.h.

Referenced by analyze(), and TopHLTDiLeptonOfflineDQM().

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

string cut selector

Definition at line 281 of file TopHLTDiLeptonOfflineDQM.h.

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

std::map<std::string, std::pair<edm::ParameterSet, TopDiLeptonOffline::MonitorEnsemble*> > TopHLTDiLeptonOfflineDQM::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 291 of file TopHLTDiLeptonOfflineDQM.h.

Referenced by analyze(), and TopHLTDiLeptonOfflineDQM().

std::vector<std::string> TopHLTDiLeptonOfflineDQM::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 285 of file TopHLTDiLeptonOfflineDQM.h.

Referenced by analyze(), and TopHLTDiLeptonOfflineDQM().

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

trigger paths

Definition at line 273 of file TopHLTDiLeptonOfflineDQM.h.

Referenced by analyze(), and TopHLTDiLeptonOfflineDQM().

edm::InputTag TopHLTDiLeptonOfflineDQM::triggerTable_
private

trigger table

Definition at line 267 of file TopHLTDiLeptonOfflineDQM.h.

Referenced by analyze(), and TopHLTDiLeptonOfflineDQM().

edm::InputTag TopHLTDiLeptonOfflineDQM::vertex_
private

primary vertex

Definition at line 275 of file TopHLTDiLeptonOfflineDQM.h.

Referenced by analyze(), and TopHLTDiLeptonOfflineDQM().

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

string cut selector

Definition at line 277 of file TopHLTDiLeptonOfflineDQM.h.

Referenced by TopHLTDiLeptonOfflineDQM(), and ~TopHLTDiLeptonOfflineDQM().