CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Types | Public Member Functions | Private Member Functions | Private Attributes
HLTExoticaSubAnalysis Class Reference

#include <HLTExoticaSubAnalysis.h>

Public Types

enum  Level { Level::GEN = 98, Level::RECO = 99 }
 

Public Member Functions

void analyze (const edm::Event &iEvent, const edm::EventSetup &iEventSetup, EVTColContainer *cols)
 
void beginJob ()
 
void beginRun (const edm::Run &iRun, const edm::EventSetup &iEventSetup)
 
void endRun ()
 
 HLTExoticaSubAnalysis (const edm::ParameterSet &pset, const std::string &analysisname, edm::ConsumesCollector &&consCollector)
 Constructor. More...
 
void subAnalysisBookHistos (DQMStore::IBooker &iBooker, const edm::Run &iRun, const edm::EventSetup &iSetup)
 
 ~HLTExoticaSubAnalysis ()
 End Constructor. More...
 

Private Member Functions

void bookHist (DQMStore::IBooker &iBooker, const std::string &source, const std::string &objType, const std::string &variable)
 The internal functions to book and fill histograms. More...
 
void fillHist (const std::string &source, const std::string &objType, const std::string &variable, const float &value)
 
void getHandlesToObjects (const edm::Event &iEvent, EVTColContainer *col)
 Gets the collections themselves. More...
 
void getNamesOfObjects (const edm::ParameterSet &anpset)
 Creates the maps that map which collection should come from which label. More...
 
const std::vector< unsigned int > getObjectsType (const std::string &hltpath) const
 closes analyze method More...
 
void initSelector (const unsigned int &objtype)
 Initializes the selectors of the objects based on which object it is. More...
 
void insertCandidates (const unsigned int &objtype, const EVTColContainer *col, std::vector< reco::LeafCandidate > *matches, std::map< int, double > &theSumEt, std::map< int, std::vector< const reco::Track * > > &trkObjs)
 
void registerConsumes (edm::ConsumesCollector &consCollector)
 Registers consumption of objects. More...
 

Private Attributes

std::string _analysisname
 The name of this sub-analysis. More...
 
edm::InputTag _beamSpotLabel
 
edm::EDGetTokenT< reco::BeamSpot_bsToken
 
bool _drop_pt2
 
bool _drop_pt3
 
std::map< std::string,
MonitorElement * > 
_elements
 Structure of the MonitorElements. More...
 
std::map< unsigned int,
std::string > 
_genCut
 gen/rec objects cuts More...
 
std::map< unsigned int,
std::string > 
_genCut_leading
 gen/rec pt-leading objects cuts More...
 
StringCutObjectSelector
< reco::GenMET > * 
_genMETSelector
 
edm::InputTag _genParticleLabel
 
edm::EDGetTokenT
< reco::GenParticleCollection
_genParticleToken
 And also the tokens to get the object collections. More...
 
std::map< unsigned int,
StringCutObjectSelector
< reco::GenParticle > * > 
_genSelectorMap
 
HLTConfigProvider _hltConfig
 Interface to the HLT information. More...
 
std::set< std::string > _hltPaths
 The hlt paths found in the hltConfig. More...
 
std::vector< std::string > _hltPathsToCheck
 The hlt paths to check for. More...
 
std::string _hltProcessName
 The labels of the object collections to be used in this analysis. More...
 
StringCutObjectSelector
< l1extra::L1EtMissParticle > * 
_l1METSelector
 
unsigned int _minCandidates
 The minimum number of reco/gen candidates needed by the analysis. More...
 
std::vector< double > _parametersDxy
 
std::vector< double > _parametersEta
 Some kinematical parameters. More...
 
std::vector< double > _parametersPhi
 
std::vector< double > _parametersTurnOn
 
std::vector< double > _parametersTurnOnSumEt
 
std::vector< HLTExoticaPlotter_plotters
 The plotters: managers of each hlt path where the plots are done. More...
 
edm::ParameterSet _pset
 Internal, working copy of the PSet passed from above. More...
 
StringCutObjectSelector
< reco::CaloJet > * 
_recCaloJetSelector
 
StringCutObjectSelector
< reco::CaloMET > * 
_recCaloMETSelector
 
StringCutObjectSelector
< reco::CaloMET > * 
_recCaloMHTSelector
 
std::map< unsigned int,
std::string > 
_recCut
 
std::map< unsigned int,
std::string > 
_recCut_leading
 
StringCutObjectSelector
< reco::GsfElectron > * 
_recElecSelector
 
std::map< unsigned int,
edm::InputTag
_recLabels
 
StringCutObjectSelector
< reco::MET > * 
_recMETSelector
 
StringCutObjectSelector
< reco::Muon > * 
_recMuonSelector
 
StringCutObjectSelector
< reco::Track > * 
_recMuonTrkSelector
 
StringCutObjectSelector
< reco::PFJet > * 
_recPFJetSelector
 
StringCutObjectSelector
< reco::PFMET > * 
_recPFMETSelector
 
StringCutObjectSelector
< reco::PFMET > * 
_recPFMHTSelector
 
StringCutObjectSelector
< reco::PFTau > * 
_recPFTauSelector
 
StringCutObjectSelector
< reco::Photon > * 
_recPhotonSelector
 
StringCutObjectSelector
< reco::Track > * 
_recTrackSelector
 
std::map< std::string,
std::string > 
_shortpath2long
 Relation between the short and long versions of the path. More...
 
std::map< unsigned int,
edm::EDGetToken
_tokens
 
std::map< std::string, int > _triggerCounter
 counting HLT passed events More...
 
edm::InputTag _trigResultsLabel
 
edm::EDGetTokenT
< edm::TriggerResults
_trigResultsToken
 

Detailed Description

This class is the main workhorse of the package. It makes the histograms for one given analysis, taking care of all HLT paths related to that analysis.

Generate histograms for trigger efficiencies Exotica related Documentation available on the CMS TWiki: https://twiki.cern.ch/twiki/bin/view/CMS/EXOTICATriggerValidation

Author
Thiago R. Fernandez Perez Tomei Based and adapted from: J. Duarte Campderros code from HLTriggerOffline/Higgs J. Klukas, M. Vander Donckt and J. Alcaraz code from the HLTriggerOffline/Muon package.

Definition at line 66 of file HLTExoticaSubAnalysis.h.

Member Enumeration Documentation

Enumerator
GEN 
RECO 

Definition at line 68 of file HLTExoticaSubAnalysis.h.

68  {
69  GEN = 98,
70  RECO = 99
71  };

Constructor & Destructor Documentation

HLTExoticaSubAnalysis::HLTExoticaSubAnalysis ( const edm::ParameterSet pset,
const std::string &  analysisname,
edm::ConsumesCollector &&  consCollector 
)

Constructor.

Get the vector of paths to check, for this particular analysis.

Get the minimum candidates, for this particular analysis.

Definition at line 28 of file HLTExoticaSubAnalysis.cc.

References _drop_pt2, _drop_pt3, _genCut, _genCut_leading, _hltPathsToCheck, _minCandidates, _parametersDxy, _parametersEta, _parametersPhi, _parametersTurnOn, _parametersTurnOnSumEt, _pset, _recCut, _recCut_leading, _recLabels, edm::ParameterSet::exists(), edm::ParameterSet::existsAs(), getNamesOfObjects(), edm::ParameterSet::getParameter(), EVTColContainer::getTypeString(), edm::ParameterSet::getUntrackedParameter(), edm::ParameterSet::insert(), LogDebug, registerConsumes(), edm::ParameterSet::retrieve(), and AlCaHLTBitMon_QueryRunRegistry::string.

30  :
31  _pset(pset),
32  _analysisname(analysisname),
33  _minCandidates(0),
34  _hltProcessName(pset.getParameter<std::string>("hltProcessName")),
35  _genParticleLabel(pset.getParameter<std::string>("genParticleLabel")),
36  _trigResultsLabel("TriggerResults", "", _hltProcessName),
37  _beamSpotLabel(pset.getParameter<std::string>("beamSpotLabel")),
38  _parametersEta(pset.getParameter<std::vector<double> >("parametersEta")),
39  _parametersPhi(pset.getParameter<std::vector<double> >("parametersPhi")),
40  _parametersTurnOn(pset.getParameter<std::vector<double> >("parametersTurnOn")),
41  _parametersTurnOnSumEt(pset.getParameter<std::vector<double> >("parametersTurnOnSumEt")),
42  _parametersDxy(pset.getParameter<std::vector<double> >("parametersDxy")),
43  _drop_pt2(false),
44  _drop_pt3(false),
49  _recMETSelector(0),
52  _genMETSelector(0),
55  _l1METSelector(0),
60 {
61 
62  LogDebug("ExoticaValidation") << "In HLTExoticaSubAnalysis::constructor()";
63 
64  // Specific parameters for this analysis
65  edm::ParameterSet anpset = pset.getParameter<edm::ParameterSet>(analysisname);
66 
67  // If this analysis has a particular set of binnings, use it.
68  // (Taken from the analysis-specific parameter set, of course)
69  // The "true" in the beginning of _pset.insert() means
70  // "overwrite the parameter if need be".
71  if (anpset.exists("parametersTurnOn")) {
72  _parametersTurnOn = anpset.getParameter<std::vector<double> >("parametersTurnOn");
73  _pset.insert(true, "parametersTurnOn", anpset.retrieve("parametersTurnOn"));
74  }
75  if (anpset.exists("parametersEta")) {
76  _parametersEta = anpset.getParameter<std::vector<double> >("parametersEta");
77  _pset.insert(true, "parametersEta", anpset.retrieve("parametersEta"));
78  }
79  if (anpset.exists("parametersPhi")) {
80  _parametersPhi = anpset.getParameter<std::vector<double> >("parametersPhi");
81  _pset.insert(true, "parametersPhi", anpset.retrieve("parametersPhi"));
82  }
83  if (anpset.exists("parametersDxy")) {
84  _parametersDxy = anpset.getParameter<std::vector<double> >("parametersDxy");
85  _pset.insert(true, "parametersDxy", anpset.retrieve("parametersDxy"));
86  }
87  if (anpset.exists("parametersTurnOnSumEt")) {
88  _parametersTurnOnSumEt = anpset.getParameter<std::vector<double> >("parametersTurnOnSumEt");
89  _pset.insert(true, "parametersTurnOnSumEt", anpset.retrieve("parametersTurnOnSumEt"));
90  }
91  if (anpset.exists("dropPt2")) {
92  _drop_pt2 = anpset.getParameter<bool>("dropPt2");
93  _pset.insert(true, "dropPt2", anpset.retrieve("dropPt2"));
94  }
95  if (anpset.exists("dropPt3")) {
96  _drop_pt3 = anpset.getParameter<bool>("dropPt3");
97  _pset.insert(true, "dropPt3", anpset.retrieve("dropPt3"));
98  }
99 
100  // Get names of objects that we may want to get from the event.
101  // Notice that genParticles are dealt with separately.
102  this->getNamesOfObjects(anpset);
103 
104  // Since now we have the names, we should register the consumption
105  // of objects.
106  this->registerConsumes(consCollector);
107 
108  // Generic objects: Initialization of basic phase space cuts.
109  for (std::map<unsigned int, edm::InputTag>::const_iterator it = _recLabels.begin();
110  it != _recLabels.end(); ++it) {
111  const std::string objStr = EVTColContainer::getTypeString(it->first);
112  _genCut[it->first] = pset.getParameter<std::string>(objStr + "_genCut");
113  _recCut[it->first] = pset.getParameter<std::string>(objStr + "_recCut");
114  auto const genCutParam = objStr + "_genCut_leading";
115  if (pset.exists(genCutParam)) {
116  _genCut_leading[it->first] = pset.getParameter<std::string>(genCutParam);
117  } else {
118  _genCut_leading[it->first] = "pt>0"; // no cut
119  }
120  auto const recCutParam = objStr + "_recCut_leading";
121  if (pset.exists(recCutParam)) {
122  _recCut_leading[it->first] = pset.getParameter<std::string>(recCutParam);
123  } else {
124  _recCut_leading[it->first] = "pt>0"; // no cut
125  }
126  }
127 
128  //--- Updating parameters if has to be modified for this particular specific analysis
129  for (std::map<unsigned int, edm::InputTag>::const_iterator it = _recLabels.begin();
130  it != _recLabels.end(); ++it) {
131  const std::string objStr = EVTColContainer::getTypeString(it->first);
132 
133  auto const genCutParam = objStr + "_genCut";
134  if(anpset.existsAs<std::string>(genCutParam,false) ) {
135  _genCut[it->first] = anpset.getUntrackedParameter<std::string>(genCutParam);
136  }
137 
138  auto const recCutParam = objStr + "_recCut";
139  if(anpset.existsAs<std::string>(recCutParam,false) ) {
140  _recCut[it->first] = anpset.getUntrackedParameter<std::string>(recCutParam);
141  }
142 
143  }
144 
146  _hltPathsToCheck = anpset.getParameter<std::vector<std::string> >("hltPathsToCheck");
148  _minCandidates = anpset.getParameter<unsigned int>("minCandidates");
149 
150 }
#define LogDebug(id)
StringCutObjectSelector< reco::Track > * _recMuonTrkSelector
T getParameter(std::string const &) const
unsigned int _minCandidates
The minimum number of reco/gen candidates needed by the analysis.
Entry const & retrieve(char const *) const
T getUntrackedParameter(std::string const &, T const &) const
void getNamesOfObjects(const edm::ParameterSet &anpset)
Creates the maps that map which collection should come from which label.
bool existsAs(std::string const &parameterName, bool trackiness=true) const
checks if a parameter exists as a given type
Definition: ParameterSet.h:186
std::map< unsigned int, std::string > _genCut
gen/rec objects cuts
bool exists(std::string const &parameterName) const
checks if a parameter exists
StringCutObjectSelector< reco::CaloJet > * _recCaloJetSelector
StringCutObjectSelector< reco::GenMET > * _genMETSelector
std::vector< double > _parametersPhi
void insert(bool ok_to_replace, char const *, Entry const &)
StringCutObjectSelector< reco::MET > * _recMETSelector
std::map< unsigned int, std::string > _genCut_leading
gen/rec pt-leading objects cuts
StringCutObjectSelector< reco::PFJet > * _recPFJetSelector
std::map< unsigned int, edm::InputTag > _recLabels
StringCutObjectSelector< reco::GsfElectron > * _recElecSelector
std::map< unsigned int, std::string > _recCut_leading
StringCutObjectSelector< reco::Muon > * _recMuonSelector
edm::ParameterSet _pset
Internal, working copy of the PSet passed from above.
std::vector< double > _parametersEta
Some kinematical parameters.
std::map< unsigned int, std::string > _recCut
std::vector< double > _parametersDxy
StringCutObjectSelector< reco::Track > * _recTrackSelector
std::vector< std::string > _hltPathsToCheck
The hlt paths to check for.
StringCutObjectSelector< reco::CaloMET > * _recCaloMHTSelector
std::string _hltProcessName
The labels of the object collections to be used in this analysis.
void registerConsumes(edm::ConsumesCollector &consCollector)
Registers consumption of objects.
StringCutObjectSelector< reco::PFMET > * _recPFMETSelector
std::string _analysisname
The name of this sub-analysis.
StringCutObjectSelector< reco::Photon > * _recPhotonSelector
StringCutObjectSelector< l1extra::L1EtMissParticle > * _l1METSelector
std::vector< double > _parametersTurnOn
StringCutObjectSelector< reco::CaloMET > * _recCaloMETSelector
std::vector< double > _parametersTurnOnSumEt
static const std::string getTypeString(const unsigned int &objtype)
Tranform types into strings.
StringCutObjectSelector< reco::PFMET > * _recPFMHTSelector
StringCutObjectSelector< reco::PFTau > * _recPFTauSelector
HLTExoticaSubAnalysis::~HLTExoticaSubAnalysis ( )

End Constructor.

Definition at line 152 of file HLTExoticaSubAnalysis.cc.

References _genMETSelector, _genSelectorMap, _l1METSelector, _recCaloJetSelector, _recCaloMETSelector, _recCaloMHTSelector, _recElecSelector, _recMETSelector, _recMuonSelector, _recMuonTrkSelector, _recPFJetSelector, _recPFMETSelector, _recPFMHTSelector, _recPFTauSelector, _recPhotonSelector, and _recTrackSelector.

153 {
154  for (std::map<unsigned int, StringCutObjectSelector<reco::GenParticle>* >::iterator it = _genSelectorMap.begin();
155  it != _genSelectorMap.end(); ++it) {
156  delete it->second;
157  it->second = 0;
158  }
159  delete _recMuonSelector;
160  _recMuonSelector = 0;
161  delete _recMuonTrkSelector;
163  delete _recTrackSelector;
164  _recTrackSelector = 0;
165  delete _recElecSelector;
166  _recElecSelector = 0;
167  delete _recPhotonSelector;
168  _recPhotonSelector = 0;
169  delete _recMETSelector;
170  _recMETSelector = 0;
171  delete _recPFMETSelector;
172  _recPFMETSelector = 0;
173  delete _recPFMHTSelector;
174  _recPFMHTSelector = 0;
175  delete _genMETSelector;
176  _genMETSelector = 0;
177  delete _recCaloMETSelector;
179  delete _recCaloMHTSelector;
181  delete _l1METSelector;
182  _l1METSelector = 0;
183  delete _recPFTauSelector;
184  _recPFTauSelector = 0;
185  delete _recPFJetSelector;
186  _recPFJetSelector = 0;
187  delete _recCaloJetSelector;
189 }
StringCutObjectSelector< reco::Track > * _recMuonTrkSelector
StringCutObjectSelector< reco::CaloJet > * _recCaloJetSelector
StringCutObjectSelector< reco::GenMET > * _genMETSelector
StringCutObjectSelector< reco::MET > * _recMETSelector
StringCutObjectSelector< reco::PFJet > * _recPFJetSelector
StringCutObjectSelector< reco::GsfElectron > * _recElecSelector
StringCutObjectSelector< reco::Muon > * _recMuonSelector
StringCutObjectSelector< reco::Track > * _recTrackSelector
StringCutObjectSelector< reco::CaloMET > * _recCaloMHTSelector
StringCutObjectSelector< reco::PFMET > * _recPFMETSelector
StringCutObjectSelector< reco::Photon > * _recPhotonSelector
std::map< unsigned int, StringCutObjectSelector< reco::GenParticle > * > _genSelectorMap
StringCutObjectSelector< l1extra::L1EtMissParticle > * _l1METSelector
StringCutObjectSelector< reco::CaloMET > * _recCaloMETSelector
StringCutObjectSelector< reco::PFMET > * _recPFMHTSelector
StringCutObjectSelector< reco::PFTau > * _recPFTauSelector

Member Function Documentation

void HLTExoticaSubAnalysis::analyze ( const edm::Event iEvent,
const edm::EventSetup iEventSetup,
EVTColContainer cols 
)

Method to fill all relevant histograms. Notice that we update the EVTColContaner to point to the collections we want.

We are going to make a fake reco::LeafCandidate, with our particleType as the pdgId. This is an alternative to the older implementation with MatchStruct.

Filling the histograms if pass the minimum amount of candidates needed by the analysis:

GEN CASE ///

Close GEN case

RECO CASE ///

Debugging.

Close RECO case

Definition at line 385 of file HLTExoticaSubAnalysis.cc.

References _drop_pt2, _drop_pt3, _genCut, _genCut_leading, _genSelectorMap, _minCandidates, _plotters, _recCut_leading, _recLabels, _shortpath2long, _triggerCounter, edm::HLTGlobalStatus::accept(), EVTColContainer::bs, funct::cos(), EVTColContainer::ELEC, eta, fillHist(), EVTColContainer::genParticles, getHandlesToObjects(), EVTColContainer::getTypeString(), i, initSelector(), insertCandidates(), j, findQualityFiles::jj, LogDebug, EVTColContainer::MUON, EVTColContainer::MUTRK, reco::Candidate::p4(), phi, reco::BeamSpot::position(), EnergyCorrector::pt, edm::second(), benchmark_cfg::select, funct::sin(), findQualityFiles::size, AlCaHLTBitMon_QueryRunRegistry::string, edm::TriggerNames::triggerIndex(), edm::Event::triggerNames(), EVTColContainer::triggerResults, trigNames, findQualityFiles::v, reco::Candidate::vertex(), reco::BeamSpot::x0(), and reco::BeamSpot::y0().

386 {
387  LogDebug("ExoticaValidation") << "In HLTExoticaSubAnalysis::analyze()";
388 
389  // Loop over _recLabels to make sure everything is alright.
390  /*
391  std::cout << "Now printing the _recLabels" << std::endl;
392  for (std::map<unsigned int, edm::InputTag>::iterator it = _recLabels.begin();
393  it != _recLabels.end(); ++it) {
394  std::cout << "Number: " << it->first << "\t" << "Label: " << it->second.label() << std::endl;
395  }
396  */
397 
398  // Initialize the collection (the ones which have not been initialiazed yet)
399  //std::cout << "Setting handles to objects..." << std::endl;
400  this->getHandlesToObjects(iEvent, cols);
401 
402  // Utility map, mapping kinds of objects (GEN, RECO) to strings ("gen","rec")
403  //std::map<Level, std::string> u2str;
404  //u2str[Level::GEN] = "gen";
405  //u2str[Level::RECO] = "rec";
406 
407  // Extract the match structure containing the gen/reco candidates (electron, muons,...). This part is common to all the SubAnalyses
408  std::vector<reco::LeafCandidate> matchesGen; matchesGen.clear();
409  std::vector<reco::LeafCandidate> matchesReco; matchesReco.clear();
410  std::map<int , double> theSumEt; // map< pdgId ; SumEt > in order to keep track of the MET type
411  std::map<int, std::vector<const reco::Track*> > trkObjs;
412 
413  // --- deal with GEN objects first.
414  // Make each good GEN object into the base cand for a MatchStruct
415  // Our definition of "good" is "passes the selector" defined in the config.py
416  // Save all the MatchStructs in the "matchesGen" vector.
417 
418  for (std::map<unsigned int, edm::InputTag>::iterator it = _recLabels.begin();
419  it != _recLabels.end(); ++it) {
420  // Here we are filling the vector of StringCutObjectSelector<reco::GenParticle>
421  // with objects constructed from the strings saved in _genCut.
422  // Initialize selectors when first event
423 
424  //std::cout << "Loop over the kinds of objects: objects of kind " << it->first << std::endl;
425 
426 
427  if (!_genSelectorMap[it->first]) {
429  }
430 
431  const std::string objTypeStr = EVTColContainer::getTypeString(it->first);
432  // genAnyMET doesn't make sense. No need their matchesGens
433  if ( TString(objTypeStr).Contains("MET") ||
434  TString(objTypeStr).Contains("MHT") ||
435  TString(objTypeStr).Contains("Jet") ) continue;
436 
437  // Now loop over the genParticles, and apply the operator() over each of them.
438  // Fancy syntax: for objects X and Y, X.operator()(Y) is the same as X(Y).
439  for (size_t i = 0; i < cols->genParticles->size(); ++i) {
440  //std::cout << "Now matchesGen.size() is " << matchesGen.size() << std::endl;
441  if (_genSelectorMap[it->first]->operator()(cols->genParticles->at(i))) {
442  const reco::Candidate* cand = &(cols->genParticles->at(i));
443  //std::cout << "Found good cand: cand->pt() = " << cand->pt() << std::endl;
444  //matchesGen.push_back(MatchStruct(cand, it->first));
447  reco::LeafCandidate v(0,cand->p4(),cand->vertex(),it->first,0,true);
448 
449  matchesGen.push_back(v);
450  }
451  }
452  }
453 
454  // Sort the matches by pT for later filling of turn-on curve
455  //std::cout << "Before sorting: matchesGen.size() = " << matchesGen.size() << std::endl;
456 
457  // GreaterByPt<reco::LeafCandidate> comparator;
458  // std::sort(matchesGen.begin(),
459  // matchesGen.end(),
460  // comparator);
461 
462  // --- same for RECO objects
463  // Extraction of the objects candidates
464  if(verbose>0) LogDebug("ExoticaValidation") << "-- enter loop over recLabels" ;
465  for (std::map<unsigned int, edm::InputTag>::iterator it = _recLabels.begin();
466  it != _recLabels.end(); ++it) {
467  //std::cout << "Filling RECO \"matchesReco\" vector for particle kind it->first = "
468  // << it->first << ", which means " << it->second.label() << std::endl;
469  // Reco selectors (the function takes into account if it was instantiated
470  // before or not) ### Thiago ---> Then why don't we put it in the beginRun???
471  this->initSelector(it->first);
472  // -- Storing the matchesReco
473  this->insertCandidates(it->first, cols, &matchesReco, theSumEt, trkObjs);
474  if(verbose>0) LogDebug("ExoticaValidation") << "--- " << EVTColContainer::getTypeString(it->first)
475  << " sumEt=" << theSumEt[it->first] ;
476  }
477 
478  // std::sort(matchesReco.begin(),
479  // matchesReco.end(),
480  // comparator);
481 
482  // -- Trigger Results
483  const edm::TriggerNames trigNames = iEvent.triggerNames(*(cols->triggerResults));
484 
485  // counting HLT passed events for debugging
486  for (std::vector<HLTExoticaPlotter>::iterator an = _plotters.begin(); an != _plotters.end(); ++an) {
487  const std::string hltPath = _shortpath2long[an->gethltpath()];
488  const bool ispassTrigger = cols->triggerResults->accept(trigNames.triggerIndex(hltPath));
489  if (ispassTrigger) _triggerCounter.find(an->gethltpath())->second++;
490  }
491 
493 
494  //for (std::map<unsigned int, std::vector<MatchStruct> >::iterator it = sourceMatchMap.begin(); it != sourceMatchMap.end(); ++it) {
495  // it->first: gen/reco it->second: HLT matches (std::vector<MatchStruct>)
496 
497  //if (it->second.size() < _minCandidates) { // FIXME: A bug is potentially here: what about the mixed channels?
498  //continue;
499  //}
500 
504  if( matchesGen.size() >= _minCandidates) { // FIXME: A bug is potentially here: what about the mixed channels?
505  // Okay, there are enough candidates. Move on!
506 
507  // Filling the gen/reco objects (eff-denominators):
508  // Just the first two different ones, if there are more
509  // The countobjects maps uints (object types, really) --> integers.
510  // Example:
511  // | uint | int |
512  // | 0 | 1 | --> 1 muon used
513  // | 1 | 2 | --> 2 electrons used
514 
515  // Initializing the count of the used objects.
516  std::map<unsigned int, int> countobjects;
517  for (std::map<unsigned int, edm::InputTag>::iterator co = _recLabels.begin();
518  co != _recLabels.end(); ++co) {
519  //countobjects->insert(std::pair<unsigned int, int>(co->first, 0));
520  countobjects.insert(std::pair<unsigned int, int>(co->first, 0));
521  }
522 
523  int counttotal = 0;
524 
525  // 3 : pt1, pt2, pt3
526  int totalobjectssize = 1;
527  if (!_drop_pt2) totalobjectssize++;
528  if (!_drop_pt3) totalobjectssize++;
529  totalobjectssize *= countobjects.size();
530 
531 
532  bool isPassedLeadingCut = true;
533  // We will proceed only when cuts for the pt-leading are satisified.
534  for (size_t j = 0; j != matchesGen.size(); ++j) {
535  const unsigned int objType = matchesGen[j].pdgId();
536  // Cut for the pt-leading object
538  if ( !select( matchesGen[j] ) ) { // No interest case
539  isPassedLeadingCut = false; // Will skip the following matchesGen loop
540  matchesGen.clear();
541  break;
542  }
543  }
544 
545  std::vector<float> dxys; dxys.clear();
546 
547  for (size_t j = 0; ( j != matchesGen.size() ) && isPassedLeadingCut; ++j) {
548  const unsigned int objType = matchesGen[j].pdgId();
549  //std::cout << "(4) Gonna call with " << objType << std::endl;
550  const std::string objTypeStr = EVTColContainer::getTypeString(objType);
551 
552  float pt = matchesGen[j].pt();
553 
554  if (countobjects[objType] == 0) {
555  this->fillHist("gen", objTypeStr, "MaxPt1", pt);
556  ++(countobjects[objType]);
557  ++counttotal;
558  }
559  else if (countobjects[objType] == 1 && !_drop_pt2) {
560  this->fillHist("gen", objTypeStr, "MaxPt2", pt);
561  ++(countobjects[objType]);
562  ++counttotal;
563  }
564  else if (countobjects[objType] == 2 && !_drop_pt3) {
565  this->fillHist("gen", objTypeStr, "MaxPt3", pt);
566  ++(countobjects[objType]);
567  ++counttotal;
568  }
569  else {
570  // Already the minimum three objects has been filled, get out...
571  if (counttotal == totalobjectssize) {
572  size_t max_size = matchesGen.size();
573  for ( size_t jj = j; jj < max_size; jj++ ) {
574  matchesGen.erase(matchesGen.end());
575  }
576  break;
577  }
578  }
579 
580  float eta = matchesGen[j].eta();
581  float phi = matchesGen[j].phi();
582 
583  this->fillHist("gen", objTypeStr, "Eta", eta);
584  this->fillHist("gen", objTypeStr, "Phi", phi);
585 
586  // If the target is electron or muon,
587 
588  if ( objType == EVTColContainer::MUON ||
589  objType == EVTColContainer::MUTRK ||
590  objType == EVTColContainer::ELEC ) {
591  const math::XYZPoint & vtx = matchesGen[j].vertex();
592  float momphi = matchesGen[j].momentum().phi();
593  float dxyGen = (-(vtx.x()-cols->bs->x0())*sin(momphi)+(vtx.y()-cols->bs->y0())*cos(momphi));
594  dxys.push_back(dxyGen);
595  this->fillHist("gen", objTypeStr, "Dxy", dxyGen);
596  }
597 
598  } // Closes loop in gen
599 
600  // Calling to the plotters analysis (where the evaluation of the different trigger paths are done)
601  //const std::string source = "gen";
602  for (std::vector<HLTExoticaPlotter>::iterator an = _plotters.begin(); an != _plotters.end(); ++an) {
603  const std::string hltPath = _shortpath2long[an->gethltpath()];
604  const bool ispassTrigger = cols->triggerResults->accept(trigNames.triggerIndex(hltPath));
605  LogDebug("ExoticaValidation") << " preparing to call the plotters analysis";
606  an->analyze(ispassTrigger, "gen", matchesGen, theSumEt, dxys);
607  LogDebug("ExoticaValidation") << " called the plotter";
608  }
609  }
610 
614 
615  {
616  if(matchesReco.size() < _minCandidates) return; // FIXME: A bug is potentially here: what about the mixed channels?
617 
618  // Okay, there are enough candidates. Move on!
619 
620  // Filling the gen/reco objects (eff-denominators):
621  // Just the first two different ones, if there are more
622  // The countobjects maps uints (object types, really) --> integers.
623  // Example:
624  // | uint | int |
625  // | 0 | 1 | --> 1 muon used
626  // | 1 | 2 | --> 2 electrons used
627  // Initializing the count of the used objects.
628  //std::map<unsigned int, int> * countobjects = new std::map<unsigned int, int>;
629  std::map<unsigned int, int> countobjects;
630  for (std::map<unsigned int, edm::InputTag>::iterator co = _recLabels.begin();
631  co != _recLabels.end(); ++co) {
632  countobjects.insert(std::pair<unsigned int, int>(co->first, 0));
633  }
634 
635  int counttotal = 0;
636 
637  // 3 : pt1, pt2, pt3
638  int totalobjectssize = 1;
639  if (!_drop_pt2) totalobjectssize++;
640  if (!_drop_pt3) totalobjectssize++;
641  totalobjectssize *= countobjects.size();
642 
644  //std::cout << "Our RECO vector has matchesReco.size() = " << matchesReco.size() << std::endl;
645 
646  std::vector<float> dxys; dxys.clear();
647 
648  bool isPassedLeadingCut = true;
649  // We will proceed only when cuts for the pt-leading are satisified.
650  for (size_t j = 0; j != matchesReco.size(); ++j) {
651  const unsigned int objType = matchesReco[j].pdgId();
652  // Cut for the pt-leading object
654  if ( !select( matchesReco[j] ) ) { // No interest case
655  isPassedLeadingCut = false; // Will skip the following matchesReco loop
656  matchesReco.clear();
657  break;
658  }
659  }
660 
661  for (size_t j = 0; ( j != matchesReco.size() ) && isPassedLeadingCut; ++j) {
662  const unsigned int objType = matchesReco[j].pdgId();
663  //std::cout << "(4) Gonna call with " << objType << std::endl;
664  const std::string objTypeStr = EVTColContainer::getTypeString(objType);
665 
666  float pt = matchesReco[j].pt();
667 
668  if (countobjects[objType] == 0) {
669  this->fillHist("rec", objTypeStr, "MaxPt1", pt);
670  ++(countobjects[objType]);
671  ++counttotal;
672  }
673  else if (countobjects[objType] == 1 && !_drop_pt2) {
674  if( ! ( TString(objTypeStr).Contains("MET") || TString(objTypeStr).Contains("MHT") ) ) {
675  this->fillHist("rec", objTypeStr, "MaxPt2", pt);
676  }
677  ++(countobjects[objType]);
678  ++counttotal;
679  }
680  else if (countobjects[objType] == 2 && !_drop_pt3) {
681  if( ! ( TString(objTypeStr).Contains("MET") || TString(objTypeStr).Contains("MHT") ) ) {
682  this->fillHist("rec", objTypeStr, "MaxPt3", pt);
683  }
684  ++(countobjects[objType]);
685  ++counttotal;
686  }
687  else {
688  // Already the minimum three objects has been filled, get out...
689  if (counttotal == totalobjectssize) {
690  size_t max_size = matchesReco.size();
691  for ( size_t jj = j; jj < max_size; jj++ ) {
692  matchesReco.erase(matchesReco.end());
693  }
694  break;
695  }
696  }
697 
698  float eta = matchesReco[j].eta();
699  float phi = matchesReco[j].phi();
700 
701  if ( !( TString(objTypeStr).Contains("MET") || TString(objTypeStr).Contains("MHT") ) ) {
702  this->fillHist("rec", objTypeStr, "Eta", eta);
703  this->fillHist("rec", objTypeStr, "Phi", phi);
704  }
705  else {
706  this->fillHist("rec", objTypeStr, "SumEt", theSumEt[objType]);
707  }
708 
709  if (trkObjs[objType].size()>=j+1) {
710  float dxyRec = trkObjs[objType].at(j)->dxy(cols->bs->position());
711  this->fillHist("rec", objTypeStr, "Dxy", dxyRec);
712  dxys.push_back(dxyRec);
713  }
714 
715  } // Closes loop in reco
716 
717  //LogDebug("ExoticaValidation") << " deleting countobjects";
718  //delete countobjects;
719 
720  // Calling to the plotters analysis (where the evaluation of the different trigger paths are done)
721  //const std::string source = "reco";
722  for (std::vector<HLTExoticaPlotter>::iterator an = _plotters.begin(); an != _plotters.end(); ++an) {
723  const std::string hltPath = _shortpath2long[an->gethltpath()];
724  const bool ispassTrigger = cols->triggerResults->accept(trigNames.triggerIndex(hltPath));
725  LogDebug("ExoticaValidation") << " preparing to call the plotters analysis";
726  an->analyze(ispassTrigger, "rec", matchesReco, theSumEt, dxys);
727  LogDebug("ExoticaValidation") << " called the plotter";
728  }
729  }
730 
731 }
#define LogDebug(id)
unsigned int _minCandidates
The minimum number of reco/gen candidates needed by the analysis.
int i
Definition: DBlmapReader.cc:9
virtual edm::TriggerNames const & triggerNames(edm::TriggerResults const &triggerResults) const
Definition: Event.cc:215
std::map< std::string, int > _triggerCounter
counting HLT passed events
std::map< unsigned int, std::string > _genCut
gen/rec objects cuts
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
bool accept() const
Has at least one path accepted the event?
std::vector< HLTExoticaPlotter > _plotters
The plotters: managers of each hlt path where the plots are done.
void fillHist(const std::string &source, const std::string &objType, const std::string &variable, const float &value)
const reco::GenParticleCollection * genParticles
std::map< unsigned int, std::string > _genCut_leading
gen/rec pt-leading objects cuts
U second(std::pair< T, U > const &p)
std::map< unsigned int, edm::InputTag > _recLabels
std::map< unsigned int, std::string > _recCut_leading
unsigned int triggerIndex(std::string const &name) const
Definition: TriggerNames.cc:32
const reco::BeamSpot * bs
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
int j
Definition: DBlmapReader.cc:9
virtual const Point & vertex() const =0
vertex position
static const char *const trigNames[]
Definition: EcalDumpRaw.cc:74
void getHandlesToObjects(const edm::Event &iEvent, EVTColContainer *col)
Gets the collections themselves.
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:12
std::map< unsigned int, StringCutObjectSelector< reco::GenParticle > * > _genSelectorMap
double y0() const
y coordinate
Definition: BeamSpot.h:66
const Point & position() const
position
Definition: BeamSpot.h:62
void initSelector(const unsigned int &objtype)
Initializes the selectors of the objects based on which object it is.
static const std::string getTypeString(const unsigned int &objtype)
Tranform types into strings.
const edm::TriggerResults * triggerResults
tuple size
Write out results.
std::map< std::string, std::string > _shortpath2long
Relation between the short and long versions of the path.
void insertCandidates(const unsigned int &objtype, const EVTColContainer *col, std::vector< reco::LeafCandidate > *matches, std::map< int, double > &theSumEt, std::map< int, std::vector< const reco::Track * > > &trkObjs)
double x0() const
x coordinate
Definition: BeamSpot.h:64
virtual const LorentzVector & p4() const =0
four-momentum Lorentz vector
void HLTExoticaSubAnalysis::beginJob ( void  )

Definition at line 192 of file HLTExoticaSubAnalysis.cc.

193 {
194 }
void HLTExoticaSubAnalysis::beginRun ( const edm::Run iRun,
const edm::EventSetup iEventSetup 
)

Construct the plotters right here. For that we need to create the _hltPaths vector.

Definition at line 278 of file HLTExoticaSubAnalysis.cc.

References _analysisname, _hltConfig, _hltPaths, _hltPathsToCheck, _hltProcessName, _plotters, _pset, _recLabels, _shortpath2long, _triggerCounter, newFWLiteAna::found, i, HLTConfigProvider::init(), j, LogDebug, LogTrace, fed_dqm_sourceclient-live_cfg::path, listBenchmarks::pattern, AlCaHLTBitMon_QueryRunRegistry::string, and HLTConfigProvider::triggerNames().

279 {
280 
281  LogDebug("ExoticaValidation") << "In HLTExoticaSubAnalysis::beginRun()";
282 
285 
286  // Initialize the HLT config.
287  bool changedConfig(true);
288  if (!_hltConfig.init(iRun, iSetup, _hltProcessName, changedConfig)) {
289  edm::LogError("ExoticaValidation") << "HLTExoticaSubAnalysis::constructor(): "
290  << "Initialization of HLTConfigProvider failed!";
291  }
292 
293  // Parse the input paths to get them if they are in the table and associate
294  // them to the last filter of the path (in order to extract the objects).
295  _hltPaths.clear();
296  for (size_t i = 0; i < _hltPathsToCheck.size(); ++i) {
297  bool found = false;
298  TPRegexp pattern(_hltPathsToCheck[i]);
299 
300  // Loop over triggerNames from _hltConfig
301  for (size_t j = 0 ; j < _hltConfig.triggerNames().size(); ++j) {
302  std::string thetriggername = _hltConfig.triggerNames()[j];
303  if (TString(thetriggername).Contains(pattern)) {
304  _hltPaths.insert(thetriggername);
305  found = true;
306  }
307  if(verbose>2 && i==0)
308  LogDebug("ExoticaValidation") << "--- TRIGGER PATH : " << thetriggername;
309  }
310 
311  // Oh dear, the path we wanted seems to not be available
312  if (! found && verbose>2) {
313  edm::LogWarning("ExoticaValidation") << "HLTExoticaSubAnalysis::constructor(): In "
314  << _analysisname << " subfolder NOT found the path: '"
315  << _hltPathsToCheck[i] << "*'" ;
316  }
317  } // Close loop over paths to check.
318 
319  // At this point, _hltpaths contains the names of the paths to check
320  // that were found. Let's log it at trace level.
321  LogTrace("ExoticaValidation") << "SubAnalysis: " << _analysisname
322  << "\nHLT Trigger Paths found >>>";
323  for (std::set<std::string>::const_iterator iter = _hltPaths.begin();
324  iter != _hltPaths.end(); ++iter) {
325  LogTrace("ExoticaValidation") << (*iter) << "\n";
326  }
327 
328  // Initialize the plotters (analysers for each trigger path)
329  _plotters.clear();
330  for (std::set<std::string>::iterator iPath = _hltPaths.begin();
331  iPath != _hltPaths.end(); ++iPath) {
332  // Avoiding the dependence of the version number for the trigger paths
333  std::string path = * iPath;
334  std::string shortpath = path;
335  if (path.rfind("_v") < path.length()) {
336  shortpath = path.substr(0, path.rfind("_v"));
337  }
338  _shortpath2long[shortpath] = path;
339 
340  // Objects needed by the HLT path
341  // Thiago: instead of trying to decode the objects from the path,
342  // put the burden on the user to tell us which objects are needed.
343  //const std::vector<unsigned int> objsNeedHLT = this->getObjectsType(shortpath);
344  std::vector<unsigned int> objsNeedHLT;
345  for (std::map<unsigned int, edm::InputTag>::iterator it = _recLabels.begin() ;
346  it != _recLabels.end(); ++it) {
347  objsNeedHLT.push_back(it->first);
348  }
349 
350  /*std::vector<unsigned int> userInstantiate;
351  // Sanity check: the object needed by a trigger path should be
352  // introduced by the user via config python (_recLabels datamember)
353  for (std::map<unsigned int, edm::InputTag>::iterator it = _recLabels.begin() ;
354  it != _recLabels.end(); ++it) {
355  userInstantiate.push_back(it->first);
356  }
357  for (std::vector<unsigned int>::const_iterator it = objsNeedHLT.begin(); it != objsNeedHLT.end();
358  ++it) {
359  if (std::find(userInstantiate.begin(), userInstantiate.end(), *it) ==
360  userInstantiate.end()) {
361  edm::LogError("ExoticaValidation") << "In HLTExoticaSubAnalysis::beginRun, "
362  << "Incoherence found in the python configuration file!!\nThe SubAnalysis '"
363  << _analysisname << "' has been asked to evaluate the trigger path '"
364  << shortpath << "' (found it in 'hltPathsToCheck') BUT this path"
365  << " needs a '" << EVTColContainer::getTypeString(*it)
366  << "' which has not been instantiated ('recVariableLabels'"
367  << ")" ;
368  exit(-1); // This should probably throw an exception...
369  }
370  }
371  */
372  LogTrace("ExoticaValidation") << " --- " << shortpath;
373 
374  // The hlt path, the objects (electrons, muons, photons, ...)
375  // needed to evaluate the path are the argumens of the plotter
376  HLTExoticaPlotter analyzer(_pset, shortpath, objsNeedHLT);
377  _plotters.push_back(analyzer);
378  // counting HLT passed events for debug
380  }// Okay, at this point we have prepared all the plotters.
381 
382 }
#define LogDebug(id)
int i
Definition: DBlmapReader.cc:9
std::map< std::string, int > _triggerCounter
counting HLT passed events
const std::vector< std::string > & triggerNames() const
names of trigger paths
std::vector< HLTExoticaPlotter > _plotters
The plotters: managers of each hlt path where the plots are done.
std::map< unsigned int, edm::InputTag > _recLabels
edm::ParameterSet _pset
Internal, working copy of the PSet passed from above.
int j
Definition: DBlmapReader.cc:9
HLTConfigProvider _hltConfig
Interface to the HLT information.
std::vector< std::string > _hltPathsToCheck
The hlt paths to check for.
#define LogTrace(id)
std::string _hltProcessName
The labels of the object collections to be used in this analysis.
std::string _analysisname
The name of this sub-analysis.
bool init(const edm::Run &iRun, const edm::EventSetup &iSetup, const std::string &processName, bool &changed)
d&#39;tor
std::set< std::string > _hltPaths
The hlt paths found in the hltConfig.
std::map< std::string, std::string > _shortpath2long
Relation between the short and long versions of the path.
void HLTExoticaSubAnalysis::bookHist ( DQMStore::IBooker iBooker,
const std::string &  source,
const std::string &  objType,
const std::string &  variable 
)
private

The internal functions to book and fill histograms.

Definition at line 1072 of file HLTExoticaSubAnalysis.cc.

References _elements, _parametersDxy, _parametersEta, _parametersPhi, _parametersTurnOn, _parametersTurnOnSumEt, DQMStore::IBooker::book1D(), h, i, LogDebug, bookConverter::max, min(), mergeVDriftHistosByStation::name, source, AlCaHLTBitMon_QueryRunRegistry::string, and indexGen::title.

Referenced by subAnalysisBookHistos().

1076 {
1077  LogDebug("ExoticaValidation") << "In HLTExoticaSubAnalysis::bookHist()";
1078  std::string sourceUpper = source;
1079  sourceUpper[0] = std::toupper(sourceUpper[0]);
1080  std::string name = source + objType + variable ;
1081  TH1F * h = 0;
1082 
1083  if (variable.find("SumEt") != std::string::npos) {
1084  std::string title = "Sum ET of " + sourceUpper + " " + objType;
1085  const size_t nBins = _parametersTurnOnSumEt.size() - 1;
1086  float * edges = new float[nBins + 1];
1087  for (size_t i = 0; i < nBins + 1; i++) {
1088  edges[i] = _parametersTurnOnSumEt[i];
1089  }
1090  h = new TH1F(name.c_str(), title.c_str(), nBins, edges);
1091  delete[] edges;
1092  }
1093 
1094  else if (variable.find("Dxy") != std::string::npos) {
1095  std::string title = "Dxy " + sourceUpper + " " + objType;
1096  int nBins = _parametersDxy[0];
1097  double min = _parametersDxy[1];
1098  double max = _parametersDxy[2];
1099  h = new TH1F(name.c_str(), title.c_str(), nBins, min, max);
1100  }
1101 
1102  else if (variable.find("MaxPt") != std::string::npos) {
1103  std::string desc = (variable == "MaxPt1") ? "Leading" : "Next-to-Leading";
1104  std::string title = "pT of " + desc + " " + sourceUpper + " " + objType;
1105  const size_t nBins = _parametersTurnOn.size() - 1;
1106  float * edges = new float[nBins + 1];
1107  for (size_t i = 0; i < nBins + 1; i++) {
1108  edges[i] = _parametersTurnOn[i];
1109  }
1110  h = new TH1F(name.c_str(), title.c_str(), nBins, edges);
1111  delete[] edges;
1112  }
1113 
1114  else {
1115  std::string symbol = (variable == "Eta") ? "#eta" : "#phi";
1116  std::string title = symbol + " of " + sourceUpper + " " + objType;
1117  std::vector<double> params = (variable == "Eta") ? _parametersEta : _parametersPhi;
1118  int nBins = (int)params[0];
1119  double min = params[1];
1120  double max = params[2];
1121  h = new TH1F(name.c_str(), title.c_str(), nBins, min, max);
1122  }
1123 
1124  h->Sumw2();
1125  // This is the trick, that takes a normal TH1F and puts it in in the DQM
1126  // machinery. Seems to be easy!
1127  // Updated to use the new iBooker machinery.
1128  _elements[name] = iBooker.book1D(name, h);
1129  delete h;
1130 }
#define LogDebug(id)
int i
Definition: DBlmapReader.cc:9
FWCore Framework interface EventSetupRecordImplementation h
Helper function to determine trigger accepts.
std::vector< double > _parametersPhi
std::vector< double > _parametersEta
Some kinematical parameters.
std::vector< double > _parametersDxy
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:115
T min(T a, T b)
Definition: MathUtil.h:58
std::vector< double > _parametersTurnOn
std::map< std::string, MonitorElement * > _elements
Structure of the MonitorElements.
std::vector< double > _parametersTurnOnSumEt
static std::string const source
Definition: EdmProvDump.cc:43
void HLTExoticaSubAnalysis::endRun ( void  )

Definition at line 1343 of file HLTExoticaSubAnalysis.cc.

References _analysisname, _triggerCounter, dqm-mbProfile::log, and LogDebug.

1343  {
1344  // Dump trigger results
1345  std::stringstream log;
1346  log << std::endl;
1347  log << "===========================================================================" << std::endl;
1348  log << " Trigger Results ( " << _analysisname << " ) " << std::endl;
1349  log << "===========================================================================" << std::endl;
1350  log << std::setw(18) << "# of passed events : HLT path names" << std::endl;
1351  log << "-------------------:-------------------------------------------------------" << std::endl;
1352  for (std::map<std::string,int>::iterator it = _triggerCounter.begin();
1353  it != _triggerCounter.end(); ++it) {
1354  log << std::setw(18) << it->second << " : " << it->first << std::endl;
1355  }
1356  log << "===========================================================================" << std::endl;
1357  LogDebug("ExoticaValidation") << log.str().data();
1358 }
#define LogDebug(id)
std::map< std::string, int > _triggerCounter
counting HLT passed events
std::string _analysisname
The name of this sub-analysis.
void HLTExoticaSubAnalysis::fillHist ( const std::string &  source,
const std::string &  objType,
const std::string &  variable,
const float &  value 
)
private

Definition at line 1133 of file HLTExoticaSubAnalysis.cc.

References _elements, LogDebug, mergeVDriftHistosByStation::name, source, AlCaHLTBitMon_QueryRunRegistry::string, and relativeConstraints::value.

Referenced by analyze().

1137 {
1138  std::string sourceUpper = source;
1139  sourceUpper[0] = toupper(sourceUpper[0]);
1140  std::string name = source + objType + variable ;
1141 
1142  LogDebug("ExoticaValidation") << "In HLTExoticaSubAnalysis::fillHist() " << name << " " << value;
1143  _elements[name]->Fill(value);
1144  LogDebug("ExoticaValidation") << "In HLTExoticaSubAnalysis::fillHist() " << name << " worked";
1145 }
#define LogDebug(id)
std::map< std::string, MonitorElement * > _elements
Structure of the MonitorElements.
static std::string const source
Definition: EdmProvDump.cc:43
void HLTExoticaSubAnalysis::getHandlesToObjects ( const edm::Event iEvent,
EVTColContainer col 
)
private

Gets the collections themselves.

Definition at line 956 of file HLTExoticaSubAnalysis.cc.

References _bsToken, _genParticleToken, _tokens, _trigResultsToken, EVTColContainer::bs, EVTColContainer::CALOJET, EVTColContainer::CALOMET, EVTColContainer::CALOMHT, EVTColContainer::ELEC, EVTColContainer::GENMET, EVTColContainer::genParticles, edm::Event::getByToken(), EVTColContainer::isCommonInit(), edm::HandleBase::isValid(), EVTColContainer::L1MET, LogDebug, EVTColContainer::MET, EVTColContainer::MUON, EVTColContainer::MUTRK, EVTColContainer::PFJET, EVTColContainer::PFMET, EVTColContainer::PFMHT, EVTColContainer::PFTAU, EVTColContainer::PHOTON, edm::Handle< T >::product(), EVTColContainer::set(), EVTColContainer::setCaloMHT(), EVTColContainer::setPFMHT(), EVTColContainer::TRACK, and EVTColContainer::triggerResults.

Referenced by analyze().

957 {
958  LogDebug("ExoticaValidation") << "In HLTExoticaSubAnalysis::getHandlesToObjects()";
959 
960  if (! col->isCommonInit()) {
961  // Extract the trigger results (path info, pass,...)
963  iEvent.getByToken(_trigResultsToken, trigResults);
964  if (trigResults.isValid()) {
965  col->triggerResults = trigResults.product();
966  LogDebug("ExoticaValidation") << "Added handle to triggerResults";
967  }
968 
969  // Extract the genParticles
971  iEvent.getByToken(_genParticleToken, genPart);
972  if (genPart.isValid()) {
973  col->genParticles = genPart.product();
974  LogDebug("ExoticaValidation") << "Added handle to genParticles";
975  }
976 
977  // BeamSpot for dxy
979  iEvent.getByToken(_bsToken, bsHandle);
980  if (bsHandle.isValid()) {
981  col->bs = bsHandle.product();
982  }
983  }
984 
985  // Loop over the tokens and extract all other objects
986  LogDebug("ExoticaValidation") << "We have got " << _tokens.size() << "tokens";
987  for (std::map<unsigned int, edm::EDGetToken>::iterator it = _tokens.begin();
988  it != _tokens.end(); ++it) {
989  if (it->first == EVTColContainer::MUON) {
991  iEvent.getByToken(it->second, theHandle);
992  if (theHandle.isValid()) col->set(theHandle.product());
993  }
994  else if (it->first == EVTColContainer::MUTRK) {
996  iEvent.getByToken(it->second, theHandle);
997  if (theHandle.isValid()) col->set(theHandle.product());
998  }
999  else if (it->first == EVTColContainer::TRACK) {
1001  iEvent.getByToken(it->second, theHandle);
1002  if (theHandle.isValid()) col->set(theHandle.product());
1003  }
1004  else if (it->first == EVTColContainer::ELEC) {
1006  iEvent.getByToken(it->second, theHandle);
1007  if (theHandle.isValid()) col->set(theHandle.product());
1008  }
1009  else if (it->first == EVTColContainer::PHOTON) {
1011  iEvent.getByToken(it->second, theHandle);
1012  if (theHandle.isValid()) col->set(theHandle.product());
1013  }
1014  else if (it->first == EVTColContainer::MET) {
1016  iEvent.getByToken(it->second, theHandle);
1017  if (theHandle.isValid()) col->set(theHandle.product());
1018  }
1019  else if (it->first == EVTColContainer::PFMET) {
1021  iEvent.getByToken(it->second, theHandle);
1022  if (theHandle.isValid()) col->set(theHandle.product());
1023  }
1024  else if (it->first == EVTColContainer::PFMHT) {
1026  iEvent.getByToken(it->second, theHandle);
1027  if (theHandle.isValid()) col->setPFMHT(theHandle.product());
1028  }
1029  else if (it->first == EVTColContainer::GENMET) {
1031  iEvent.getByToken(it->second, theHandle);
1032  if (theHandle.isValid()) col->set(theHandle.product());
1033  }
1034  else if (it->first == EVTColContainer::CALOMET) {
1036  iEvent.getByToken(it->second, theHandle);
1037  if (theHandle.isValid()) col->set(theHandle.product());
1038  }
1039  else if (it->first == EVTColContainer::CALOMHT) {
1041  iEvent.getByToken(it->second, theHandle);
1042  if (theHandle.isValid()) col->setCaloMHT(theHandle.product());
1043  }
1044  else if (it->first == EVTColContainer::L1MET) {
1046  iEvent.getByToken(it->second, theHandle);
1047  if (theHandle.isValid()) col->set(theHandle.product());
1048  }
1049  else if (it->first == EVTColContainer::PFTAU) {
1051  iEvent.getByToken(it->second, theHandle);
1052  if (theHandle.isValid()) col->set(theHandle.product());
1053  }
1054  else if (it->first == EVTColContainer::PFJET) {
1056  iEvent.getByToken(it->second, theHandle);
1057  if (theHandle.isValid()) col->set(theHandle.product());
1058  }
1059  else if (it->first == EVTColContainer::CALOJET) {
1061  iEvent.getByToken(it->second, theHandle);
1062  if (theHandle.isValid()) col->set(theHandle.product());
1063  }
1064  else {
1065  edm::LogError("ExoticaValidation") << "HLTExoticaSubAnalysis::getHandlesToObjects "
1066  << " NOT IMPLEMENTED (yet) ERROR: '" << it->first << "'";
1067  }
1068  }
1069 }
#define LogDebug(id)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:462
const reco::GenParticleCollection * genParticles
edm::EDGetTokenT< edm::TriggerResults > _trigResultsToken
void setPFMHT(const reco::PFMETCollection *v)
void set(const reco::MuonCollection *v)
Setter: multiple overloaded function.
const reco::BeamSpot * bs
bool isValid() const
Definition: HandleBase.h:75
T const * product() const
Definition: Handle.h:81
std::map< unsigned int, edm::EDGetToken > _tokens
edm::EDGetTokenT< reco::GenParticleCollection > _genParticleToken
And also the tokens to get the object collections.
const edm::TriggerResults * triggerResults
edm::EDGetTokenT< reco::BeamSpot > _bsToken
void setCaloMHT(const reco::CaloMETCollection *v)
void HLTExoticaSubAnalysis::getNamesOfObjects ( const edm::ParameterSet anpset)
private

Creates the maps that map which collection should come from which label.

Definition at line 775 of file HLTExoticaSubAnalysis.cc.

References _analysisname, _genSelectorMap, _recLabels, EVTColContainer::CALOJET, EVTColContainer::CALOMET, EVTColContainer::CALOMHT, EVTColContainer::ELEC, edm::ParameterSet::exists(), EVTColContainer::GENMET, edm::ParameterSet::getParameter(), EVTColContainer::L1MET, LogDebug, EVTColContainer::MET, EVTColContainer::MUON, EVTColContainer::MUTRK, EVTColContainer::PFJET, EVTColContainer::PFMET, EVTColContainer::PFMHT, EVTColContainer::PFTAU, EVTColContainer::PHOTON, and EVTColContainer::TRACK.

Referenced by HLTExoticaSubAnalysis().

776 {
777  LogDebug("ExoticaValidation") << "In HLTExoticaSubAnalysis::getNamesOfObjects()";
778 
779  if (anpset.exists("recMuonLabel")) {
780  _recLabels[EVTColContainer::MUON] = anpset.getParameter<edm::InputTag>("recMuonLabel");
782  }
783  if (anpset.exists("recMuonTrkLabel")) {
784  _recLabels[EVTColContainer::MUTRK] = anpset.getParameter<edm::InputTag>("recMuonTrkLabel");
786  }
787  if (anpset.exists("recTrackLabel")) {
788  _recLabels[EVTColContainer::TRACK] = anpset.getParameter<edm::InputTag>("recTrackLabel");
790  }
791  if (anpset.exists("recElecLabel")) {
792  _recLabels[EVTColContainer::ELEC] = anpset.getParameter<edm::InputTag>("recElecLabel");
794  }
795  if (anpset.exists("recPhotonLabel")) {
796  _recLabels[EVTColContainer::PHOTON] = anpset.getParameter<edm::InputTag>("recPhotonLabel");
798  }
799  if (anpset.exists("recMETLabel")) {
800  _recLabels[EVTColContainer::MET] = anpset.getParameter<edm::InputTag>("recMETLabel");
802  }
803  if (anpset.exists("recPFMETLabel")) {
804  _recLabels[EVTColContainer::PFMET] = anpset.getParameter<edm::InputTag>("recPFMETLabel");
806  }
807  if (anpset.exists("recPFMHTLabel")) {
808  _recLabels[EVTColContainer::PFMHT] = anpset.getParameter<edm::InputTag>("recPFMHTLabel");
810  }
811  if (anpset.exists("genMETLabel")) {
814  }
815  if (anpset.exists("recCaloMETLabel")) {
816  _recLabels[EVTColContainer::CALOMET] = anpset.getParameter<edm::InputTag>("recCaloMETLabel");
818  }
819  if (anpset.exists("recCaloMHTLabel")) {
820  _recLabels[EVTColContainer::CALOMHT] = anpset.getParameter<edm::InputTag>("recCaloMHTLabel");
822  }
823  if (anpset.exists("hltMETLabel")) {
826  }
827  if (anpset.exists("l1METLabel")) {
830  }
831  if (anpset.exists("recPFTauLabel")) {
832  _recLabels[EVTColContainer::PFTAU] = anpset.getParameter<edm::InputTag>("recPFTauLabel");
834  }
835  if (anpset.exists("recPFJetLabel")) {
836  _recLabels[EVTColContainer::PFJET] = anpset.getParameter<edm::InputTag>("recPFJetLabel");
838  }
839  if (anpset.exists("recCaloJetLabel")) {
840  _recLabels[EVTColContainer::CALOJET] = anpset.getParameter<edm::InputTag>("recCaloJetLabel");
842  }
843 
844  if (_recLabels.size() < 1) {
845  edm::LogError("ExoticaValidation") << "HLTExoticaSubAnalysis::getNamesOfObjects, "
846  << "Not included any object (recMuonLabel, recElecLabel, ...) "
847  << "in the analysis " << _analysisname;
848  return;
849  }
850 }
#define LogDebug(id)
T getParameter(std::string const &) const
bool exists(std::string const &parameterName) const
checks if a parameter exists
std::map< unsigned int, edm::InputTag > _recLabels
std::string _analysisname
The name of this sub-analysis.
std::map< unsigned int, StringCutObjectSelector< reco::GenParticle > * > _genSelectorMap
const std::vector< unsigned int > HLTExoticaSubAnalysis::getObjectsType ( const std::string &  hltpath) const
private

closes analyze method

Return the objects (muons,electrons,photons,...) needed by a HLT path. Will in general return: 0 for muon, 1 for electron, 2 for photon, 3 for PFMET, 4 for PFTau, 5 for Jet. Notice that this function is really based on a parsing of the name of the path; any incongruences there may lead to problems.

Definition at line 735 of file HLTExoticaSubAnalysis.cc.

References EVTColContainer::CALOJET, EVTColContainer::CALOMET, EVTColContainer::CALOMHT, EVTColContainer::ELEC, EVTColContainer::GENMET, EVTColContainer::getTypeString(), i, EVTColContainer::L1MET, LogDebug, EVTColContainer::MET, EVTColContainer::MUON, EVTColContainer::MUTRK, EVTColContainer::PFJET, EVTColContainer::PFMET, EVTColContainer::PFMHT, EVTColContainer::PFTAU, EVTColContainer::PHOTON, AlCaHLTBitMon_QueryRunRegistry::string, and EVTColContainer::TRACK.

736 {
737  LogDebug("ExoticaValidation") << "In HLTExoticaSubAnalysis::getObjectsType()";
738 
739  static const unsigned int objSize = 15;
740  static const unsigned int objtriggernames[] = {
756  };
757 
758  std::set<unsigned int> objsType;
759  // The object to deal has to be entered via the config .py
760  for (unsigned int i = 0; i < objSize; ++i) {
761  //std::cout << "(5) Gonna call with " << objtriggernames[i] << std::endl;
762  std::string objTypeStr = EVTColContainer::getTypeString(objtriggernames[i]);
763  // Check if it is needed this object for this trigger
764  if (! TString(hltPath).Contains(objTypeStr)) {
765  continue;
766  }
767 
768  objsType.insert(objtriggernames[i]);
769  }
770 
771  return std::vector<unsigned int>(objsType.begin(), objsType.end());
772 }
#define LogDebug(id)
int i
Definition: DBlmapReader.cc:9
static const std::string getTypeString(const unsigned int &objtype)
Tranform types into strings.
void HLTExoticaSubAnalysis::initSelector ( const unsigned int &  objtype)
private

Initializes the selectors of the objects based on which object it is.

Definition at line 1148 of file HLTExoticaSubAnalysis.cc.

References _genMETSelector, _l1METSelector, _recCaloJetSelector, _recCaloMETSelector, _recCaloMHTSelector, _recCut, _recElecSelector, _recMETSelector, _recMuonSelector, _recMuonTrkSelector, _recPFJetSelector, _recPFMETSelector, _recPFMHTSelector, _recPFTauSelector, _recPhotonSelector, _recTrackSelector, EVTColContainer::CALOJET, EVTColContainer::CALOMET, EVTColContainer::CALOMHT, EVTColContainer::ELEC, EVTColContainer::GENMET, EVTColContainer::L1MET, LogDebug, EVTColContainer::MET, EVTColContainer::MUON, EVTColContainer::MUTRK, EVTColContainer::PFJET, EVTColContainer::PFMET, EVTColContainer::PFMHT, EVTColContainer::PFTAU, EVTColContainer::PHOTON, and EVTColContainer::TRACK.

Referenced by analyze().

1149 {
1150 
1151  LogDebug("ExoticaValidation") << "In HLTExoticaSubAnalysis::initSelector()";
1152 
1153  if (objtype == EVTColContainer::MUON && _recMuonSelector == 0) {
1155  } else if (objtype == EVTColContainer::MUTRK && _recMuonTrkSelector == 0) {
1157  } else if (objtype == EVTColContainer::TRACK && _recTrackSelector == 0) {
1159  } else if (objtype == EVTColContainer::ELEC && _recElecSelector == 0) {
1161  } else if (objtype == EVTColContainer::PHOTON && _recPhotonSelector == 0) {
1163  } else if (objtype == EVTColContainer::MET && _recMETSelector == 0) {
1165  } else if (objtype == EVTColContainer::PFMET && _recPFMETSelector == 0) {
1167  } else if (objtype == EVTColContainer::PFMHT && _recPFMHTSelector == 0) {
1169  } else if (objtype == EVTColContainer::GENMET && _genMETSelector == 0) {
1171  } else if (objtype == EVTColContainer::CALOMET && _recCaloMETSelector == 0) {
1173  } else if (objtype == EVTColContainer::CALOMHT && _recCaloMHTSelector == 0) {
1175  } else if (objtype == EVTColContainer::L1MET && _l1METSelector == 0) {
1177  } else if (objtype == EVTColContainer::PFTAU && _recPFTauSelector == 0) {
1179  } else if (objtype == EVTColContainer::PFJET && _recPFJetSelector == 0) {
1181  } else if (objtype == EVTColContainer::CALOJET && _recCaloJetSelector == 0) {
1183  }
1184  /* else
1185  {
1186  FIXME: ERROR NOT IMPLEMENTED
1187  }*/
1188 }
#define LogDebug(id)
StringCutObjectSelector< reco::Track > * _recMuonTrkSelector
StringCutObjectSelector< reco::CaloJet > * _recCaloJetSelector
StringCutObjectSelector< reco::GenMET > * _genMETSelector
StringCutObjectSelector< reco::MET > * _recMETSelector
StringCutObjectSelector< reco::PFJet > * _recPFJetSelector
StringCutObjectSelector< reco::GsfElectron > * _recElecSelector
StringCutObjectSelector< reco::Muon > * _recMuonSelector
std::map< unsigned int, std::string > _recCut
StringCutObjectSelector< reco::Track > * _recTrackSelector
StringCutObjectSelector< reco::CaloMET > * _recCaloMHTSelector
StringCutObjectSelector< reco::PFMET > * _recPFMETSelector
StringCutObjectSelector< reco::Photon > * _recPhotonSelector
StringCutObjectSelector< l1extra::L1EtMissParticle > * _l1METSelector
StringCutObjectSelector< reco::CaloMET > * _recCaloMETSelector
StringCutObjectSelector< reco::PFMET > * _recPFMHTSelector
StringCutObjectSelector< reco::PFTau > * _recPFTauSelector
void HLTExoticaSubAnalysis::insertCandidates ( const unsigned int &  objtype,
const EVTColContainer col,
std::vector< reco::LeafCandidate > *  matches,
std::map< int, double > &  theSumEt,
std::map< int, std::vector< const reco::Track * > > &  trkObjs 
)
private

This function applies the selectors initialized previously to the objects, and matches the passing objects to HLT objects.

This is a special case. Passing a PFMET* to the constructor of MatchStruct will trigger the usage of the special constructor which also sets the sumEt member.

Definition at line 1191 of file HLTExoticaSubAnalysis.cc.

References _genMETSelector, _l1METSelector, _recCaloJetSelector, _recCaloMETSelector, _recCaloMHTSelector, _recElecSelector, _recMuonSelector, _recMuonTrkSelector, _recPFJetSelector, _recPFMETSelector, _recPFMHTSelector, _recPFTauSelector, _recPhotonSelector, _recTrackSelector, EVTColContainer::CALOJET, EVTColContainer::caloJets, EVTColContainer::CALOMET, EVTColContainer::caloMETs, EVTColContainer::CALOMHT, EVTColContainer::caloMHTs, EVTColContainer::ELEC, EVTColContainer::electrons, EVTColContainer::GENMET, EVTColContainer::genMETs, i, EVTColContainer::L1MET, EVTColContainer::l1METs, LogDebug, visualization-live-secondInstance_cfg::m, EVTColContainer::MUON, EVTColContainer::muons, EVTColContainer::MUTRK, EVTColContainer::PFJET, EVTColContainer::pfJets, EVTColContainer::PFMET, EVTColContainer::pfMETs, EVTColContainer::PFMHT, EVTColContainer::pfMHTs, EVTColContainer::PFTAU, EVTColContainer::pfTaus, EVTColContainer::PHOTON, EVTColContainer::photons, EVTColContainer::TRACK, and EVTColContainer::tracks.

Referenced by analyze().

1193 {
1194 
1195  LogDebug("ExoticaValidation") << "In HLTExoticaSubAnalysis::insertCandidates()";
1196 
1197  theSumEt[objType] = -1;
1198 
1199  if (objType == EVTColContainer::MUON) {
1200  for (size_t i = 0; i < cols->muons->size(); i++) {
1201  LogDebug("ExoticaValidation") << "Inserting muon " << i ;
1202  if (_recMuonSelector->operator()(cols->muons->at(i))) {
1203  reco::LeafCandidate m(0, cols->muons->at(i).p4(), cols->muons->at(i).vertex(), objType, 0, true);
1204  matches->push_back(m);
1205 
1206  // for making dxy plots
1207  trkObjs[objType].push_back(cols->muons->at(i).bestTrack());
1208  }
1209  }
1210  } else if (objType == EVTColContainer::MUTRK) {
1211  for (size_t i = 0; i < cols->tracks->size(); i++) {
1212  LogDebug("ExoticaValidation") << "Inserting muonTrack " << i ;
1213  if (_recMuonTrkSelector->operator()(cols->tracks->at(i))) {
1214  ROOT::Math::LorentzVector<ROOT::Math::PxPyPzE4D<double>> mom4;
1215  ROOT::Math::XYZVector mom3 = cols->tracks->at(i).momentum();
1216  mom4.SetXYZT(mom3.x(),mom3.y(),mom3.z(),mom3.r());
1217  reco::LeafCandidate m(0, mom4, cols->tracks->at(i).vertex(), objType, 0, true);
1218  matches->push_back(m);
1219 
1220  // for making dxy plots
1221  trkObjs[objType].push_back(&cols->tracks->at(i));
1222  }
1223  }
1224  } else if (objType == EVTColContainer::TRACK) {
1225  for (size_t i = 0; i < cols->tracks->size(); i++) {
1226  LogDebug("ExoticaValidation") << "Inserting Track " << i ;
1227  if (_recTrackSelector->operator()(cols->tracks->at(i))) {
1228  ROOT::Math::LorentzVector<ROOT::Math::PxPyPzE4D<double>> mom4;
1229  ROOT::Math::XYZVector mom3 = cols->tracks->at(i).momentum();
1230  mom4.SetXYZT(mom3.x(),mom3.y(),mom3.z(),mom3.r());
1231  reco::LeafCandidate m(0, mom4, cols->tracks->at(i).vertex(), objType, 0, true);
1232  matches->push_back(m);
1233  }
1234  }
1235  } else if (objType == EVTColContainer::ELEC) {
1236  for (size_t i = 0; i < cols->electrons->size(); i++) {
1237  LogDebug("ExoticaValidation") << "Inserting electron " << i ;
1238  if (_recElecSelector->operator()(cols->electrons->at(i))) {
1239  reco::LeafCandidate m(0, cols->electrons->at(i).p4(), cols->electrons->at(i).vertex(), objType, 0, true);
1240  matches->push_back(m);
1241 
1242  // for making dxy plots
1243  trkObjs[objType].push_back(cols->electrons->at(i).bestTrack());
1244  }
1245  }
1246  } else if (objType == EVTColContainer::PHOTON) {
1247  for (size_t i = 0; i < cols->photons->size(); i++) {
1248  LogDebug("ExoticaValidation") << "Inserting photon " << i ;
1249  if (_recPhotonSelector->operator()(cols->photons->at(i))) {
1250  reco::LeafCandidate m(0, cols->photons->at(i).p4(), cols->photons->at(i).vertex(), objType, 0, true);
1251  matches->push_back(m);
1252  }
1253  }
1254  } else if (objType == EVTColContainer::PFMET) {
1258  for (size_t i = 0; i < cols->pfMETs->size(); i++) {
1259  LogDebug("ExoticaValidation") << "Inserting PFMET " << i ;
1260  if (_recPFMETSelector->operator()(cols->pfMETs->at(i))) {
1261  reco::LeafCandidate m(0, cols->pfMETs->at(i).p4(), cols->pfMETs->at(i).vertex(), objType, 0, true);
1262  matches->push_back(m);
1263  if(i==0) theSumEt[objType] = cols->pfMETs->at(i).sumEt();
1264  }
1265  }
1266  } else if (objType == EVTColContainer::PFMHT) {
1267  for (size_t i = 0; i < cols->pfMHTs->size(); i++) {
1268  LogDebug("ExoticaValidation") << "Inserting PFMHT " << i ;
1269  if (_recPFMHTSelector->operator()(cols->pfMHTs->at(i))) {
1270  reco::LeafCandidate m(0, cols->pfMHTs->at(i).p4(), cols->pfMHTs->at(i).vertex(), objType, 0, true);
1271  matches->push_back(m);
1272  if(i==0) theSumEt[objType] = cols->pfMHTs->at(i).sumEt();
1273  }
1274  }
1275  } else if (objType == EVTColContainer::GENMET) {
1276  for (size_t i = 0; i < cols->genMETs->size(); i++) {
1277  LogDebug("ExoticaValidation") << "Inserting GENMET " << i ;
1278  if (_genMETSelector->operator()(cols->genMETs->at(i))) {
1279  reco::LeafCandidate m(0, cols->genMETs->at(i).p4(), cols->genMETs->at(i).vertex(), objType, 0, true);
1280  matches->push_back(m);
1281  if(i==0) theSumEt[objType] = cols->genMETs->at(i).sumEt();
1282  }
1283  }
1284  } else if (objType == EVTColContainer::CALOMET) {
1285  for (size_t i = 0; i < cols->caloMETs->size(); i++) {
1286  LogDebug("ExoticaValidation") << "Inserting CALOMET " << i ;
1287  if (_recCaloMETSelector->operator()(cols->caloMETs->at(i))) {
1288  reco::LeafCandidate m(0, cols->caloMETs->at(i).p4(), cols->caloMETs->at(i).vertex(), objType, 0, true);
1289  matches->push_back(m);
1290  if(i==0) theSumEt[objType] = cols->caloMETs->at(i).sumEt();
1291  }
1292  }
1293  } else if (objType == EVTColContainer::CALOMHT) {
1294  for (size_t i = 0; i < cols->caloMHTs->size(); i++) {
1295  LogDebug("ExoticaValidation") << "Inserting CaloMHT " << i ;
1296  if (_recCaloMHTSelector->operator()(cols->caloMHTs->at(i))) {
1297  reco::LeafCandidate m(0, cols->caloMHTs->at(i).p4(), cols->caloMHTs->at(i).vertex(), objType, 0, true);
1298  matches->push_back(m);
1299  if(i==0) theSumEt[objType] = cols->caloMHTs->at(i).sumEt();
1300  }
1301  }
1302  } else if (objType == EVTColContainer::L1MET) {
1303  for (size_t i = 0; i < cols->l1METs->size(); i++) {
1304  LogDebug("ExoticaValidation") << "Inserting L1MET " << i ;
1305  if (_l1METSelector->operator()(cols->l1METs->at(i))) {
1306  reco::LeafCandidate m(0, cols->l1METs->at(i).p4(), cols->l1METs->at(i).vertex(), objType, 0, true);
1307  matches->push_back(m);
1308  if(i==0) theSumEt[objType] = cols->l1METs->at(i).etTotal();
1309  }
1310  }
1311  } else if (objType == EVTColContainer::PFTAU) {
1312  for (size_t i = 0; i < cols->pfTaus->size(); i++) {
1313  LogDebug("ExoticaValidation") << "Inserting PFtau " << i ;
1314  if (_recPFTauSelector->operator()(cols->pfTaus->at(i))) {
1315  reco::LeafCandidate m(0, cols->pfTaus->at(i).p4(), cols->pfTaus->at(i).vertex(), objType, 0, true);
1316  matches->push_back(m);
1317  }
1318  }
1319  } else if (objType == EVTColContainer::PFJET) {
1320  for (size_t i = 0; i < cols->pfJets->size(); i++) {
1321  LogDebug("ExoticaValidation") << "Inserting jet " << i ;
1322  if (_recPFJetSelector->operator()(cols->pfJets->at(i))) {
1323  reco::LeafCandidate m(0, cols->pfJets->at(i).p4(), cols->pfJets->at(i).vertex(), objType, 0, true);
1324  matches->push_back(m);
1325  }
1326  }
1327  } else if (objType == EVTColContainer::CALOJET) {
1328  for (size_t i = 0; i < cols->caloJets->size(); i++) {
1329  LogDebug("ExoticaValidation") << "Inserting jet " << i ;
1330  if (_recCaloJetSelector->operator()(cols->caloJets->at(i))) {
1331  reco::LeafCandidate m(0, cols->caloJets->at(i).p4(), cols->caloJets->at(i).vertex(), objType, 0, true);
1332  matches->push_back(m);
1333  }
1334  }
1335  }
1336 
1337  /* else
1338  {
1339  FIXME: ERROR NOT IMPLEMENTED
1340  }*/
1341 }
#define LogDebug(id)
StringCutObjectSelector< reco::Track > * _recMuonTrkSelector
int i
Definition: DBlmapReader.cc:9
StringCutObjectSelector< reco::CaloJet > * _recCaloJetSelector
StringCutObjectSelector< reco::GenMET > * _genMETSelector
StringCutObjectSelector< reco::PFJet > * _recPFJetSelector
StringCutObjectSelector< reco::GsfElectron > * _recElecSelector
StringCutObjectSelector< reco::Muon > * _recMuonSelector
StringCutObjectSelector< reco::Track > * _recTrackSelector
StringCutObjectSelector< reco::CaloMET > * _recCaloMHTSelector
Transform3DPJ::Vector XYZVector
StringCutObjectSelector< reco::PFMET > * _recPFMETSelector
StringCutObjectSelector< reco::Photon > * _recPhotonSelector
StringCutObjectSelector< l1extra::L1EtMissParticle > * _l1METSelector
StringCutObjectSelector< reco::CaloMET > * _recCaloMETSelector
StringCutObjectSelector< reco::PFMET > * _recPFMHTSelector
StringCutObjectSelector< reco::PFTau > * _recPFTauSelector
void HLTExoticaSubAnalysis::registerConsumes ( edm::ConsumesCollector consCollector)
private

Registers consumption of objects.

Definition at line 854 of file HLTExoticaSubAnalysis.cc.

References _beamSpotLabel, _bsToken, _genParticleLabel, _genParticleToken, _recLabels, _tokens, _trigResultsLabel, _trigResultsToken, EVTColContainer::CALOJET, EVTColContainer::CALOMET, EVTColContainer::CALOMHT, edm::ConsumesCollector::consumes(), EVTColContainer::ELEC, EVTColContainer::GENMET, EVTColContainer::L1MET, LogDebug, EVTColContainer::MET, EVTColContainer::MUON, EVTColContainer::MUTRK, EVTColContainer::PFJET, EVTColContainer::PFMET, EVTColContainer::PFMHT, EVTColContainer::PFTAU, EVTColContainer::PHOTON, unpackBuffers-CaloStage2::token, and EVTColContainer::TRACK.

Referenced by HLTExoticaSubAnalysis().

855 {
856  // Register that we are getting genParticles
858 
859  // Register that we are getting the trigger results
861 
862  // Register beamspot
863  _bsToken = iC.consumes<reco::BeamSpot>(_beamSpotLabel);
864 
865  // Loop over _recLabels, see what we need, and register.
866  // Then save the registered token in _tokens.
867  // Remember: _recLabels is a map<uint, edm::InputTag>
868  // Remember: _tokens is a map<uint, edm::EDGetToken>
869  LogDebug("ExoticaValidation") << "We have got " << _recLabels.size() << "recLabels";
870  for (std::map<unsigned int, edm::InputTag>::iterator it = _recLabels.begin();
871  it != _recLabels.end(); ++it) {
872  if (it->first == EVTColContainer::MUON) {
873  edm::EDGetTokenT<reco::MuonCollection> particularToken = iC.consumes<reco::MuonCollection>(it->second);
874  edm::EDGetToken token(particularToken);
875  _tokens[it->first] = token;
876  }
877  else if (it->first == EVTColContainer::MUTRK) {
878  edm::EDGetTokenT<reco::TrackCollection> particularToken = iC.consumes<reco::TrackCollection>(it->second);
879  edm::EDGetToken token(particularToken);
880  _tokens[it->first] = token;
881  }
882  else if (it->first == EVTColContainer::TRACK) {
883  edm::EDGetTokenT<reco::TrackCollection> particularToken = iC.consumes<reco::TrackCollection>(it->second);
884  edm::EDGetToken token(particularToken);
885  _tokens[it->first] = token;
886  }
887  else if (it->first == EVTColContainer::ELEC) {
888  edm::EDGetTokenT<reco::GsfElectronCollection> particularToken = iC.consumes<reco::GsfElectronCollection>(it->second);
889  edm::EDGetToken token(particularToken);
890  _tokens[it->first] = token;
891  }
892  else if (it->first == EVTColContainer::PHOTON) {
893  edm::EDGetTokenT<reco::PhotonCollection> particularToken = iC.consumes<reco::PhotonCollection>(it->second);
894  edm::EDGetToken token(particularToken);
895  _tokens[it->first] = token;
896  }
897  else if (it->first == EVTColContainer::MET) {
898  edm::EDGetTokenT<reco::METCollection> particularToken = iC.consumes<reco::METCollection>(it->second);
899  edm::EDGetToken token(particularToken);
900  _tokens[it->first] = token;
901  }
902  else if (it->first == EVTColContainer::PFMET) {
903  edm::EDGetTokenT<reco::PFMETCollection> particularToken = iC.consumes<reco::PFMETCollection>(it->second);
904  edm::EDGetToken token(particularToken);
905  _tokens[it->first] = token;
906  }
907  else if (it->first == EVTColContainer::PFMHT) {
908  edm::EDGetTokenT<reco::PFMETCollection> particularToken = iC.consumes<reco::PFMETCollection>(it->second);
909  edm::EDGetToken token(particularToken);
910  _tokens[it->first] = token;
911  }
912  else if (it->first == EVTColContainer::GENMET) {
913  edm::EDGetTokenT<reco::GenMETCollection> particularToken = iC.consumes<reco::GenMETCollection>(it->second);
914  edm::EDGetToken token(particularToken);
915  _tokens[it->first] = token;
916  }
917  else if (it->first == EVTColContainer::CALOMET) {
918  edm::EDGetTokenT<reco::CaloMETCollection> particularToken = iC.consumes<reco::CaloMETCollection>(it->second);
919  edm::EDGetToken token(particularToken);
920  _tokens[it->first] = token;
921  }
922  else if (it->first == EVTColContainer::CALOMHT) {
923  edm::EDGetTokenT<reco::CaloMETCollection> particularToken = iC.consumes<reco::CaloMETCollection>(it->second);
924  edm::EDGetToken token(particularToken);
925  _tokens[it->first] = token;
926  }
927  else if (it->first == EVTColContainer::L1MET) {
929  edm::EDGetToken token(particularToken);
930  _tokens[it->first] = token;
931  }
932  else if (it->first == EVTColContainer::PFTAU) {
933  edm::EDGetTokenT<reco::PFTauCollection> particularToken = iC.consumes<reco::PFTauCollection>(it->second);
934  edm::EDGetToken token(particularToken);
935  _tokens[it->first] = token;
936  }
937  else if (it->first == EVTColContainer::PFJET) {
938  edm::EDGetTokenT<reco::PFJetCollection> particularToken = iC.consumes<reco::PFJetCollection>(it->second);
939  edm::EDGetToken token(particularToken);
940  _tokens[it->first] = token;
941  }
942  else if (it->first == EVTColContainer::CALOJET) {
943  edm::EDGetTokenT<reco::CaloJetCollection> particularToken = iC.consumes<reco::CaloJetCollection>(it->second);
944  edm::EDGetToken token(particularToken);
945  _tokens[it->first] = token;
946  }
947  else {
948  edm::LogError("ExoticaValidation") << "HLTExoticaSubAnalysis::registerConsumes"
949  << " NOT IMPLEMENTED (yet) ERROR: '" << it->second.label() << "'";
950  }
951  }
952 
953 }
#define LogDebug(id)
std::vector< GenParticle > GenParticleCollection
collection of GenParticles
std::vector< PFTau > PFTauCollection
collection of PFTau objects
Definition: PFTauFwd.h:9
std::vector< reco::GenMET > GenMETCollection
collection of GenMET objects
std::vector< Track > TrackCollection
collection of Tracks
Definition: TrackFwd.h:14
edm::EDGetTokenT< edm::TriggerResults > _trigResultsToken
std::vector< reco::MET > METCollection
collection of MET objects
Definition: METCollection.h:23
std::vector< GsfElectron > GsfElectronCollection
collection of GsfElectron objects
std::vector< Muon > MuonCollection
collection of Muon objects
Definition: MuonFwd.h:9
std::map< unsigned int, edm::InputTag > _recLabels
std::vector< reco::CaloMET > CaloMETCollection
collection of CaloMET objects
std::vector< Photon > PhotonCollection
collectin of Photon objects
Definition: PhotonFwd.h:9
std::map< unsigned int, edm::EDGetToken > _tokens
std::vector< PFJet > PFJetCollection
collection of PFJet objects
std::vector< reco::PFMET > PFMETCollection
collection of PFMET objects
edm::EDGetTokenT< reco::GenParticleCollection > _genParticleToken
And also the tokens to get the object collections.
std::vector< L1EtMissParticle > L1EtMissParticleCollection
edm::EDGetTokenT< reco::BeamSpot > _bsToken
std::vector< CaloJet > CaloJetCollection
collection of CaloJet objects
void HLTExoticaSubAnalysis::subAnalysisBookHistos ( DQMStore::IBooker iBooker,
const edm::Run iRun,
const edm::EventSetup iSetup 
)

Method to book all relevant histograms in the DQMStore. Uses the IBooker interface for thread safety. Intended to be called from master object.

Definition at line 203 of file HLTExoticaSubAnalysis.cc.

References _analysisname, _drop_pt2, _drop_pt3, _plotters, _recLabels, bookHist(), EVTColContainer::ELEC, EVTColContainer::getTypeString(), i, LogDebug, EVTColContainer::MUON, EVTColContainer::MUTRK, DQMStore::IBooker::setCurrentFolder(), source, and AlCaHLTBitMon_QueryRunRegistry::string.

206 {
207 
208  LogDebug("ExoticaValidation") << "In HLTExoticaSubAnalysis::subAnalysisBookHistos()";
209 
210  // Create the folder structure inside HLT/Exotica
211  std::string baseDir = "HLT/Exotica/" + _analysisname + "/";
212  iBooker.setCurrentFolder(baseDir);
213 
214  // Book the gen/reco analysis-dependent histograms (denominators)
215  for (std::map<unsigned int, edm::InputTag>::const_iterator it = _recLabels.begin();
216  it != _recLabels.end(); ++it) {
217  const std::string objStr = EVTColContainer::getTypeString(it->first);
218  std::vector<std::string> sources(2);
219  sources[0] = "gen";
220  sources[1] = "rec";
221 
222  for (size_t i = 0; i < sources.size(); i++) {
223  std::string source = sources[i];
224 
225  if ( source == "gen" ) {
226  if ( TString(objStr).Contains("MET") ||
227  TString(objStr).Contains("MHT") ||
228  TString(objStr).Contains("Jet") ) {
229  continue;
230  } else {
231  bookHist(iBooker, source, objStr, "MaxPt1");
232  if (!_drop_pt2) bookHist(iBooker, source, objStr, "MaxPt2");
233  if (!_drop_pt3) bookHist(iBooker, source, objStr, "MaxPt3");
234  bookHist(iBooker, source, objStr, "Eta");
235  bookHist(iBooker, source, objStr, "Phi");
236 
237  // If the target is electron or muon,
238  // we will add Dxy plots.
239  if ( it->first == EVTColContainer::ELEC ||
240  it->first == EVTColContainer::MUON ||
241  it->first == EVTColContainer::MUTRK ) {
242  bookHist(iBooker, source, objStr, "Dxy");
243  }
244  }
245  } else { // reco
246  if ( TString(objStr).Contains("MET") ||
247  TString(objStr).Contains("MHT") ) {
248  bookHist(iBooker, source, objStr, "MaxPt1");
249  bookHist(iBooker, source, objStr, "SumEt");
250  } else {
251  bookHist(iBooker, source, objStr, "MaxPt1");
252  if (!_drop_pt2) bookHist(iBooker, source, objStr, "MaxPt2");
253  if (!_drop_pt3) bookHist(iBooker, source, objStr, "MaxPt3");
254  bookHist(iBooker, source, objStr, "Eta");
255  bookHist(iBooker, source, objStr, "Phi");
256 
257  // If the target is electron or muon,
258  // we will add Dxy plots.
259  if ( it->first == EVTColContainer::ELEC ||
260  it->first == EVTColContainer::MUON ||
261  it->first == EVTColContainer::MUTRK ) {
262  bookHist(iBooker, source, objStr, "Dxy");
263  }
264  }
265  }
266 
267  }
268  } // closes loop in _recLabels
269 
270  // Call the plotterBookHistos() (which books all the path dependent histograms)
271  LogDebug("ExoticaValidation") << " number of plotters = " << _plotters.size();
272  for (std::vector<HLTExoticaPlotter>::iterator it = _plotters.begin();
273  it != _plotters.end(); ++it) {
274  it->plotterBookHistos(iBooker, iRun, iSetup);
275  }
276 }
#define LogDebug(id)
int i
Definition: DBlmapReader.cc:9
std::vector< HLTExoticaPlotter > _plotters
The plotters: managers of each hlt path where the plots are done.
std::map< unsigned int, edm::InputTag > _recLabels
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:273
std::string _analysisname
The name of this sub-analysis.
static const std::string getTypeString(const unsigned int &objtype)
Tranform types into strings.
static std::string const source
Definition: EdmProvDump.cc:43
void bookHist(DQMStore::IBooker &iBooker, const std::string &source, const std::string &objType, const std::string &variable)
The internal functions to book and fill histograms.

Member Data Documentation

std::string HLTExoticaSubAnalysis::_analysisname
private

The name of this sub-analysis.

Definition at line 123 of file HLTExoticaSubAnalysis.h.

Referenced by beginRun(), endRun(), getNamesOfObjects(), and subAnalysisBookHistos().

edm::InputTag HLTExoticaSubAnalysis::_beamSpotLabel
private

Definition at line 139 of file HLTExoticaSubAnalysis.h.

Referenced by registerConsumes().

edm::EDGetTokenT<reco::BeamSpot> HLTExoticaSubAnalysis::_bsToken
private

Definition at line 144 of file HLTExoticaSubAnalysis.h.

Referenced by getHandlesToObjects(), and registerConsumes().

bool HLTExoticaSubAnalysis::_drop_pt2
private

Definition at line 155 of file HLTExoticaSubAnalysis.h.

Referenced by analyze(), HLTExoticaSubAnalysis(), and subAnalysisBookHistos().

bool HLTExoticaSubAnalysis::_drop_pt3
private

Definition at line 156 of file HLTExoticaSubAnalysis.h.

Referenced by analyze(), HLTExoticaSubAnalysis(), and subAnalysisBookHistos().

std::map<std::string, MonitorElement *> HLTExoticaSubAnalysis::_elements
private

Structure of the MonitorElements.

Definition at line 194 of file HLTExoticaSubAnalysis.h.

Referenced by bookHist(), and fillHist().

std::map<unsigned int, std::string> HLTExoticaSubAnalysis::_genCut
private

gen/rec objects cuts

Definition at line 159 of file HLTExoticaSubAnalysis.h.

Referenced by analyze(), and HLTExoticaSubAnalysis().

std::map<unsigned int, std::string> HLTExoticaSubAnalysis::_genCut_leading
private

gen/rec pt-leading objects cuts

Definition at line 162 of file HLTExoticaSubAnalysis.h.

Referenced by analyze(), and HLTExoticaSubAnalysis().

StringCutObjectSelector<reco::GenMET>* HLTExoticaSubAnalysis::_genMETSelector
private

Definition at line 175 of file HLTExoticaSubAnalysis.h.

Referenced by initSelector(), insertCandidates(), and ~HLTExoticaSubAnalysis().

edm::InputTag HLTExoticaSubAnalysis::_genParticleLabel
private

Definition at line 137 of file HLTExoticaSubAnalysis.h.

Referenced by registerConsumes().

edm::EDGetTokenT<reco::GenParticleCollection> HLTExoticaSubAnalysis::_genParticleToken
private

And also the tokens to get the object collections.

Definition at line 142 of file HLTExoticaSubAnalysis.h.

Referenced by getHandlesToObjects(), and registerConsumes().

std::map<unsigned int, StringCutObjectSelector<reco::GenParticle> *> HLTExoticaSubAnalysis::_genSelectorMap
private

The concrete String selectors (use the string cuts introduced via the config python)

Definition at line 167 of file HLTExoticaSubAnalysis.h.

Referenced by analyze(), getNamesOfObjects(), and ~HLTExoticaSubAnalysis().

HLTConfigProvider HLTExoticaSubAnalysis::_hltConfig
private

Interface to the HLT information.

Definition at line 191 of file HLTExoticaSubAnalysis.h.

Referenced by beginRun().

std::set<std::string> HLTExoticaSubAnalysis::_hltPaths
private

The hlt paths found in the hltConfig.

Definition at line 131 of file HLTExoticaSubAnalysis.h.

Referenced by beginRun().

std::vector<std::string> HLTExoticaSubAnalysis::_hltPathsToCheck
private

The hlt paths to check for.

Definition at line 129 of file HLTExoticaSubAnalysis.h.

Referenced by beginRun(), and HLTExoticaSubAnalysis().

std::string HLTExoticaSubAnalysis::_hltProcessName
private

The labels of the object collections to be used in this analysis.

Definition at line 136 of file HLTExoticaSubAnalysis.h.

Referenced by beginRun().

StringCutObjectSelector<l1extra::L1EtMissParticle>* HLTExoticaSubAnalysis::_l1METSelector
private

Definition at line 178 of file HLTExoticaSubAnalysis.h.

Referenced by initSelector(), insertCandidates(), and ~HLTExoticaSubAnalysis().

unsigned int HLTExoticaSubAnalysis::_minCandidates
private

The minimum number of reco/gen candidates needed by the analysis.

Definition at line 126 of file HLTExoticaSubAnalysis.h.

Referenced by analyze(), and HLTExoticaSubAnalysis().

std::vector<double> HLTExoticaSubAnalysis::_parametersDxy
private

Definition at line 152 of file HLTExoticaSubAnalysis.h.

Referenced by bookHist(), and HLTExoticaSubAnalysis().

std::vector<double> HLTExoticaSubAnalysis::_parametersEta
private

Some kinematical parameters.

Definition at line 148 of file HLTExoticaSubAnalysis.h.

Referenced by bookHist(), and HLTExoticaSubAnalysis().

std::vector<double> HLTExoticaSubAnalysis::_parametersPhi
private

Definition at line 149 of file HLTExoticaSubAnalysis.h.

Referenced by bookHist(), and HLTExoticaSubAnalysis().

std::vector<double> HLTExoticaSubAnalysis::_parametersTurnOn
private

Definition at line 150 of file HLTExoticaSubAnalysis.h.

Referenced by bookHist(), and HLTExoticaSubAnalysis().

std::vector<double> HLTExoticaSubAnalysis::_parametersTurnOnSumEt
private

Definition at line 151 of file HLTExoticaSubAnalysis.h.

Referenced by bookHist(), and HLTExoticaSubAnalysis().

std::vector<HLTExoticaPlotter> HLTExoticaSubAnalysis::_plotters
private

The plotters: managers of each hlt path where the plots are done.

Definition at line 185 of file HLTExoticaSubAnalysis.h.

Referenced by analyze(), beginRun(), and subAnalysisBookHistos().

edm::ParameterSet HLTExoticaSubAnalysis::_pset
private

Internal, working copy of the PSet passed from above.

Definition at line 120 of file HLTExoticaSubAnalysis.h.

Referenced by beginRun(), and HLTExoticaSubAnalysis().

StringCutObjectSelector<reco::CaloJet>* HLTExoticaSubAnalysis::_recCaloJetSelector
private

Definition at line 182 of file HLTExoticaSubAnalysis.h.

Referenced by initSelector(), insertCandidates(), and ~HLTExoticaSubAnalysis().

StringCutObjectSelector<reco::CaloMET>* HLTExoticaSubAnalysis::_recCaloMETSelector
private

Definition at line 176 of file HLTExoticaSubAnalysis.h.

Referenced by initSelector(), insertCandidates(), and ~HLTExoticaSubAnalysis().

StringCutObjectSelector<reco::CaloMET>* HLTExoticaSubAnalysis::_recCaloMHTSelector
private

Definition at line 177 of file HLTExoticaSubAnalysis.h.

Referenced by initSelector(), insertCandidates(), and ~HLTExoticaSubAnalysis().

std::map<unsigned int, std::string> HLTExoticaSubAnalysis::_recCut
private

Definition at line 160 of file HLTExoticaSubAnalysis.h.

Referenced by HLTExoticaSubAnalysis(), and initSelector().

std::map<unsigned int, std::string> HLTExoticaSubAnalysis::_recCut_leading
private

Definition at line 163 of file HLTExoticaSubAnalysis.h.

Referenced by analyze(), and HLTExoticaSubAnalysis().

StringCutObjectSelector<reco::GsfElectron>* HLTExoticaSubAnalysis::_recElecSelector
private

Definition at line 171 of file HLTExoticaSubAnalysis.h.

Referenced by initSelector(), insertCandidates(), and ~HLTExoticaSubAnalysis().

std::map<unsigned int, edm::InputTag> HLTExoticaSubAnalysis::_recLabels
private
StringCutObjectSelector<reco::MET>* HLTExoticaSubAnalysis::_recMETSelector
private

Definition at line 172 of file HLTExoticaSubAnalysis.h.

Referenced by initSelector(), and ~HLTExoticaSubAnalysis().

StringCutObjectSelector<reco::Muon>* HLTExoticaSubAnalysis::_recMuonSelector
private

Definition at line 168 of file HLTExoticaSubAnalysis.h.

Referenced by initSelector(), insertCandidates(), and ~HLTExoticaSubAnalysis().

StringCutObjectSelector<reco::Track>* HLTExoticaSubAnalysis::_recMuonTrkSelector
private

Definition at line 169 of file HLTExoticaSubAnalysis.h.

Referenced by initSelector(), insertCandidates(), and ~HLTExoticaSubAnalysis().

StringCutObjectSelector<reco::PFJet>* HLTExoticaSubAnalysis::_recPFJetSelector
private

Definition at line 181 of file HLTExoticaSubAnalysis.h.

Referenced by initSelector(), insertCandidates(), and ~HLTExoticaSubAnalysis().

StringCutObjectSelector<reco::PFMET>* HLTExoticaSubAnalysis::_recPFMETSelector
private

Definition at line 173 of file HLTExoticaSubAnalysis.h.

Referenced by initSelector(), insertCandidates(), and ~HLTExoticaSubAnalysis().

StringCutObjectSelector<reco::PFMET>* HLTExoticaSubAnalysis::_recPFMHTSelector
private

Definition at line 174 of file HLTExoticaSubAnalysis.h.

Referenced by initSelector(), insertCandidates(), and ~HLTExoticaSubAnalysis().

StringCutObjectSelector<reco::PFTau>* HLTExoticaSubAnalysis::_recPFTauSelector
private

Definition at line 179 of file HLTExoticaSubAnalysis.h.

Referenced by initSelector(), insertCandidates(), and ~HLTExoticaSubAnalysis().

StringCutObjectSelector<reco::Photon>* HLTExoticaSubAnalysis::_recPhotonSelector
private

Definition at line 180 of file HLTExoticaSubAnalysis.h.

Referenced by initSelector(), insertCandidates(), and ~HLTExoticaSubAnalysis().

StringCutObjectSelector<reco::Track>* HLTExoticaSubAnalysis::_recTrackSelector
private

Definition at line 170 of file HLTExoticaSubAnalysis.h.

Referenced by initSelector(), insertCandidates(), and ~HLTExoticaSubAnalysis().

std::map<std::string, std::string> HLTExoticaSubAnalysis::_shortpath2long
private

Relation between the short and long versions of the path.

Definition at line 133 of file HLTExoticaSubAnalysis.h.

Referenced by analyze(), and beginRun().

std::map<unsigned int, edm::EDGetToken> HLTExoticaSubAnalysis::_tokens
private

Definition at line 145 of file HLTExoticaSubAnalysis.h.

Referenced by getHandlesToObjects(), and registerConsumes().

std::map<std::string,int> HLTExoticaSubAnalysis::_triggerCounter
private

counting HLT passed events

Definition at line 188 of file HLTExoticaSubAnalysis.h.

Referenced by analyze(), beginRun(), and endRun().

edm::InputTag HLTExoticaSubAnalysis::_trigResultsLabel
private

Definition at line 138 of file HLTExoticaSubAnalysis.h.

Referenced by registerConsumes().

edm::EDGetTokenT<edm::TriggerResults> HLTExoticaSubAnalysis::_trigResultsToken
private

Definition at line 143 of file HLTExoticaSubAnalysis.h.

Referenced by getHandlesToObjects(), and registerConsumes().