CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | Friends
EmDQM Class Reference

#include <EmDQM.h>

Inheritance diagram for EmDQM:
DQMEDAnalyzer edm::stream::EDAnalyzer< edm::RunSummaryCache< dqmDetails::NoCache >, edm::LuminosityBlockSummaryCache< dqmDetails::NoCache > > edm::stream::EDAnalyzerBase edm::EDConsumerBase

Public Member Functions

void analyze (const edm::Event &event, const edm::EventSetup &) override
 
void beginJob ()
 
void bookHistograms (DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
 
void dqmBeginRun (edm::Run const &, edm::EventSetup const &) override
 
 EmDQM (const edm::ParameterSet &pset)
 Constructor. More...
 
void endJob ()
 
void endRun (edm::Run const &, edm::EventSetup const &) override
 
 ~EmDQM ()
 Destructor. More...
 
- Public Member Functions inherited from DQMEDAnalyzer
virtual void beginRun (edm::Run const &, edm::EventSetup const &) final
 
virtual void beginStream (edm::StreamID id) final
 
 DQMEDAnalyzer (void)
 
virtual void endLuminosityBlockSummary (edm::LuminosityBlock const &, edm::EventSetup const &, dqmDetails::NoCache *) const final
 
virtual void endRunSummary (edm::Run const &, edm::EventSetup const &, dqmDetails::NoCache *) const final
 
uint32_t streamId () const
 
- Public Member Functions inherited from edm::stream::EDAnalyzer< edm::RunSummaryCache< dqmDetails::NoCache >, edm::LuminosityBlockSummaryCache< dqmDetails::NoCache > >
 EDAnalyzer ()=default
 
- Public Member Functions inherited from edm::stream::EDAnalyzerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzerBase ()
 
ModuleDescription const & moduleDescription () const
 
virtual ~EDAnalyzerBase ()
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Member Functions

bool checkGeneratedParticlesRequirement (const edm::Event &event)
 
bool checkRecoParticlesRequirement (const edm::Event &event)
 
int countSubstring (const std::string &, const std::string &)
 
std::vector< std::vector< std::string > > findEgammaPaths ()
 
std::vector< std::string > getFilterModules (const std::string &)
 
double getPrimaryEtCut (const std::string &)
 
edm::ParameterSet makePSetForEgammaDoubleEtDeltaPhiFilter (const std::string &)
 
edm::ParameterSet makePSetForEgammaGenericFilter (const std::string &)
 
edm::ParameterSet makePSetForEgammaGenericQuadraticFilter (const std::string &)
 
edm::ParameterSet makePSetForElectronGenericFilter (const std::string &)
 
edm::ParameterSet makePSetForEtFilter (const std::string &)
 
edm::ParameterSet makePSetForL1SeedFilter (const std::string &)
 
edm::ParameterSet makePSetForL1SeedToSuperClusterMatchFilter (const std::string &)
 
edm::ParameterSet makePSetForOneOEMinusOneOPFilter (const std::string &)
 
edm::ParameterSet makePSetForPixelMatchFilter (const std::string &)
 
void SetVarsFromPSet (std::vector< edm::ParameterSet >::iterator)
 

Private Attributes

bool autoConfMode_
 
std::string dirname_
 
std::vector< MonitorElement * > etagens
 
std::vector< std::vector< MonitorElement * > > etahistmatchs
 
std::vector< std::vector< MonitorElement * > > etahists
 
double etaMax_
 
std::vector< MonitorElement * > etgens
 
std::vector< std::vector< MonitorElement * > > ethistmatchs
 
std::vector< std::vector< MonitorElement * > > ethists
 
unsigned int gencut_
 
edm::EDGetTokenT< edm::View< reco::Candidate > > gencutColl_fidDiGamma_token
 
edm::EDGetTokenT< edm::View< reco::Candidate > > gencutColl_fidGammaJet_token
 
edm::EDGetTokenT< edm::View< reco::Candidate > > gencutColl_fidTripleEle_token
 
edm::EDGetTokenT< edm::View< reco::Candidate > > gencutColl_fidWenu_token
 
edm::EDGetTokenT< edm::View< reco::Candidate > > gencutColl_fidZee_token
 
edm::EDGetTokenT< edm::View< reco::Candidate > > gencutColl_manualConf_token
 
edm::InputTag gencutCollection_
 
double genEtaAcc_
 
double genEtAcc_
 
edm::EDGetTokenT< edm::View< reco::Candidate > > genParticles_token
 
std::vector< std::vector< MonitorElement * > > histEtaOfHltObjMatchToGens
 
std::vector< std::vector< MonitorElement * > > histEtOfHltObjMatchToGens
 
HistoFiller< reco::RecoEcalCandidateCollection > * histoFillerClu
 
HistoFiller< reco::ElectronCollection > * histoFillerEle
 
HistoFiller< l1extra::L1EmParticleCollection > * histoFillerL1Iso
 
HistoFiller< l1extra::L1EmParticleCollection > * histoFillerL1NonIso
 
HistoFiller< reco::RecoEcalCandidateCollection > * histoFillerPho
 
std::vector< std::vector< MonitorElement * > > histPhiOfHltObjMatchToGens
 
std::set< std::string > hltCollectionLabelsFound
 
std::vector< std::set< std::string > > hltCollectionLabelsFoundPerPath
 
std::set< std::string > hltCollectionLabelsMissed
 
std::vector< std::set< std::string > > hltCollectionLabelsMissedPerPath
 
HLTConfigProvider hltConfig_
 The instance of the HLTConfigProvider as a data member. More...
 
edm::EDGetTokenT< edm::TriggerResultshltResults_token
 
bool isData_
 
std::vector< std::vector< edm::InputTag > > isoNames
 
bool mcMatchedOnly_
 
unsigned int minEtForEtaEffPlot_
 
unsigned int nbins_
 
std::vector< unsigned int > nCandCuts
 
bool noIsolationPlots_
 
bool noPhiPlots_
 
unsigned int numOfHLTCollectionLabels
 
std::vector< edm::ParameterSetparamSets
 
unsigned int pathIndex
 
int pdgGen
 
std::vector< MonitorElement * > phigens
 
std::vector< std::vector< MonitorElement * > > phihistmatchs
 
std::vector< std::vector< MonitorElement * > > phihists
 
double phiMax_
 
std::vector< std::pair< double, double > > plotBounds
 
double plotEtMin
 
std::vector< bool > plotiso
 
double plotPtMax
 
double plotPtMin
 
const edm::ParameterSetpset
 
GreaterByPt< reco::ParticlepTComparator_
 
GreaterByPt< reco::GenParticlepTGenComparator_
 
double ptMax_
 
double ptMin_
 
unsigned int reqNum
 
std::vector< std::string > theHLTCollectionHumanNames
 
std::vector< edm::InputTagtheHLTCollectionLabels
 
std::vector< int > theHLTOutputTypes
 
edm::InputTag theL1Seed
 
std::vector< MonitorElement * > totalmatchs
 
std::vector< MonitorElement * > totals
 
edm::InputTag triggerObject_
 
edm::EDGetTokenT< trigger::TriggerEventWithRefstriggerObject_token
 
bool useHumanReadableHistTitles_
 
unsigned int verbosity_
 

Static Private Attributes

static const unsigned OUTPUT_ALL = 3
 
static const unsigned OUTPUT_ERRORS = 1
 
static const unsigned OUTPUT_SILENT = 0
 
static const unsigned OUTPUT_WARNINGS = 2
 
static const unsigned TYPE_DOUBLE_ELE = 1
 
static const unsigned TYPE_DOUBLE_PHOTON = 3
 
static const unsigned TYPE_SINGLE_ELE = 0
 
static const unsigned TYPE_SINGLE_PHOTON = 2
 
static const unsigned TYPE_TRIPLE_ELE = 4
 

Friends

class HistoFiller< l1extra::L1EmParticleCollection >
 
class HistoFiller< reco::ElectronCollection >
 
class HistoFiller< reco::RecoEcalCandidateCollection >
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDAnalyzer< edm::RunSummaryCache< dqmDetails::NoCache >, edm::LuminosityBlockSummaryCache< dqmDetails::NoCache > >
typedef CacheContexts< T... > CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T... > HasAbility
 
typedef CacheTypes::LuminosityBlockCache LuminosityBlockCache
 
typedef LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCacheLuminosityBlockContext
 
typedef CacheTypes::LuminosityBlockSummaryCache LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache, GlobalCacheRunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 
- Public Types inherited from edm::stream::EDAnalyzerBase
typedef EDAnalyzerAdaptorBase ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from DQMEDAnalyzer
static std::shared_ptr< dqmDetails::NoCacheglobalBeginLuminosityBlockSummary (edm::LuminosityBlock const &, edm::EventSetup const &, LuminosityBlockContext const *)
 
static std::shared_ptr< dqmDetails::NoCacheglobalBeginRunSummary (edm::Run const &, edm::EventSetup const &, RunContext const *)
 
static void globalEndLuminosityBlockSummary (edm::LuminosityBlock const &, edm::EventSetup const &, LuminosityBlockContext const *, dqmDetails::NoCache *)
 
static void globalEndRunSummary (edm::Run const &, edm::EventSetup const &, RunContext const *, dqmDetails::NoCache *)
 
- Static Public Member Functions inherited from edm::stream::EDAnalyzerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

Definition at line 63 of file EmDQM.h.

Constructor & Destructor Documentation

EmDQM::EmDQM ( const edm::ParameterSet pset)
explicit

Constructor.

Definition at line 12 of file EmDQM.cc.

References autoConfMode_, etaMax_, gencutColl_fidDiGamma_token, gencutColl_fidGammaJet_token, gencutColl_fidTripleEle_token, gencutColl_fidWenu_token, gencutColl_fidZee_token, gencutColl_manualConf_token, genEtaAcc_, genEtAcc_, genParticles_token, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), histoFillerClu, histoFillerEle, histoFillerL1Iso, histoFillerL1NonIso, histoFillerPho, hltResults_token, isData_, mcMatchedOnly_, minEtForEtaEffPlot_, nbins_, noIsolationPlots_, noPhiPlots_, paramSets, phiMax_, pset, ptMax_, ptMin_, triggerObject_, triggerObject_token, useHumanReadableHistTitles_, and verbosity_.

12  : pset(pset_)
13 {
14  // are we running in automatic configuration mode with the HLTConfigProvider
15  // or with a per path python config file
16  autoConfMode_ = pset.getUntrackedParameter<bool>("autoConfMode", false);
17 
18  // set global parameters
19  triggerObject_ = pset_.getParameter<edm::InputTag>("triggerobject");
20  verbosity_ = pset_.getUntrackedParameter<unsigned int>("verbosity",0);
21  genEtaAcc_ = pset.getParameter<double>("genEtaAcc");
22  genEtAcc_ = pset.getParameter<double>("genEtAcc");
23  ptMax_ = pset.getUntrackedParameter<double>("PtMax",1000.);
24  ptMin_ = pset.getUntrackedParameter<double>("PtMin",0.);
25  etaMax_ = pset.getUntrackedParameter<double>("EtaMax", 2.7);
26  phiMax_ = pset.getUntrackedParameter<double>("PhiMax", 3.15);
27  nbins_ = pset.getUntrackedParameter<unsigned int>("Nbins",40);
28  minEtForEtaEffPlot_ = pset.getUntrackedParameter<unsigned int>("minEtForEtaEffPlot", 15);
29  useHumanReadableHistTitles_ = pset.getUntrackedParameter<bool>("useHumanReadableHistTitles", false);
30  mcMatchedOnly_ = pset.getUntrackedParameter<bool>("mcMatchedOnly", true);
31  noPhiPlots_ = pset.getUntrackedParameter<bool>("noPhiPlots", true);
32  noIsolationPlots_ = pset.getUntrackedParameter<bool>("noIsolationPlots", true);
33 
34  if (!autoConfMode_) {
35  paramSets.push_back(pset);
36  isData_ = false;
37  } else {
38  isData_ = pset.getParameter<bool>("isData");
39  }
40 
46 
47  // consumes
48  genParticles_token = consumes<edm::View<reco::Candidate> >(edm::InputTag("genParticles"));
49  triggerObject_token = consumes<trigger::TriggerEventWithRefs>(triggerObject_);
50  hltResults_token = consumes<edm::TriggerResults>(edm::InputTag("TriggerResults", "", triggerObject_.process()));
51  if (autoConfMode_) {
52  gencutColl_fidWenu_token = mayConsume<edm::View<reco::Candidate> >(edm::InputTag("fiducialWenu"));
53  gencutColl_fidZee_token = mayConsume<edm::View<reco::Candidate> >(edm::InputTag("fiducialZee"));
54  gencutColl_fidTripleEle_token = mayConsume<edm::View<reco::Candidate> >(edm::InputTag("fiducialTripleEle"));
55  gencutColl_fidGammaJet_token = mayConsume<edm::View<reco::Candidate> >(edm::InputTag("fiducialGammaJet"));
56  gencutColl_fidDiGamma_token = mayConsume<edm::View<reco::Candidate> >(edm::InputTag("fiducialDiGamma"));
57  } else {
58  gencutColl_manualConf_token = consumes<edm::View<reco::Candidate> >(pset.getParameter<edm::InputTag>("cutcollection"));
59  }
60 }
double ptMax_
Definition: EmDQM.h:106
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
edm::EDGetTokenT< edm::View< reco::Candidate > > gencutColl_fidZee_token
Definition: EmDQM.h:222
edm::EDGetTokenT< edm::View< reco::Candidate > > genParticles_token
Definition: EmDQM.h:218
bool noPhiPlots_
Definition: EmDQM.h:114
double phiMax_
Definition: EmDQM.h:109
HistoFiller< reco::ElectronCollection > * histoFillerEle
Definition: EmDQM.h:90
edm::EDGetTokenT< edm::View< reco::Candidate > > gencutColl_fidWenu_token
Definition: EmDQM.h:221
HistoFiller< l1extra::L1EmParticleCollection > * histoFillerL1Iso
Definition: EmDQM.h:94
HistoFiller< l1extra::L1EmParticleCollection > * histoFillerL1NonIso
Definition: EmDQM.h:92
HistoFiller< reco::RecoEcalCandidateCollection > * histoFillerPho
Definition: EmDQM.h:93
edm::InputTag triggerObject_
Definition: EmDQM.h:101
bool noIsolationPlots_
Definition: EmDQM.h:115
edm::EDGetTokenT< edm::View< reco::Candidate > > gencutColl_fidGammaJet_token
Definition: EmDQM.h:224
const edm::ParameterSet & pset
Definition: EmDQM.h:99
unsigned int nbins_
Definition: EmDQM.h:110
bool isData_
Definition: EmDQM.h:105
edm::EDGetTokenT< edm::View< reco::Candidate > > gencutColl_fidDiGamma_token
Definition: EmDQM.h:225
double ptMin_
Definition: EmDQM.h:107
std::vector< edm::ParameterSet > paramSets
Definition: EmDQM.h:153
edm::EDGetTokenT< edm::View< reco::Candidate > > gencutColl_fidTripleEle_token
Definition: EmDQM.h:223
double genEtAcc_
Definition: EmDQM.h:104
bool autoConfMode_
Definition: EmDQM.h:97
std::string const & process() const
Definition: InputTag.h:40
bool useHumanReadableHistTitles_
Definition: EmDQM.h:112
edm::EDGetTokenT< trigger::TriggerEventWithRefs > triggerObject_token
Definition: EmDQM.h:219
HistoFiller< reco::RecoEcalCandidateCollection > * histoFillerClu
Definition: EmDQM.h:91
bool mcMatchedOnly_
Definition: EmDQM.h:113
edm::EDGetTokenT< edm::View< reco::Candidate > > gencutColl_manualConf_token
Definition: EmDQM.h:226
unsigned int verbosity_
Definition: EmDQM.h:102
double genEtaAcc_
Definition: EmDQM.h:103
unsigned int minEtForEtaEffPlot_
Definition: EmDQM.h:111
edm::EDGetTokenT< edm::TriggerResults > hltResults_token
Definition: EmDQM.h:220
double etaMax_
Definition: EmDQM.h:108
EmDQM::~EmDQM ( )

Destructor.

Definition at line 587 of file EmDQM.cc.

587  {
588 }

Member Function Documentation

void EmDQM::analyze ( const edm::Event event,
const edm::EventSetup setup 
)
override

Definition at line 709 of file EmDQM.cc.

References autoConfMode_, checkGeneratedParticlesRequirement(), checkRecoParticlesRequirement(), stringResolutionProvider_cfi::et, PVValHelper::eta, etagens, etgens, HistoFiller< T >::fillHistos(), gencut_, gencutColl_fidDiGamma_token, gencutColl_fidGammaJet_token, gencutColl_fidTripleEle_token, gencutColl_fidWenu_token, gencutColl_fidZee_token, gencutColl_manualConf_token, histoFillerClu, histoFillerEle, histoFillerL1Iso, histoFillerL1NonIso, histoFillerPho, hltCollectionLabelsFound, hltCollectionLabelsFoundPerPath, hltCollectionLabelsMissed, hltCollectionLabelsMissedPerPath, hltConfig_, SelectingProcedure_cff::hltResults, hltResults_token, mps_fire::i, edm::HLTGlobalStatus::index(), createfilelist::int, edm::EventBase::isRealData(), edm::HandleBase::isValid(), mcMatchedOnly_, minEtForEtaEffPlot_, HLTConfigProvider::moduleIndex(), gen::n, nCandCuts, noPhiPlots_, numOfHLTCollectionLabels, OUTPUT_ERRORS, OUTPUT_WARNINGS, paramSets, pathIndex, pdgGen, phi, phigens, plotEtMin, pTComparator_, reqNum, SetVarsFromPSet(), theHLTCollectionLabels, theHLTOutputTypes, totalmatchs, totals, trigger::TriggerCluster, trigger::TriggerElectron, trigger::TriggerL1IsoEG, trigger::TriggerL1NoIsoEG, triggerObject_, triggerObject_token, trigger::TriggerPhoton, and verbosity_.

710 {
711  // loop over all the trigger path parameter sets
712  unsigned int vPos = 0;
713  for (std::vector<edm::ParameterSet>::iterator psetIt = paramSets.begin(); psetIt != paramSets.end(); ++psetIt, ++vPos) {
714  SetVarsFromPSet(psetIt);
715  // get the set forthe current path
718 
720  // Check if there's enough gen particles //
721  // of interest //
723  // get the right data according to the trigger path currently looked at
725  if (autoConfMode_) {
726  switch(reqNum) {
727  case 1:
728  if (pdgGen == 11) event.getByToken(gencutColl_fidWenu_token, cutCounter);
729  else event.getByToken(gencutColl_fidGammaJet_token, cutCounter);
730  break;
731  case 2:
732  if (pdgGen == 11) event.getByToken(gencutColl_fidZee_token, cutCounter);
733  else event.getByToken(gencutColl_fidDiGamma_token, cutCounter);
734  break;
735  case 3:
736  event.getByToken(gencutColl_fidTripleEle_token, cutCounter);
737  break;
738  }
739  } else {
740  event.getByToken(gencutColl_manualConf_token, cutCounter);
741  }
742  if (cutCounter->size() < (unsigned int)gencut_) {
743  //edm::LogWarning("EmDQM") << "Less than "<< gencut_ <<" gen particles with pdgId=" << pdgGen;
744  continue;
745  }
746 
747  // fill L1 and HLT info
748  // get objects possed by each filter
750  event.getByToken(triggerObject_token,triggerObj);
751  if(!triggerObj.isValid()) {
753  edm::LogWarning("EmDQM") << "parameter triggerobject (" << triggerObject_ << ") does not corresond to a valid TriggerEventWithRefs product. Please check especially the process name (e.g. when running over reprocessed datasets)";
754  continue;
755  }
756 
757  // Were enough high energy gen particles found?
758  if (event.isRealData()) {
759  // running validation on data.
760  // TODO: we should check that the entire
761  // run is on the same type (all data or
762  // all MC). Otherwise one gets
763  // uninterpretable results...
764  if (!checkRecoParticlesRequirement(event))
765  continue;
766  }
767  else { // MC
768  // if no, throw event away
770  continue;
771  }
772 
773  // It was an event worth keeping. Continue.
774 
776  // Fill the bin labeled "Total" //
777  // This will be the number of events looked at. //
779  if (!mcMatchedOnly_) totals.at(vPos)->Fill(numOfHLTCollectionLabels+0.5);
780  totalmatchs.at(vPos)->Fill(numOfHLTCollectionLabels+0.5);
781 
783  // Fill generator info //
785  // the gencut_ highest Et generator objects of the preselected type are our matches
786 
787  std::vector<reco::Particle> sortedGen;
788  for(edm::View<reco::Candidate>::const_iterator genpart = cutCounter->begin(); genpart != cutCounter->end();genpart++){
789  reco::Particle tmpcand( genpart->charge(), genpart->p4(), genpart->vertex(),genpart->pdgId(),genpart->status() );
790  if (tmpcand.et() >= plotEtMin) {
791  sortedGen.push_back(tmpcand);
792  }
793  }
794  std::sort(sortedGen.begin(),sortedGen.end(),pTComparator_ );
795 
796  // Now the collection of gen particles is sorted by pt.
797  // So, remove all particles from the collection so that we
798  // only have the top "1 thru gencut_" particles in it
799  if (sortedGen.size() < gencut_){
800  continue;
801  }
802  sortedGen.erase(sortedGen.begin()+gencut_,sortedGen.end());
803 
804  for (unsigned int i = 0 ; i < gencut_ ; i++ ) {
805  etgens.at(vPos)->Fill( sortedGen[i].et() ); //validity has been implicitily checked by the cut on gencut_ above
806  if (sortedGen[i].et() > minEtForEtaEffPlot_) {
807  etagens.at(vPos)->Fill( sortedGen[i].eta() );
808  if (!noPhiPlots_) phigens.at(vPos)->Fill( sortedGen[i].phi() );
809  }
810  } // END of loop over Generated particles
811  if (gencut_ >= reqNum && !mcMatchedOnly_) totals.at(vPos)->Fill(numOfHLTCollectionLabels+1.5); // this isn't really needed anymore keep for backward comp.
812  if (gencut_ >= reqNum) totalmatchs.at(vPos)->Fill(numOfHLTCollectionLabels+1.5); // this isn't really needed anymore keep for backward comp.
813 
814  bool accepted = true; // flags that the event has been accepted by all filters before
816  event.getByToken(hltResults_token, hltResults);
818  // Loop over filter modules //
820  for(unsigned int n=0; n < numOfHLTCollectionLabels ; n++) {
821  // check that there are not less sortedGen particles than nCandCut requires for this filter
822  if (sortedGen.size() < nCandCuts.at(n)) {
823  if (verbosity_ >= OUTPUT_ERRORS)
824  edm::LogError("EmDQM") << "There are less generated particles than the module '" << theHLTCollectionLabels[n].label() << "' requires.";
825  continue;
826  }
827  std::vector<reco::Particle> sortedGenForFilter(sortedGen);
828  sortedGenForFilter.erase(sortedGenForFilter.begin() + nCandCuts.at(n), sortedGenForFilter.end());
829 
830  // Fill only if this filter was run.
831  if (pathIndex != 0 && hltConfig_.moduleIndex(pathIndex, theHLTCollectionLabels[n].label()) > hltResults->index(pathIndex)) break;
832  // These numbers are from the Parameter Set, such as:
833  // theHLTOutputTypes = cms.uint32(100)
834  switch(theHLTOutputTypes[n])
835  {
836  case trigger::TriggerL1NoIsoEG: // Non-isolated Level 1
837  histoFillerL1NonIso->fillHistos(triggerObj,event,vPos,n,sortedGenForFilter,accepted);
838  break;
839  case trigger::TriggerL1IsoEG: // Isolated Level 1
840  histoFillerL1Iso->fillHistos(triggerObj,event,vPos,n,sortedGenForFilter,accepted);
841  break;
842  case trigger::TriggerPhoton: // Photon
843  histoFillerPho->fillHistos(triggerObj,event,vPos,n,sortedGenForFilter,accepted);
844  break;
845  case trigger::TriggerElectron: // Electron
846  histoFillerEle->fillHistos(triggerObj,event,vPos,n,sortedGenForFilter,accepted);
847  break;
848  case trigger::TriggerCluster: // TriggerCluster
849  histoFillerClu->fillHistos(triggerObj,event,vPos,n,sortedGenForFilter,accepted);
850  break;
851  default:
852  throw(cms::Exception("Release Validation Error") << "HLT output type not implemented: theHLTOutputTypes[n]" );
853  }
854  } // END of loop over filter modules
855 
856  // earse the dummy and fill with real set
859  }
860 }
std::vector< MonitorElement * > totals
Definition: EmDQM.h:207
edm::EDGetTokenT< edm::View< reco::Candidate > > gencutColl_fidZee_token
Definition: EmDQM.h:222
void fillHistos(edm::Handle< trigger::TriggerEventWithRefs > &, const edm::Event &, unsigned int, unsigned int, std::vector< reco::Particle > &, bool &)
Definition: EmDQM.cc:866
bool checkRecoParticlesRequirement(const edm::Event &event)
Definition: EmDQM.cc:648
unsigned int numOfHLTCollectionLabels
Definition: EmDQM.h:157
std::vector< std::set< std::string > > hltCollectionLabelsMissedPerPath
Definition: EmDQM.h:189
bool noPhiPlots_
Definition: EmDQM.h:114
int pdgGen
Definition: EmDQM.h:167
std::set< std::string > hltCollectionLabelsFound
Definition: EmDQM.h:186
std::vector< std::set< std::string > > hltCollectionLabelsFoundPerPath
Definition: EmDQM.h:185
HLTConfigProvider hltConfig_
The instance of the HLTConfigProvider as a data member.
Definition: EmDQM.h:132
HistoFiller< reco::ElectronCollection > * histoFillerEle
Definition: EmDQM.h:90
double plotEtMin
Definition: EmDQM.h:169
bool isRealData() const
Definition: EventBase.h:64
static const unsigned OUTPUT_ERRORS
Definition: EmDQM.h:239
edm::EDGetTokenT< edm::View< reco::Candidate > > gencutColl_fidWenu_token
Definition: EmDQM.h:221
std::vector< MonitorElement * > etagens
Definition: EmDQM.h:211
std::vector< edm::InputTag > theHLTCollectionLabels
Definition: EmDQM.h:156
HistoFiller< l1extra::L1EmParticleCollection > * histoFillerL1Iso
Definition: EmDQM.h:94
unsigned int moduleIndex(unsigned int trigger, const std::string &module) const
slot position of module on trigger path (0 to size-1)
HistoFiller< l1extra::L1EmParticleCollection > * histoFillerL1NonIso
Definition: EmDQM.h:92
unsigned int gencut_
Definition: EmDQM.h:182
std::vector< unsigned int > nCandCuts
Definition: EmDQM.h:164
HistoFiller< reco::RecoEcalCandidateCollection > * histoFillerPho
Definition: EmDQM.h:93
edm::InputTag triggerObject_
Definition: EmDQM.h:101
static const unsigned OUTPUT_WARNINGS
Definition: EmDQM.h:240
unsigned int index(const unsigned int i) const
Get index (slot position) of module giving the decision of the ith path.
edm::EDGetTokenT< edm::View< reco::Candidate > > gencutColl_fidGammaJet_token
Definition: EmDQM.h:224
std::set< std::string > hltCollectionLabelsMissed
Definition: EmDQM.h:190
void SetVarsFromPSet(std::vector< edm::ParameterSet >::iterator)
Definition: EmDQM.cc:1549
bool isValid() const
Definition: HandleBase.h:74
edm::EDGetTokenT< edm::View< reco::Candidate > > gencutColl_fidDiGamma_token
Definition: EmDQM.h:225
bool checkGeneratedParticlesRequirement(const edm::Event &event)
Definition: EmDQM.cc:591
std::vector< edm::ParameterSet > paramSets
Definition: EmDQM.h:153
edm::EDGetTokenT< edm::View< reco::Candidate > > gencutColl_fidTripleEle_token
Definition: EmDQM.h:223
bool autoConfMode_
Definition: EmDQM.h:97
et
define resolution functions of each parameter
unsigned int pathIndex
Definition: EmDQM.h:155
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
Definition: View.h:86
edm::EDGetTokenT< trigger::TriggerEventWithRefs > triggerObject_token
Definition: EmDQM.h:219
std::vector< MonitorElement * > totalmatchs
Definition: EmDQM.h:208
HistoFiller< reco::RecoEcalCandidateCollection > * histoFillerClu
Definition: EmDQM.h:91
bool mcMatchedOnly_
Definition: EmDQM.h:113
edm::EDGetTokenT< edm::View< reco::Candidate > > gencutColl_manualConf_token
Definition: EmDQM.h:226
GreaterByPt< reco::Particle > pTComparator_
Definition: EmDQM.h:214
std::vector< MonitorElement * > phigens
Definition: EmDQM.h:212
unsigned int verbosity_
Definition: EmDQM.h:102
std::vector< int > theHLTOutputTypes
Definition: EmDQM.h:160
unsigned int reqNum
Definition: EmDQM.h:166
unsigned int minEtForEtaEffPlot_
Definition: EmDQM.h:111
edm::EDGetTokenT< edm::TriggerResults > hltResults_token
Definition: EmDQM.h:220
std::vector< MonitorElement * > etgens
Definition: EmDQM.h:210
void EmDQM::beginJob ( void  )

Definition at line 66 of file EmDQM.cc.

67 {
68 
69 }
void EmDQM::bookHistograms ( DQMStore::IBooker iBooker,
edm::Run const &  iRun,
edm::EventSetup const &  iSetup 
)
overridevirtual

Implements DQMEDAnalyzer.

Definition at line 395 of file EmDQM.cc.

References DQMStore::IBooker::book1D(), dirname_, etagens, etahistmatchs, etahists, etaMax_, etgens, ethistmatchs, ethists, histEtaOfHltObjMatchToGens, histEtOfHltObjMatchToGens, histPhiOfHltObjMatchToGens, mps_fire::i, diffTwoXMLs::label, mcMatchedOnly_, nbins_, noPhiPlots_, numOfHLTCollectionLabels, paramSets, pdgGen, phigens, phihistmatchs, phihists, phiMax_, plotPtMax, plotPtMin, MonitorElement::setBinLabel(), DQMStore::IBooker::setCurrentFolder(), SetVarsFromPSet(), AlCaHLTBitMon_QueryRunRegistry::string, theHLTCollectionHumanNames, theHLTCollectionLabels, pileupDistInMC::total, totalmatchs, totals, and useHumanReadableHistTitles_.

396 {
398  // loop over all the trigger path parameter sets
400  for (std::vector<edm::ParameterSet>::iterator psetIt = paramSets.begin(); psetIt != paramSets.end(); ++psetIt) {
401  SetVarsFromPSet(psetIt);
402 
403  iBooker.setCurrentFolder(dirname_);
404 
406  // Set up Histogram of Effiency vs Step. //
407  // theHLTCollectionLabels is a vector of InputTags //
408  // from the configuration file. //
410  // Et & eta distributions
411  std::vector<MonitorElement*> etahist;
412  std::vector<MonitorElement*> phihist;
413  std::vector<MonitorElement*> ethist;
414  std::vector<MonitorElement*> etahistmatch;
415  std::vector<MonitorElement*> phihistmatch;
416  std::vector<MonitorElement*> ethistmatch;
417  std::vector<MonitorElement*> histEtOfHltObjMatchToGen;
418  std::vector<MonitorElement*> histEtaOfHltObjMatchToGen;
419  std::vector<MonitorElement*> histPhiOfHltObjMatchToGen;
420  // Plots of efficiency per step
422  MonitorElement* totalmatch;
423  //generator histograms
424  MonitorElement* etgen;
425  MonitorElement* etagen;
426  MonitorElement* phigen;
427 
428  std::string histName="total_eff";
429  std::string histTitle = "total events passing";
430  if (!mcMatchedOnly_) {
431  // This plot will have bins equal to 2+(number of
432  // HLTCollectionLabels in the config file)
433  total = iBooker.book1D(histName.c_str(),histTitle.c_str(),numOfHLTCollectionLabels+2,0,numOfHLTCollectionLabels+2);
434  total->setBinLabel(numOfHLTCollectionLabels+1,"Total");
435  total->setBinLabel(numOfHLTCollectionLabels+2,"Gen");
436  for (unsigned int u=0; u<numOfHLTCollectionLabels; u++) {
437  total->setBinLabel(u+1,theHLTCollectionLabels[u].label().c_str());
438  }
439  }
440 
441  histName="total_eff_MC_matched";
442  histTitle="total events passing (mc matched)";
443  totalmatch = iBooker.book1D(histName.c_str(),histTitle.c_str(),numOfHLTCollectionLabels+2,0,numOfHLTCollectionLabels+2);
444  totalmatch->setBinLabel(numOfHLTCollectionLabels+1,"Total");
445  totalmatch->setBinLabel(numOfHLTCollectionLabels+2,"Gen");
446  for (unsigned int u=0; u<numOfHLTCollectionLabels; u++) {
447  totalmatch->setBinLabel(u+1,theHLTCollectionLabels[u].label().c_str());
448  }
449 
450  MonitorElement* tmphisto;
451  //MonitorElement* tmpiso;
452 
454  // Set up generator-level histograms //
456  std::string pdgIdString;
457  switch(pdgGen) {
458  case 11:
459  pdgIdString="Electron";break;
460  case 22:
461  pdgIdString="Photon";break;
462  default:
463  pdgIdString="Particle";
464  }
465 
466  histName = "gen_et";
467  histTitle= "E_{T} of " + pdgIdString + "s" ;
468  etgen = iBooker.book1D(histName.c_str(),histTitle.c_str(),nbins_,plotPtMin,plotPtMax);
469  histName = "gen_eta";
470  histTitle= "#eta of "+ pdgIdString +"s " ;
471  etagen = iBooker.book1D(histName.c_str(),histTitle.c_str(),nbins_,-etaMax_, etaMax_);
472  histName = "gen_phi";
473  histTitle= "#phi of "+ pdgIdString +"s " ;
474  if (!noPhiPlots_) phigen = iBooker.book1D(histName.c_str(),histTitle.c_str(),nbins_,-phiMax_, phiMax_);
475 
477  // Set up histograms of HLT objects //
479  // Determine what strings to use for histogram titles
480  std::vector<std::string> HltHistTitle;
481  if ( theHLTCollectionHumanNames.size() == numOfHLTCollectionLabels && useHumanReadableHistTitles_ ) {
482  HltHistTitle = theHLTCollectionHumanNames;
483  } else {
484  for (unsigned int i =0; i < numOfHLTCollectionLabels; i++) {
485  HltHistTitle.push_back(theHLTCollectionLabels[i].label());
486  }
487  }
488 
489  for(unsigned int i = 0; i< numOfHLTCollectionLabels ; i++){
490  if (!mcMatchedOnly_) {
491  // Et distribution of HLT objects passing filter i
492  histName = theHLTCollectionLabels[i].label()+"et_all";
493  histTitle = HltHistTitle[i]+" Et (ALL)";
494  tmphisto = iBooker.book1D(histName.c_str(),histTitle.c_str(),nbins_,plotPtMin,plotPtMax);
495  ethist.push_back(tmphisto);
496 
497  // Eta distribution of HLT objects passing filter i
498  histName = theHLTCollectionLabels[i].label()+"eta_all";
499  histTitle = HltHistTitle[i]+" #eta (ALL)";
500  tmphisto = iBooker.book1D(histName.c_str(),histTitle.c_str(),nbins_,-etaMax_, etaMax_);
501  etahist.push_back(tmphisto);
502 
503  if (!noPhiPlots_) {
504  // Phi distribution of HLT objects passing filter i
505  histName = theHLTCollectionLabels[i].label()+"phi_all";
506  histTitle = HltHistTitle[i]+" #phi (ALL)";
507  tmphisto = iBooker.book1D(histName.c_str(),histTitle.c_str(),nbins_,-phiMax_, phiMax_);
508  phihist.push_back(tmphisto);
509  }
510 
511 
512  // Et distribution of HLT object that is closest delta-R match to sorted gen particle(s)
513  histName = theHLTCollectionLabels[i].label()+"et";
514  histTitle = HltHistTitle[i]+" Et";
515  tmphisto = iBooker.book1D(histName.c_str(),histTitle.c_str(),nbins_,plotPtMin,plotPtMax);
516  histEtOfHltObjMatchToGen.push_back(tmphisto);
517 
518  // eta distribution of HLT object that is closest delta-R match to sorted gen particle(s)
519  histName = theHLTCollectionLabels[i].label()+"eta";
520  histTitle = HltHistTitle[i]+" eta";
521  tmphisto = iBooker.book1D(histName.c_str(),histTitle.c_str(),nbins_,-etaMax_, etaMax_);
522  histEtaOfHltObjMatchToGen.push_back(tmphisto);
523 
524  if (!noPhiPlots_) {
525  // phi distribution of HLT object that is closest delta-R match to sorted gen particle(s)
526  histName = theHLTCollectionLabels[i].label()+"phi";
527  histTitle = HltHistTitle[i]+" phi";
528  tmphisto = iBooker.book1D(histName.c_str(),histTitle.c_str(),nbins_,-phiMax_, phiMax_);
529  histPhiOfHltObjMatchToGen.push_back(tmphisto);
530  }
531  }
532 
533  // Et distribution of gen object matching HLT object passing filter i
534  histName = theHLTCollectionLabels[i].label()+"et_MC_matched";
535  histTitle = HltHistTitle[i]+" Et (MC matched)";
536  tmphisto = iBooker.book1D(histName.c_str(),histTitle.c_str(),nbins_,plotPtMin,plotPtMax);
537  ethistmatch.push_back(tmphisto);
538 
539  // Eta distribution of gen object matching HLT object passing filter i
540  histName = theHLTCollectionLabels[i].label()+"eta_MC_matched";
541  histTitle = HltHistTitle[i]+" #eta (MC matched)";
542  tmphisto = iBooker.book1D(histName.c_str(),histTitle.c_str(),nbins_,-etaMax_, etaMax_);
543  etahistmatch.push_back(tmphisto);
544 
545  if (!noPhiPlots_) {
546  // Phi distribution of gen object matching HLT object passing filter i
547  histName = theHLTCollectionLabels[i].label()+"phi_MC_matched";
548  histTitle = HltHistTitle[i]+" #phi (MC matched)";
549  tmphisto = iBooker.book1D(histName.c_str(),histTitle.c_str(),nbins_,-phiMax_, phiMax_);
550  phihistmatch.push_back(tmphisto);
551  }
552  }
553 
554  // Et & eta distributions
555  etahists.push_back(etahist);
556  phihists.push_back(phihist);
557  ethists.push_back(ethist);
558  etahistmatchs.push_back(etahistmatch);
559  phihistmatchs.push_back(phihistmatch);
560  ethistmatchs.push_back(ethistmatch);
561  histEtOfHltObjMatchToGens.push_back(histEtOfHltObjMatchToGen);
562  histEtaOfHltObjMatchToGens.push_back(histEtaOfHltObjMatchToGen);
563  histPhiOfHltObjMatchToGens.push_back(histPhiOfHltObjMatchToGen);
564  // commented out because uses data not included in HTLDEBUG and uses
565  // Isolation distributions
566  //etahistisos.push_back(etahistiso);
567  //phihistisos.push_back(phihistiso);
568  //ethistisos.push_back(ethistiso);
569  //etahistisomatchs.push_back(etahistisomatch);
570  //phihistisomatchs.push_back(phihistisomatch);
571  //ethistisomatchs.push_back(ethistisomatch);
572  //histEtIsoOfHltObjMatchToGens.push_back(histEtIsoOfHltObjMatchToGen);
573  //histEtaIsoOfHltObjMatchToGens.push_back(histEtaIsoOfHltObjMatchToGen);
574  //histPhiIsoOfHltObjMatchToGens.push_back(histPhiIsoOfHltObjMatchToGen);
575 
576  totals.push_back(total);
577  totalmatchs.push_back(totalmatch);
578  etgens.push_back(etgen);
579  etagens.push_back(etagen);
580  phigens.push_back(phigen);
581  }
582 }
std::vector< MonitorElement * > totals
Definition: EmDQM.h:207
std::vector< std::vector< MonitorElement * > > histEtOfHltObjMatchToGens
Definition: EmDQM.h:203
unsigned int numOfHLTCollectionLabels
Definition: EmDQM.h:157
std::vector< std::vector< MonitorElement * > > phihists
Definition: EmDQM.h:198
std::string dirname_
Definition: EmDQM.h:88
bool noPhiPlots_
Definition: EmDQM.h:114
int pdgGen
Definition: EmDQM.h:167
std::vector< std::vector< MonitorElement * > > histPhiOfHltObjMatchToGens
Definition: EmDQM.h:205
double phiMax_
Definition: EmDQM.h:109
void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
std::vector< std::vector< MonitorElement * > > etahists
Definition: EmDQM.h:197
std::vector< MonitorElement * > etagens
Definition: EmDQM.h:211
std::vector< std::vector< MonitorElement * > > ethists
Definition: EmDQM.h:199
std::vector< edm::InputTag > theHLTCollectionLabels
Definition: EmDQM.h:156
std::vector< std::vector< MonitorElement * > > ethistmatchs
Definition: EmDQM.h:202
double plotPtMax
Definition: EmDQM.h:171
std::vector< std::vector< MonitorElement * > > etahistmatchs
Definition: EmDQM.h:200
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:115
void SetVarsFromPSet(std::vector< edm::ParameterSet >::iterator)
Definition: EmDQM.cc:1549
double plotPtMin
Definition: EmDQM.h:170
unsigned int nbins_
Definition: EmDQM.h:110
std::vector< std::vector< MonitorElement * > > phihistmatchs
Definition: EmDQM.h:201
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:277
std::vector< edm::ParameterSet > paramSets
Definition: EmDQM.h:153
std::vector< std::vector< MonitorElement * > > histEtaOfHltObjMatchToGens
Definition: EmDQM.h:204
bool useHumanReadableHistTitles_
Definition: EmDQM.h:112
std::vector< MonitorElement * > totalmatchs
Definition: EmDQM.h:208
bool mcMatchedOnly_
Definition: EmDQM.h:113
std::vector< std::string > theHLTCollectionHumanNames
Definition: EmDQM.h:158
std::vector< MonitorElement * > phigens
Definition: EmDQM.h:212
double etaMax_
Definition: EmDQM.h:108
std::vector< MonitorElement * > etgens
Definition: EmDQM.h:210
bool EmDQM::checkGeneratedParticlesRequirement ( const edm::Event event)
private

helper to check whether there were enough generator level electrons/photons (MC) or enough reco level electrons/photons to analyze this event.

Returns
if the event has enough of these candidates.

Definition at line 591 of file EmDQM.cc.

References funct::abs(), reco::LeafCandidate::et(), PVValHelper::eta, gencut_, genEtaAcc_, GenHFHadronMatcher_cfi::genParticles, genParticles_token, mps_fire::i, edm::HandleBase::isValid(), OUTPUT_WARNINGS, pdgGen, plotEtMin, pTGenComparator_, and verbosity_.

Referenced by analyze().

592 {
594  // Decide if this was an event of interest. //
595  // Did the highest energy particles happen //
596  // to have |eta| < 2.5 ? Then continue. //
599  event.getByToken(genParticles_token, genParticles);
600  if(!genParticles.isValid()) {
602  edm::LogWarning("EmDQM") << "genParticles invalid.";
603  return false;
604  }
605 
606  std::vector<reco::LeafCandidate> allSortedGenParticles;
607 
608  for(edm::View<reco::Candidate>::const_iterator currentGenParticle = genParticles->begin(); currentGenParticle != genParticles->end(); currentGenParticle++){
609 
610  // TODO: do we need to check the states here again ?
611  // in principle, there should collections produced with the python configuration
612  // (other than 'genParticles') which fulfill these criteria
613  if ( !( abs((*currentGenParticle).pdgId())==pdgGen && (*currentGenParticle).status()==1 && (*currentGenParticle).et() > 2.0) ) continue;
614 
615  reco::LeafCandidate tmpcand( *(currentGenParticle) );
616 
617  if (tmpcand.et() < plotEtMin) continue;
618 
619  allSortedGenParticles.push_back(tmpcand);
620  }
621 
622  std::sort(allSortedGenParticles.begin(), allSortedGenParticles.end(),pTGenComparator_);
623 
624  // return false if not enough particles found
625  if (allSortedGenParticles.size() < gencut_)
626  return false;
627 
628  // additional check (this might be legacy code and we need to check
629  // whether this should not be removed ?)
630 
631  // We now have a sorted collection of all generated particles
632  // with pdgId = pdgGen.
633  // Loop over them to see if the top gen particles have eta within acceptance
634  // bool keepEvent = true;
635  for (unsigned int i = 0 ; i < gencut_ ; i++ ) {
636  bool inECALgap = fabs(allSortedGenParticles[i].eta()) > 1.4442 && fabs(allSortedGenParticles[i].eta()) < 1.556;
637  if ( (fabs(allSortedGenParticles[i].eta()) > genEtaAcc_) || inECALgap ) {
638  //edm::LogWarning("EmDQM") << "Throwing event away. Gen particle with pdgId="<< allSortedGenParticles[i].pdgId() <<"; et="<< allSortedGenParticles[i].et() <<"; and eta="<< allSortedGenParticles[i].eta() <<" beyond acceptance.";
639  return false;
640  }
641  }
642 
643  // all tests passed
644  return true;
645 }
edm::EDGetTokenT< edm::View< reco::Candidate > > genParticles_token
Definition: EmDQM.h:218
int pdgGen
Definition: EmDQM.h:167
double plotEtMin
Definition: EmDQM.h:169
GreaterByPt< reco::GenParticle > pTGenComparator_
Definition: EmDQM.h:215
unsigned int gencut_
Definition: EmDQM.h:182
static const unsigned OUTPUT_WARNINGS
Definition: EmDQM.h:240
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
bool isValid() const
Definition: HandleBase.h:74
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
Definition: View.h:86
unsigned int verbosity_
Definition: EmDQM.h:102
double genEtaAcc_
Definition: EmDQM.h:103
bool EmDQM::checkRecoParticlesRequirement ( const edm::Event event)
private

similar to checkGeneratedParticlesRequirement(..) but for reconstructed particles. For the moment, there are some additional requirements in the MC version so we can't use the same code for both cases.

Definition at line 648 of file EmDQM.cc.

References autoConfMode_, gencut_, gencutColl_fidDiGamma_token, gencutColl_fidGammaJet_token, gencutColl_fidTripleEle_token, gencutColl_fidWenu_token, gencutColl_fidZee_token, gencutColl_manualConf_token, edm::HandleBase::isValid(), OUTPUT_WARNINGS, pdgGen, plotEtMin, reqNum, and verbosity_.

Referenced by analyze().

649 {
650  // note that this code is very similar to the one in checkGeneratedParticlesRequirement(..)
651  // and hopefully can be merged with it at some point in the future
652 
653  edm::Handle< edm::View<reco::Candidate> > referenceParticles;
654  // get the right data according to the trigger path currently looked at
655  if (autoConfMode_) {
656  switch(reqNum) {
657  case 1:
658  if (pdgGen == 11) event.getByToken(gencutColl_fidWenu_token, referenceParticles);
659  else event.getByToken(gencutColl_fidGammaJet_token, referenceParticles);
660  break;
661  case 2:
662  if (pdgGen == 11) event.getByToken(gencutColl_fidZee_token, referenceParticles);
663  else event.getByToken(gencutColl_fidDiGamma_token, referenceParticles);
664  break;
665  case 3:
666  event.getByToken(gencutColl_fidTripleEle_token, referenceParticles);
667  break;
668  }
669  } else {
670  event.getByToken(gencutColl_manualConf_token, referenceParticles);
671  }
672  if(!referenceParticles.isValid()) {
674  edm::LogWarning("EmDQM") << "referenceParticles invalid.";
675  return false;
676  }
677 
678  std::vector<const reco::Candidate *> allSortedReferenceParticles;
679 
680  for(edm::View<reco::Candidate>::const_iterator currentReferenceParticle = referenceParticles->begin();
681  currentReferenceParticle != referenceParticles->end();
682  currentReferenceParticle++)
683  {
684  if ( currentReferenceParticle->et() <= 2.0)
685  continue;
686 
687  // Note that for determining the overall efficiency,
688  // we should only allow
689  //
690  // HOWEVER: for turn-on curves, we need to let
691  // more electrons pass
692  if (currentReferenceParticle->et() < plotEtMin)
693  continue;
694 
695  // TODO: instead of filling a new vector we could simply count here...
696  allSortedReferenceParticles.push_back(&(*currentReferenceParticle));
697  }
698 
699  // std::sort(allSortedReferenceParticles.begin(), allSortedReferenceParticles.end(),pTComparator_);
700 
701  // return false if not enough particles found
702  return allSortedReferenceParticles.size() >= gencut_;
703 }
edm::EDGetTokenT< edm::View< reco::Candidate > > gencutColl_fidZee_token
Definition: EmDQM.h:222
int pdgGen
Definition: EmDQM.h:167
double plotEtMin
Definition: EmDQM.h:169
edm::EDGetTokenT< edm::View< reco::Candidate > > gencutColl_fidWenu_token
Definition: EmDQM.h:221
unsigned int gencut_
Definition: EmDQM.h:182
static const unsigned OUTPUT_WARNINGS
Definition: EmDQM.h:240
edm::EDGetTokenT< edm::View< reco::Candidate > > gencutColl_fidGammaJet_token
Definition: EmDQM.h:224
bool isValid() const
Definition: HandleBase.h:74
edm::EDGetTokenT< edm::View< reco::Candidate > > gencutColl_fidDiGamma_token
Definition: EmDQM.h:225
edm::EDGetTokenT< edm::View< reco::Candidate > > gencutColl_fidTripleEle_token
Definition: EmDQM.h:223
bool autoConfMode_
Definition: EmDQM.h:97
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
Definition: View.h:86
edm::EDGetTokenT< edm::View< reco::Candidate > > gencutColl_manualConf_token
Definition: EmDQM.h:226
unsigned int verbosity_
Definition: EmDQM.h:102
unsigned int reqNum
Definition: EmDQM.h:166
int EmDQM::countSubstring ( const std::string &  str,
const std::string &  sub 
)
private

Definition at line 1069 of file EmDQM.cc.

References KineDebug3::count(), and PFRecoTauDiscriminationByIsolation_cfi::offset.

Referenced by findEgammaPaths(), and makePSetForL1SeedFilter().

1070 {
1071  if (sub.length() == 0) return 0;
1072  int count = 0;
1073  for (size_t offset = str.find(sub); offset != std::string::npos;
1074  offset = str.find(sub, offset + sub.length()))
1075  {
1076  ++count;
1077  }
1078  return count;
1079 }
void EmDQM::dqmBeginRun ( edm::Run const &  iRun,
edm::EventSetup const &  iSetup 
)
overridevirtual

Reimplemented from DQMEDAnalyzer.

Definition at line 72 of file EmDQM.cc.

References edm::ParameterSet::addParameter(), edm::ParameterSet::addUntrackedParameter(), autoConfMode_, HLTConfigProvider::changed(), edm::ParameterSet::empty(), edm::ParameterSet::exists(), ALCARECOTkAlBeamHalo_cff::filter, findEgammaPaths(), getFilterModules(), edm::ParameterSet::getParameter(), getPrimaryEtCut(), hltCollectionLabelsFound, hltCollectionLabelsFoundPerPath, hltCollectionLabelsMissed, hltCollectionLabelsMissedPerPath, hltConfig_, mps_fire::i, HLTConfigProvider::init(), HLTConfigProvider::inited(), isData_, diffTwoXMLs::label, makePSetForEgammaDoubleEtDeltaPhiFilter(), makePSetForEgammaGenericFilter(), makePSetForEgammaGenericQuadraticFilter(), makePSetForElectronGenericFilter(), makePSetForEtFilter(), makePSetForL1SeedFilter(), makePSetForL1SeedToSuperClusterMatchFilter(), makePSetForOneOEMinusOneOPFilter(), makePSetForPixelMatchFilter(), HLTConfigProvider::modulePSet(), OUTPUT_ALL, OUTPUT_ERRORS, OUTPUT_WARNINGS, paramSets, edm::InputTag::process(), HLTConfigProvider::processName(), AlignmentTrackSelector_cfi::ptMax, ptMax_, ALCARECOTkAlBeamHalo_cff::ptMin, ptMin_, HLTConfigProvider::removeVersion(), HLTConfigProvider::size(), AlCaHLTBitMon_QueryRunRegistry::string, HLTConfigProvider::tableName(), HLTConfigProvider::triggerIndex(), triggerObject_, trigger::TriggerPhoton, TYPE_DOUBLE_ELE, TYPE_DOUBLE_PHOTON, TYPE_SINGLE_ELE, TYPE_SINGLE_PHOTON, TYPE_TRIPLE_ELE, and verbosity_.

73 {
74  bool changed(true);
75  if (hltConfig_.init(iRun, iSetup, triggerObject_.process(), changed)) {
76 
77  // if init returns TRUE, initialisation has succeeded!
78 
79  if (autoConfMode_) {
80  if (verbosity_ >= OUTPUT_ALL) {
81  // Output general information on the menu
82  edm::LogPrint("EmDQM") << "inited=" << hltConfig_.inited();
83  edm::LogPrint("EmDQM") << "changed=" << hltConfig_.changed();
84  edm::LogPrint("EmDQM") << "processName=" << hltConfig_.processName();
85  edm::LogPrint("EmDQM") << "tableName=" << hltConfig_.tableName();
86  edm::LogPrint("EmDQM") << "size=" << hltConfig_.size();
87  edm::LogInfo("EmDQM") << "The following filter types are not analyzed: \n"
88  << "\tHLTGlobalSumsMET\n"
89  << "\tHLTHtMhtFilter\n"
90  << "\tHLTMhtFilter\n"
91  << "\tHLTJetTag\n"
92  << "\tHLT1CaloJet\n"
93  << "\tHLT1CaloMET\n"
94  << "\tHLT1CaloBJet\n"
95  << "\tHLT1Tau\n"
96  << "\tHLT1PFTau\n"
97  << "\tPFTauSelector\n"
98  << "\tHLT1PFJet\n"
99  << "\tHLTPFJetCollectionsFilter\n"
100  << "\tHLTPFJetCollectionsVBFFilter\n"
101  << "\tHLTPFJetTag\n"
102  << "\tEtMinCaloJetSelector\n"
103  << "\tEtMinPFJetSelector\n"
104  << "\tLargestEtCaloJetSelector\n"
105  << "\tLargestEtPFJetSelector\n"
106  << "\tHLTEgammaTriggerFilterObjectWrapper\n"
107  << "\tHLTEgammaDoubleLegCombFilter\n"
108  << "\tHLT2ElectronTau\n"
109  << "\tHLT2ElectronMET\n"
110  << "\tHLT2ElectronPFTau\n"
111  << "\tHLTPMMassFilter\n"
112  << "\tHLTHcalTowerFilter\n"
113  << "\tHLT1Photon\n"
114  << "\tHLTRFilter\n"
115  << "\tHLTRHemisphere\n"
116  << "\tHLTElectronPFMTFilter\n"
117  << "\tPrimaryVertexObjectFilter\n"
118  << "\tHLTEgammaAllCombMassFilter\n"
119  << "\tHLTMuon*\n"
120  ;
121  }
122 
123 
124  // All electron and photon paths
125  std::vector<std::vector<std::string> > egammaPaths = findEgammaPaths();
126  //std::cout << "Found " << egammaPaths[TYPE_SINGLE_ELE].size() << " single electron paths" << std::endl;
127  //std::cout << "Found " << egammaPaths[TYPE_DOUBLE_ELE].size() << " double electron paths" << std::endl;
128  //std::cout << "Found " << egammaPaths[TYPE_TRIPLE_ELE].size() << " triple electron paths" << std::endl;
129  //std::cout << "Found " << egammaPaths[TYPE_SINGLE_PHOTON].size() << " single photon paths" << std::endl;
130  //std::cout << "Found " << egammaPaths[TYPE_DOUBLE_PHOTON].size() << " double photon paths" << std::endl;
131 
132  std::vector<std::string> filterModules;
133 
134  for (unsigned int j=0; j < egammaPaths.size() ; j++) {
135  if (verbosity_ >= OUTPUT_ALL) {
136  switch(j) {
137  case TYPE_SINGLE_ELE:
138  edm::LogPrint("EmDQM") << "/////////////////////////////////////////\nSingle electron paths: ";
139  break;
140  case TYPE_DOUBLE_ELE:
141  edm::LogPrint("EmDQM") << "/////////////////////////////////////////\nDouble electron paths: ";
142  break;
143  case TYPE_TRIPLE_ELE:
144  edm::LogPrint("EmDQM") << "/////////////////////////////////////////\nTriple electron paths: ";
145  break;
146  case TYPE_SINGLE_PHOTON:
147  edm::LogPrint("EmDQM") << "/////////////////////////////////////////\nSingle photon paths: ";
148  break;
149  case TYPE_DOUBLE_PHOTON:
150  edm::LogPrint("EmDQM") << "/////////////////////////////////////////\nDouble photon paths: ";
151  break;
152  }
153  }
154 
155  for (unsigned int i=0; i < egammaPaths.at(j).size() ; i++) {
156  // get pathname of this trigger
157  const std::string pathName = egammaPaths.at(j).at(i);
158  if (verbosity_ >= OUTPUT_ALL)
159  edm::LogPrint("EmDQM") << "Path: " << pathName;
160 
161  // get filters of the current path
162  filterModules = getFilterModules(pathName);
163 
164  //--------------------
165  edm::ParameterSet paramSet;
166 
167  paramSet.addUntrackedParameter("pathIndex", hltConfig_.triggerIndex(pathName));
168  paramSet.addParameter("@module_label", hltConfig_.removeVersion(pathName) + "_DQM");
169  //paramSet.addParameter("@module_label", pathName + "_DQM");
170 
171  // plotting parameters (untracked because they don't affect the physics)
172  double genEtMin = getPrimaryEtCut(pathName);
173  if (genEtMin >= 0) {
174  paramSet.addUntrackedParameter("genEtMin", genEtMin);
175  } else {
177  edm::LogWarning("EmDQM") << "Pathname: '" << pathName << "': Unable to determine a minimum Et. Will not include this path in the validation.";
178  continue;
179  }
180 
181  // set the x axis of the et plots to some reasonable value based
182  // on the primary et cut determined from the path name
183  double ptMax = ptMax_;
184  double ptMin = ptMin_;
185  if (ptMax < (1.2*genEtMin)) {
186  paramSet.addUntrackedParameter<double>("PtMax", (10*ceil(0.12 * genEtMin)));
187  paramSet.addUntrackedParameter<double>("PtMin", (10*ceil(0.12 * genEtMin) - ptMax + ptMin));
188  }
189  else {
190  paramSet.addUntrackedParameter<double>("PtMax", ptMax);
191  paramSet.addUntrackedParameter<double>("PtMin", ptMin);
192  }
193 
194  //preselction cuts
195  switch (j) {
196  case TYPE_SINGLE_ELE:
197  paramSet.addParameter<unsigned>("reqNum", 1);
198  paramSet.addParameter<int>("pdgGen", 11);
199  paramSet.addParameter<edm::InputTag>("cutcollection", edm::InputTag("fiducialWenu"));
200  paramSet.addParameter<int>("cutnum", 1);
201  break;
202  case TYPE_DOUBLE_ELE:
203  paramSet.addParameter<unsigned>("reqNum", 2);
204  paramSet.addParameter<int>("pdgGen", 11);
205  paramSet.addParameter<edm::InputTag>("cutcollection", edm::InputTag("fiducialZee"));
206  paramSet.addParameter<int>("cutnum", 2);
207  break;
208  case TYPE_TRIPLE_ELE:
209  paramSet.addParameter<unsigned>("reqNum", 3);
210  paramSet.addParameter<int>("pdgGen", 11);
211  paramSet.addParameter<edm::InputTag>("cutcollection", edm::InputTag("fiducialTripleEle"));
212  paramSet.addParameter<int>("cutnum", 3);
213  break;
214  case TYPE_SINGLE_PHOTON:
215  paramSet.addParameter<unsigned>("reqNum", 1);
216  paramSet.addParameter<int>("pdgGen", 22);
217  paramSet.addParameter<edm::InputTag>("cutcollection", edm::InputTag("fiducialGammaJet"));
218  paramSet.addParameter<int>("cutnum", 1);
219  break;
220  case TYPE_DOUBLE_PHOTON:
221  paramSet.addParameter<unsigned>("reqNum", 2);
222  paramSet.addParameter<int>("pdgGen", 22);
223  paramSet.addParameter<edm::InputTag>("cutcollection", edm::InputTag("fiducialDiGamma"));
224  paramSet.addParameter<int>("cutnum", 2);
225  }
226  //--------------------
227 
228  // TODO: extend this
229  if (isData_) paramSet.addParameter<edm::InputTag>("cutcollection", edm::InputTag("gsfElectrons"));
230 
231  std::vector<edm::ParameterSet> filterVPSet;
232  edm::ParameterSet filterPSet;
233  std::string moduleLabel;
234 
235  // loop over filtermodules of current trigger path
236  for (std::vector<std::string>::iterator filter = filterModules.begin(); filter != filterModules.end(); ++filter) {
237  std::string moduleType = hltConfig_.modulePSet(*filter).getParameter<std::string>("@module_type");
238  moduleLabel = hltConfig_.modulePSet(*filter).getParameter<std::string>("@module_label");
239 
240  // first check if it is a filter we are not interrested in
241  if (moduleType == "Pythia6GeneratorFilter" ||
242  moduleType == "HLTTriggerTypeFilter" ||
243  moduleType == "HLTLevel1Activity" ||
244  moduleType == "HLTPrescaler" ||
245  moduleType == "HLTBool")
246  continue;
247 
248  // now check for the known filter types
249  if (moduleType == "HLTLevel1GTSeed") {
250  filterPSet = makePSetForL1SeedFilter(moduleLabel);
251  }
252  else if (moduleType == "HLTEgammaL1MatchFilterRegional") {
253  filterPSet = makePSetForL1SeedToSuperClusterMatchFilter(moduleLabel);
254  }
255  else if (moduleType == "HLTEgammaEtFilter") {
256  filterPSet = makePSetForEtFilter(moduleLabel);
257  }
258  else if (moduleType == "HLTElectronOneOEMinusOneOPFilterRegional") {
259  filterPSet = makePSetForOneOEMinusOneOPFilter(moduleLabel);
260  }
261  else if (moduleType == "HLTElectronPixelMatchFilter") {
262  filterPSet = makePSetForPixelMatchFilter(moduleLabel);
263  }
264  else if (moduleType == "HLTEgammaGenericFilter") {
265  filterPSet = makePSetForEgammaGenericFilter(moduleLabel);
266  }
267  else if (moduleType == "HLTEgammaGenericQuadraticFilter") {
268  filterPSet = makePSetForEgammaGenericQuadraticFilter(moduleLabel);
269  }
270  else if (moduleType == "HLTElectronGenericFilter") {
271  filterPSet = makePSetForElectronGenericFilter(moduleLabel);
272  }
273  else if (moduleType == "HLTEgammaDoubleEtDeltaPhiFilter") {
274  filterPSet = makePSetForEgammaDoubleEtDeltaPhiFilter(moduleLabel);
275  }
276  else if (moduleType == "HLTGlobalSumsMET"
277  || moduleType == "HLTHtMhtFilter"
278  || moduleType == "HLTMhtFilter"
279  || moduleType == "HLTJetTag"
280  || moduleType == "HLT1CaloJet"
281  || moduleType == "HLT1CaloMET"
282  || moduleType == "HLT1CaloBJet"
283  || moduleType == "HLT1Tau"
284  || moduleType == "HLT1PFTau"
285  || moduleType == "PFTauSelector"
286  || moduleType == "HLT1PFJet"
287  || moduleType == "HLTPFJetCollectionsFilter"
288  || moduleType == "HLTPFJetCollectionsVBFFilter"
289  || moduleType == "HLTPFJetTag"
290  || moduleType == "EtMinCaloJetSelector"
291  || moduleType == "EtMinPFJetSelector"
292  || moduleType == "LargestEtCaloJetSelector"
293  || moduleType == "LargestEtPFJetSelector"
294  || moduleType == "HLTEgammaTriggerFilterObjectWrapper" // 'fake' filter
295  || moduleType == "HLTEgammaDoubleLegCombFilter" // filter does not put anything in TriggerEventWithRefs
296  || moduleType == "HLT2ElectronMET"
297  || moduleType == "HLT2ElectronTau"
298  || moduleType == "HLT2ElectronPFTau"
299  || moduleType == "HLTPMMassFilter"
300  || moduleType == "HLTHcalTowerFilter"
301  || moduleType == "HLT1Photon"
302  || moduleType == "HLTRFilter"
303  || moduleType == "HLTRHemisphere"
304  || moduleType == "HLTElectronPFMTFilter"
305  || moduleType == "PrimaryVertexObjectFilter"
306  || moduleType == "HLTEgammaAllCombMassFilter"
307  || moduleType.find("HLTMuon") != std::string::npos
308  )
309  continue;
310  else {
312  edm::LogWarning("EmDQM") << "No parameter set for filter '" << moduleLabel << "' with filter type '" << moduleType << "' added. Module will not be analyzed.";
313  continue;
314  }
315 
316  // something went wrong when the parameter set is empty.
317  if (!filterPSet.empty()) {
318  if (!hltConfig_.modulePSet(moduleLabel).exists("saveTags")) {
319  // make sure that 'theHLTOutputTypes' before an unseeded filter in a photon path is set to trigger::TriggerPhoton
320  // this is coupled to the parameter 'saveTag = true'
321  if (moduleLabel.find("Unseeded") != std::string::npos && (j == TYPE_DOUBLE_PHOTON || j == TYPE_SINGLE_PHOTON)) {
322  filterVPSet.back().addParameter<int>("theHLTOutputTypes", trigger::TriggerPhoton);
323  }
324  }
325  // if ncandcut is -1 (when parsing for the number of particles in the name of the L1seed filter fails),
326  // fall back to setting ncandcut to the number of particles needed for the given path.
327  if (filterPSet.getParameter<int>("ncandcut") < 0) {
328  edm::LogPrint("EmDQM") << "No number of candidates for filter " << moduleLabel << " found. Set to " << paramSet.getParameter<int>("cutnum") << ", determined from path name.";
329  filterPSet.addParameter<int>("ncandcut", paramSet.getParameter<int>("cutnum"));
330  } else if (filterPSet.getParameter<int>("ncandcut") > paramSet.getParameter<int>("cutnum")) {
331  edm::LogInfo("EmDQM") << "Changed required number of candidates from " << paramSet.getParameter<int>("cutnum") << " to " << filterPSet.getParameter<int>("ncandcut") << " for filter " << moduleLabel;
332  paramSet.addParameter<int>("cutnum", filterPSet.getParameter<int>("ncandcut"));
333  paramSet.addParameter<unsigned>("reqNum", (unsigned)filterPSet.getParameter<int>("ncandcut"));
334  }
335 
336  filterVPSet.push_back(filterPSet);
337  }
338  else
339  break;
340 
341  } // end loop over filter modules of current trigger path
342 
343  // do not include this path when an empty filterPSet is detected.
344  if (!filterPSet.empty()) {
345  std::string lastModuleName = filterPSet.getParameter<edm::InputTag>("HLTCollectionLabels").label();
346  if (!hltConfig_.modulePSet(lastModuleName).exists("saveTags")) {
347  // make sure that 'theHLTOutputTypes' of the last filter of a photon path is set to trigger::TriggerPhoton
348  // this is coupled to the parameter 'saveTag = true'
349  if ((j == TYPE_SINGLE_PHOTON || j == TYPE_DOUBLE_PHOTON) && pathName.rfind("Ele") == std::string::npos) {
350  filterVPSet.back().addParameter<int>("theHLTOutputTypes", trigger::TriggerPhoton);
351  }
352  }
353  paramSet.addParameter<std::vector<edm::ParameterSet> >("filters", filterVPSet);
354  }
355  else {
356  if (verbosity_ >= OUTPUT_ALL)
357  edm::LogPrint("EmDQM") << "Will not include this path in the validation due to errors while generating the parameter set.";
358  continue;
359  }
360 
361  // dump generated parameter set
362  //std::cout << paramSet.dump() << std::endl;
363 
364  paramSets.push_back(paramSet);
365  } // loop over all paths of this analysis type
366 
367  } // loop over analysis types (single ele etc.)
368  }
369 
372 
374  // loop over all the trigger path parameter sets
376  for (std::vector<edm::ParameterSet>::iterator psetIt = paramSets.begin(); psetIt != paramSets.end(); ++psetIt) {
379  }
380 
381  if (changed) {
382  // The HLT config has actually changed wrt the previous Run, hence rebook your
383  // histograms or do anything else dependent on the revised HLT config
384  }
385  } else {
386  // if init returns FALSE, initialisation has NOT succeeded, which indicates a problem
387  // with the file and/or code and needs to be investigated!
388  if (verbosity_ >= OUTPUT_ERRORS)
389  edm::LogError("EmDQM") << " HLT config extraction failure with process name '" << triggerObject_.process() << "'.";
390  // In this case, all access methods will return empty values!
391  }
392 }
unsigned int size() const
number of trigger paths in trigger table
edm::ParameterSet makePSetForEgammaGenericFilter(const std::string &)
Definition: EmDQM.cc:1328
double ptMax_
Definition: EmDQM.h:106
T getParameter(std::string const &) const
bool empty() const
Definition: ParameterSet.h:218
edm::ParameterSet makePSetForEgammaGenericQuadraticFilter(const std::string &)
Definition: EmDQM.cc:1406
std::vector< std::vector< std::string > > findEgammaPaths()
Definition: EmDQM.cc:1084
std::vector< std::set< std::string > > hltCollectionLabelsMissedPerPath
Definition: EmDQM.h:189
static const unsigned OUTPUT_ALL
Definition: EmDQM.h:241
std::set< std::string > hltCollectionLabelsFound
Definition: EmDQM.h:186
std::vector< std::set< std::string > > hltCollectionLabelsFoundPerPath
Definition: EmDQM.h:185
bool exists(std::string const &parameterName) const
checks if a parameter exists
HLTConfigProvider hltConfig_
The instance of the HLTConfigProvider as a data member.
Definition: EmDQM.h:132
edm::ParameterSet makePSetForOneOEMinusOneOPFilter(const std::string &)
Definition: EmDQM.cc:1277
const std::string & tableName() const
HLT ConfDB table name.
static const unsigned TYPE_DOUBLE_PHOTON
Definition: EmDQM.h:234
const edm::ParameterSet & modulePSet(const std::string &module) const
ParameterSet of module.
edm::ParameterSet makePSetForElectronGenericFilter(const std::string &)
Definition: EmDQM.cc:1483
bool changed() const
changed?
static const unsigned OUTPUT_ERRORS
Definition: EmDQM.h:239
static const std::string removeVersion(const std::string &trigger)
bool inited() const
Accessors (const methods)
edm::ParameterSet makePSetForL1SeedFilter(const std::string &)
Definition: EmDQM.cc:1184
unsigned int triggerIndex(const std::string &triggerName) const
slot position of trigger path in trigger table (0 to size-1)
std::vector< std::string > getFilterModules(const std::string &)
Definition: EmDQM.cc:1141
edm::InputTag triggerObject_
Definition: EmDQM.h:101
static const unsigned OUTPUT_WARNINGS
Definition: EmDQM.h:240
void addParameter(std::string const &name, T const &value)
Definition: ParameterSet.h:144
std::set< std::string > hltCollectionLabelsMissed
Definition: EmDQM.h:190
edm::ParameterSet makePSetForEgammaDoubleEtDeltaPhiFilter(const std::string &)
Definition: EmDQM.cc:1311
bool isData_
Definition: EmDQM.h:105
const std::string & processName() const
process name
static const unsigned TYPE_SINGLE_PHOTON
Definition: EmDQM.h:233
double ptMin_
Definition: EmDQM.h:107
void addUntrackedParameter(std::string const &name, T const &value)
Definition: ParameterSet.h:208
std::vector< edm::ParameterSet > paramSets
Definition: EmDQM.h:153
bool init(const edm::Run &iRun, const edm::EventSetup &iSetup, const std::string &processName, bool &changed)
d&#39;tor
bool autoConfMode_
Definition: EmDQM.h:97
std::string const & process() const
Definition: InputTag.h:40
static const unsigned TYPE_SINGLE_ELE
Definition: EmDQM.h:231
double getPrimaryEtCut(const std::string &)
Definition: EmDQM.cc:1166
edm::ParameterSet makePSetForL1SeedToSuperClusterMatchFilter(const std::string &)
Definition: EmDQM.cc:1238
static const unsigned TYPE_DOUBLE_ELE
Definition: EmDQM.h:232
static const unsigned TYPE_TRIPLE_ELE
Definition: EmDQM.h:235
unsigned int verbosity_
Definition: EmDQM.h:102
edm::ParameterSet makePSetForEtFilter(const std::string &)
Definition: EmDQM.cc:1260
edm::ParameterSet makePSetForPixelMatchFilter(const std::string &)
Definition: EmDQM.cc:1294
void EmDQM::endJob ( void  )

Definition at line 1062 of file EmDQM.cc.

1063 {
1064 
1065 }
void EmDQM::endRun ( edm::Run const &  iRun,
edm::EventSetup const &  iSetup 
)
overridevirtual

Reimplemented from edm::stream::EDAnalyzerBase.

Definition at line 1019 of file EmDQM.cc.

References KineDebug3::count(), edm::InputTag::encode(), hltCollectionLabelsFoundPerPath, hltCollectionLabelsMissedPerPath, OUTPUT_ALL, OUTPUT_WARNINGS, paramSets, SetVarsFromPSet(), GlobalPosition_Frontier_DevDB_cff::tag, and verbosity_.

1020 {
1021  // loop over all the trigger path parameter sets
1022  unsigned int vPos = 0;
1023  for (std::vector<edm::ParameterSet>::iterator psetIt = paramSets.begin(); psetIt != paramSets.end(); ++psetIt, ++vPos) {
1024  SetVarsFromPSet(psetIt);
1025 
1026  // print information about hltCollectionLabels which were not found
1027  // (but only those which were never found)
1028 
1029  // check which ones were never found
1030  std::vector<std::string> labelsNeverFound;
1031 
1032  BOOST_FOREACH(const edm::InputTag &tag, hltCollectionLabelsMissedPerPath.at(vPos))
1033  {
1034  if ((hltCollectionLabelsFoundPerPath.at(vPos)).count(tag.encode()) == 0)
1035  // never found
1036  labelsNeverFound.push_back(tag.encode());
1037 
1038  } // loop over all tags which were missed at least once
1039 
1040  if (labelsNeverFound.empty())
1041  continue;
1042 
1043  std::sort(labelsNeverFound.begin(), labelsNeverFound.end());
1044 
1045  // there was at least one label which was never found
1046  // (note that this could also be because the corresponding
1047  // trigger path slowly fades out to zero efficiency)
1048  if (verbosity_ >= OUTPUT_WARNINGS)
1049  edm::LogWarning("EmDQM") << "There were some HLTCollectionLabels which were never found:";
1050 
1051  BOOST_FOREACH(const edm::InputTag &tag, labelsNeverFound)
1052  {
1053  if (verbosity_ >= OUTPUT_ALL)
1054  edm::LogPrint("EmDQM") << " " << tag;
1055  }
1056  }
1057 }
std::vector< std::set< std::string > > hltCollectionLabelsMissedPerPath
Definition: EmDQM.h:189
static const unsigned OUTPUT_ALL
Definition: EmDQM.h:241
std::vector< std::set< std::string > > hltCollectionLabelsFoundPerPath
Definition: EmDQM.h:185
std::string encode() const
Definition: InputTag.cc:166
static const unsigned OUTPUT_WARNINGS
Definition: EmDQM.h:240
void SetVarsFromPSet(std::vector< edm::ParameterSet >::iterator)
Definition: EmDQM.cc:1549
std::vector< edm::ParameterSet > paramSets
Definition: EmDQM.h:153
unsigned int verbosity_
Definition: EmDQM.h:102
std::vector< std::vector< std::string > > EmDQM::findEgammaPaths ( )
private

Definition at line 1084 of file EmDQM.cc.

References countSubstring(), hltConfig_, mps_fire::i, callgraph::path, HLTConfigProvider::size(), AlCaHLTBitMon_QueryRunRegistry::string, HLTConfigProvider::triggerName(), TYPE_DOUBLE_ELE, TYPE_DOUBLE_PHOTON, TYPE_SINGLE_ELE, TYPE_SINGLE_PHOTON, and TYPE_TRIPLE_ELE.

Referenced by dqmBeginRun().

1085 {
1086  std::vector<std::vector<std::string> > Paths(5);
1087  // Loop over all paths in the menu
1088  for (unsigned int i=0; i<hltConfig_.size(); i++) {
1089 
1091 
1092  // Find electron and photon paths and classify them
1093  if (int(path.find("HLT_")) == 0) { // Path should start with 'HLT_'
1094 
1095  int scCount = countSubstring(path, "_SC");
1096  int eleCount = countSubstring(path, "Ele");
1097  int doubleEleCount = countSubstring(path, "DoubleEle");
1098  int doubleSCCount = countSubstring(path, "DiSC");
1099  int tripleEleCount = countSubstring(path, "TripleEle");
1100  int photonCount = countSubstring(path, "hoton");
1101  int doublePhotonCount = countSubstring(path, "DoublePhoton") + countSubstring(path, "Diphoton");
1102 
1103  int totEleCount = 2*tripleEleCount + doubleEleCount + eleCount + scCount + 2*doubleSCCount;
1104  int totPhotonCount = doublePhotonCount + photonCount;
1105 
1106  if (totEleCount + totPhotonCount < 1) continue;
1107  switch (totEleCount) {
1108  case 1:
1109  Paths[TYPE_SINGLE_ELE].push_back(path);
1110  //std::cout << "Electron \t" << path << std::endl;
1111  break;
1112  case 2:
1113  Paths[TYPE_DOUBLE_ELE].push_back(path);
1114  //std::cout << "DoubleElectron \t" << path << std::endl;
1115  break;
1116  case 3:
1117  Paths[TYPE_TRIPLE_ELE].push_back(path);
1118  //std::cout << "TripleElectron \t" << path << std::endl;
1119  break;
1120  }
1121 
1122  switch (totPhotonCount) {
1123  case 1:
1124  Paths[TYPE_SINGLE_PHOTON].push_back(path);
1125  //std::cout << "Photon \t\t" << path << std::endl;
1126  break;
1127  case 2:
1128  Paths[TYPE_DOUBLE_PHOTON].push_back(path);
1129  //std::cout << "DoublePhoton \t" << path << std::endl;
1130  break;
1131  }
1132  }
1133  //std::cout << i << " triggerName: " << path << " containing " << hltConfig_.size(i) << " modules."<< std::endl;
1134  }
1135  return Paths;
1136 }
unsigned int size() const
number of trigger paths in trigger table
const std::string & triggerName(unsigned int triggerIndex) const
HLTConfigProvider hltConfig_
The instance of the HLTConfigProvider as a data member.
Definition: EmDQM.h:132
static const unsigned TYPE_DOUBLE_PHOTON
Definition: EmDQM.h:234
static const unsigned TYPE_SINGLE_PHOTON
Definition: EmDQM.h:233
int countSubstring(const std::string &, const std::string &)
Definition: EmDQM.cc:1069
static const unsigned TYPE_SINGLE_ELE
Definition: EmDQM.h:231
static const unsigned TYPE_DOUBLE_ELE
Definition: EmDQM.h:232
static const unsigned TYPE_TRIPLE_ELE
Definition: EmDQM.h:235
std::vector< std::string > EmDQM::getFilterModules ( const std::string &  path)
private

Definition at line 1141 of file EmDQM.cc.

References filters, hltConfig_, mps_fire::i, HLTConfigProvider::moduleEDMType(), HLTConfigProvider::moduleLabel(), HLTConfigProvider::moduleType(), HLTConfigProvider::size(), and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by dqmBeginRun().

1142 {
1143  std::vector<std::string> filters;
1144 
1145  //std::cout << "Pathname: " << path << std::endl;
1146 
1147  // Loop over all modules in the path
1148  for (unsigned int i=0; i<hltConfig_.size(path); i++) {
1149 
1151  std::string moduleType = hltConfig_.moduleType(module);
1152  std::string moduleEDMType = hltConfig_.moduleEDMType(module);
1153 
1154  // Find filters
1155  if (moduleEDMType == "EDFilter" || moduleType.find("Filter") != std::string::npos) { // older samples may not have EDMType data included
1156  filters.push_back(module);
1157  //std::cout << i << " moduleLabel: " << module << " moduleType: " << moduleType << " moduleEDMType: " << moduleEDMType << std::endl;
1158  }
1159  }
1160  return filters;
1161 }
unsigned int size() const
number of trigger paths in trigger table
const std::string moduleType(const std::string &module) const
C++ class name of module.
HLTConfigProvider hltConfig_
The instance of the HLTConfigProvider as a data member.
Definition: EmDQM.h:132
const std::string moduleEDMType(const std::string &module) const
C++ base class name of module.
std::vector< TPRegexp > filters
Definition: eve_filter.cc:22
const std::string & moduleLabel(unsigned int trigger, unsigned int module) const
Definition: vlib.h:208
double EmDQM::getPrimaryEtCut ( const std::string &  path)
private

Definition at line 1166 of file EmDQM.cc.

Referenced by dqmBeginRun().

1167 {
1168  double minEt = -1;
1169 
1170  boost::regex reg("^HLT_.*?(Ele|hoton|EG|SC)([[:digit:]]+).*");
1171 
1172  boost::smatch what;
1173  if (boost::regex_match(path, what, reg, boost::match_extra))
1174  {
1175  minEt = boost::lexical_cast<double>(what[2]);
1176  }
1177 
1178  return minEt;
1179 }
edm::ParameterSet EmDQM::makePSetForEgammaDoubleEtDeltaPhiFilter ( const std::string &  moduleName)
private

Definition at line 1311 of file EmDQM.cc.

References edm::ParameterSet::addParameter(), edm::InputTag::process(), AlCaHLTBitMon_QueryRunRegistry::string, trigger::TriggerCluster, and triggerObject_.

Referenced by dqmBeginRun().

1312 {
1313  edm::ParameterSet retPSet;
1314 
1315  retPSet.addParameter<std::vector<double> >("PlotBounds", std::vector<double>(2, 0.0));
1316  //retPSet.addParameter<edm::InputTag>("HLTCollectionLabels", edm::InputTag(moduleName, "", processName_));
1317  retPSet.addParameter<edm::InputTag>("HLTCollectionLabels", edm::InputTag(moduleName, "", triggerObject_.process()));
1318  retPSet.addParameter<std::vector<edm::InputTag> >("IsoCollections", std::vector<edm::InputTag>(1, std::string("none")));
1319  retPSet.addParameter<int>("theHLTOutputTypes", trigger::TriggerCluster);
1320  retPSet.addParameter<int>("ncandcut", 2);
1321 
1322  return retPSet;
1323 }
std::string moduleName(Provenance const &provenance)
Definition: Provenance.cc:27
edm::InputTag triggerObject_
Definition: EmDQM.h:101
void addParameter(std::string const &name, T const &value)
Definition: ParameterSet.h:144
std::string const & process() const
Definition: InputTag.h:40
edm::ParameterSet EmDQM::makePSetForEgammaGenericFilter ( const std::string &  moduleName)
private

Definition at line 1328 of file EmDQM.cc.

References edm::ParameterSet::addParameter(), edm::ParameterSet::getParameter(), hltConfig_, edm::InputTag::label(), HLTConfigProvider::modulePSet(), HLTConfigProvider::moduleType(), OUTPUT_ERRORS, edm::InputTag::process(), HLTConfigProvider::saveTags(), AlCaHLTBitMon_QueryRunRegistry::string, trigger::TriggerCluster, triggerObject_, trigger::TriggerPhoton, and verbosity_.

Referenced by dqmBeginRun().

1329 {
1330  edm::ParameterSet retPSet;
1331 
1332  // example usages of HLTEgammaGenericFilter are:
1333  // R9 shape filter hltL1NonIsoHLTNonIsoSingleElectronEt17TighterEleIdIsolR9ShapeFilter
1334  // cluster shape filter hltL1NonIsoHLTNonIsoSingleElectronEt17TighterEleIdIsolClusterShapeFilter
1335  // Ecal isolation filter hltL1NonIsoHLTNonIsoSingleElectronEt17TIghterEleIdIsolEcalIsolFilter
1336  // H/E filter hltL1NonIsoHLTNonIsoSingleElectronEt17TighterEleIdIsolHEFilter
1337  // HCAL isolation filter hltL1NonIsoHLTNonIsoSingleElectronEt17TighterEleIdIsolHcalIsolFilter
1338 
1339  // infer the type of filter by the type of the producer which
1340  // generates the collection used to cut on this
1342  //edm::InputTag nonIsoTag = hltConfig_.modulePSet(moduleName).getParameter<edm::InputTag>("");
1343  //std::cout << "varTag.label " << varTag.label() << " nonIsoTag.label " << nonIsoTag.label() << std::endl;
1344 
1345  std::string inputType = hltConfig_.moduleType(varTag.label());
1346  //std::cout << "inputType " << inputType << " moduleName " << moduleName << std::endl;
1347 
1348  //--------------------
1349  // sanity check: non-isolated path should be produced by the
1350  // same type of module
1351 
1352  // first check that the non-iso tag is non-empty
1353  //if (nonIsoTag.label().empty()) {
1354  // edm::LogError("EmDQM") << "nonIsoTag of HLTEgammaGenericFilter '" << moduleName << "' is empty.";
1355  // return retPSet;
1356  //}
1357  //if (inputType != hltConfig_.moduleType(nonIsoTag.label())) {
1358  // edm::LogError("EmDQM") << "C++ Type of varTag '" << inputType << "' and nonIsoTag '" << hltConfig_.moduleType(nonIsoTag.label()) << "' are not the same for HLTEgammaGenericFilter '" << moduleName << "'.";
1359  // return retPSet;
1360  //}
1361  //--------------------
1362 
1363  // parameter saveTag determines the output type
1365  retPSet.addParameter<int>("theHLTOutputTypes", trigger::TriggerPhoton);
1366  else
1367  retPSet.addParameter<int>("theHLTOutputTypes", trigger::TriggerCluster);
1368 
1369  std::vector<edm::InputTag> isoCollections;
1370  isoCollections.push_back(varTag);
1371  //if (!nonIsoTag.label().empty())
1372  // isoCollections.push_back(nonIsoTag);
1373 
1374  //--------------------
1375  // the following cases seem to have identical PSets ?
1376  //--------------------
1377 
1378  if (inputType == "EgammaHLTR9Producer" || // R9 shape
1379  inputType == "EgammaHLTR9IDProducer" || // R9 ID
1380  inputType == "EgammaHLTClusterShapeProducer" || // cluster shape
1381  inputType == "EgammaHLTEcalRecIsolationProducer" || // ecal isolation
1382  inputType == "EgammaHLTHcalIsolationProducersRegional" || // HCAL isolation and HE
1383  inputType == "EgammaHLTGsfTrackVarProducer" || // GSF track deta and dphi filter
1384  inputType == "EgammaHLTBcHcalIsolationProducersRegional" || // HCAL isolation and HE
1385  inputType == "EgammaHLTEcalPFClusterIsolationProducer" || // ECAL PF isolation filter
1386  inputType == "EgammaHLTHcalPFClusterIsolationProducer" || // HCAL PF isolation filter
1387  inputType == "EgammaHLTElectronTrackIsolationProducers" // Track isolation filter
1388  ) {
1389  retPSet.addParameter<std::vector<double> >("PlotBounds", std::vector<double>(2, 0.0));
1390  //retPSet.addParameter<edm::InputTag>("HLTCollectionLabels", edm::InputTag(moduleName, "", processName_));
1391  retPSet.addParameter<edm::InputTag>("HLTCollectionLabels", edm::InputTag(moduleName, "", triggerObject_.process()));
1392  retPSet.addParameter<std::vector<edm::InputTag> >("IsoCollections", isoCollections);
1393  retPSet.addParameter<int>("ncandcut", hltConfig_.modulePSet(moduleName).getParameter<int>("ncandcut"));
1394 
1395  return retPSet;
1396  }
1397 
1398  if (verbosity_ >= OUTPUT_ERRORS)
1399  edm::LogError("EmDQM") << "Can't determine what the HLTEgammaGenericFilter '" << moduleName << "' should do: uses a collection produced by a module of C++ type '" << inputType << "'.";
1400  return edm::ParameterSet();
1401 }
T getParameter(std::string const &) const
bool saveTags(const std::string &module) const
Is module an L3 filter (ie, tracked saveTags=true)
const std::string moduleType(const std::string &module) const
C++ class name of module.
HLTConfigProvider hltConfig_
The instance of the HLTConfigProvider as a data member.
Definition: EmDQM.h:132
const edm::ParameterSet & modulePSet(const std::string &module) const
ParameterSet of module.
static const unsigned OUTPUT_ERRORS
Definition: EmDQM.h:239
std::string moduleName(Provenance const &provenance)
Definition: Provenance.cc:27
edm::InputTag triggerObject_
Definition: EmDQM.h:101
void addParameter(std::string const &name, T const &value)
Definition: ParameterSet.h:144
std::string const & label() const
Definition: InputTag.h:36
std::string const & process() const
Definition: InputTag.h:40
unsigned int verbosity_
Definition: EmDQM.h:102
edm::ParameterSet EmDQM::makePSetForEgammaGenericQuadraticFilter ( const std::string &  moduleName)
private

Definition at line 1406 of file EmDQM.cc.

References edm::ParameterSet::addParameter(), edm::ParameterSet::getParameter(), hltConfig_, edm::InputTag::label(), HLTConfigProvider::modulePSet(), HLTConfigProvider::moduleType(), OUTPUT_ERRORS, edm::InputTag::process(), HLTConfigProvider::saveTags(), AlCaHLTBitMon_QueryRunRegistry::string, trigger::TriggerCluster, triggerObject_, trigger::TriggerPhoton, and verbosity_.

Referenced by dqmBeginRun().

1407 {
1408  edm::ParameterSet retPSet;
1409 
1410  // example usages of HLTEgammaGenericFilter are:
1411  // R9 shape filter hltL1NonIsoHLTNonIsoSingleElectronEt17TighterEleIdIsolR9ShapeFilter
1412  // cluster shape filter hltL1NonIsoHLTNonIsoSingleElectronEt17TighterEleIdIsolClusterShapeFilter
1413  // Ecal isolation filter hltL1NonIsoHLTNonIsoSingleElectronEt17TIghterEleIdIsolEcalIsolFilter
1414  // H/E filter hltL1NonIsoHLTNonIsoSingleElectronEt17TighterEleIdIsolHEFilter
1415  // HCAL isolation filter hltL1NonIsoHLTNonIsoSingleElectronEt17TighterEleIdIsolHcalIsolFilter
1416 
1417  // infer the type of filter by the type of the producer which
1418  // generates the collection used to cut on this
1420  //edm::InputTag nonIsoTag = hltConfig_.modulePSet(moduleName).getParameter<edm::InputTag>("nonIsoTag");
1421  //std::cout << "varTag.label " << varTag.label() << " nonIsoTag.label " << nonIsoTag.label() << std::endl;
1422 
1423  std::string inputType = hltConfig_.moduleType(varTag.label());
1424  //std::cout << "inputType " << inputType << " moduleName " << moduleName << std::endl;
1425 
1426  //--------------------
1427  // sanity check: non-isolated path should be produced by the
1428  // same type of module
1429 
1430  // first check that the non-iso tag is non-empty
1431  //if (nonIsoTag.label().empty()) {
1432  // edm::LogError("EmDQM") << "nonIsoTag of HLTEgammaGenericFilter '" << moduleName << "' is empty.";
1433  // return retPSet;
1434  //}
1435  //if (inputType != hltConfig_.moduleType(nonIsoTag.label())) {
1436  // edm::LogError("EmDQM") << "C++ Type of varTag '" << inputType << "' and nonIsoTag '" << hltConfig_.moduleType(nonIsoTag.label()) << "' are not the same for HLTEgammaGenericFilter '" << moduleName << "'.";
1437  // return retPSet;
1438  //}
1439  //--------------------
1440 
1441  // parameter saveTag determines the output type
1443  retPSet.addParameter<int>("theHLTOutputTypes", trigger::TriggerPhoton);
1444  else
1445  retPSet.addParameter<int>("theHLTOutputTypes", trigger::TriggerCluster);
1446 
1447  std::vector<edm::InputTag> isoCollections;
1448  isoCollections.push_back(varTag);
1449  //if (!nonIsoTag.label().empty())
1450  // isoCollections.push_back(nonIsoTag);
1451 
1452  //--------------------
1453  // the following cases seem to have identical PSets ?
1454  //--------------------
1455 
1456  if (inputType == "EgammaHLTR9Producer" || // R9 shape
1457  inputType == "EgammaHLTR9IDProducer" || // R9 ID
1458  inputType == "EgammaHLTClusterShapeProducer" || // cluster shape
1459  inputType == "EgammaHLTEcalRecIsolationProducer" || // ecal isolation
1460  inputType == "EgammaHLTHcalIsolationProducersRegional" || // HCAL isolation and HE
1461  inputType == "EgammaHLTBcHcalIsolationProducersRegional" || // HCAL isolation and HE
1462  inputType == "EgammaHLTEcalPFClusterIsolationProducer" || // ECAL PF isolation filter
1463  inputType == "EgammaHLTHcalPFClusterIsolationProducer" || // HCAL PF isolation filter
1464  inputType == "EgammaHLTPhotonTrackIsolationProducersRegional" // Photon track isolation
1465  ) {
1466  retPSet.addParameter<std::vector<double> >("PlotBounds", std::vector<double>(2, 0.0));
1467  //retPSet.addParameter<edm::InputTag>("HLTCollectionLabels", edm::InputTag(moduleName, "", processName_));
1468  retPSet.addParameter<edm::InputTag>("HLTCollectionLabels", edm::InputTag(moduleName, "", triggerObject_.process()));
1469  retPSet.addParameter<std::vector<edm::InputTag> >("IsoCollections", isoCollections);
1470  retPSet.addParameter<int>("ncandcut", hltConfig_.modulePSet(moduleName).getParameter<int>("ncandcut"));
1471 
1472  return retPSet;
1473  }
1474 
1475  if (verbosity_ >= OUTPUT_ERRORS)
1476  edm::LogError("EmDQM") << "Can't determine what the HLTEgammaGenericQuadraticFilter '" << moduleName << "' should do: uses a collection produced by a module of C++ type '" << inputType << "'.";
1477  return edm::ParameterSet();
1478 }
T getParameter(std::string const &) const
bool saveTags(const std::string &module) const
Is module an L3 filter (ie, tracked saveTags=true)
const std::string moduleType(const std::string &module) const
C++ class name of module.
HLTConfigProvider hltConfig_
The instance of the HLTConfigProvider as a data member.
Definition: EmDQM.h:132
const edm::ParameterSet & modulePSet(const std::string &module) const
ParameterSet of module.
static const unsigned OUTPUT_ERRORS
Definition: EmDQM.h:239
std::string moduleName(Provenance const &provenance)
Definition: Provenance.cc:27
edm::InputTag triggerObject_
Definition: EmDQM.h:101
void addParameter(std::string const &name, T const &value)
Definition: ParameterSet.h:144
std::string const & label() const
Definition: InputTag.h:36
std::string const & process() const
Definition: InputTag.h:40
unsigned int verbosity_
Definition: EmDQM.h:102
edm::ParameterSet EmDQM::makePSetForElectronGenericFilter ( const std::string &  moduleName)
private

Definition at line 1483 of file EmDQM.cc.

References edm::ParameterSet::addParameter(), edm::ParameterSet::getParameter(), hltConfig_, edm::InputTag::label(), HLTConfigProvider::modulePSet(), HLTConfigProvider::moduleType(), OUTPUT_ERRORS, edm::InputTag::process(), AlCaHLTBitMon_QueryRunRegistry::string, trigger::TriggerElectron, triggerObject_, and verbosity_.

Referenced by dqmBeginRun().

1484 {
1485  edm::ParameterSet retPSet;
1486 
1487  // example usages of HLTElectronGenericFilter are:
1488  //
1489  // deta filter hltL1NonIsoHLTNonIsoSingleElectronEt17TighterEleIdIsolDetaFilter
1490  // dphi filter hltL1NonIsoHLTNonIsoSingleElectronEt17TighterEleIdIsolDphiFilter
1491  // track isolation hltL1NonIsoHLTNonIsoSingleElectronEt17TighterEleIdIsolTrackIsolFilter
1492 
1493  // infer the type of filter by the type of the producer which
1494  // generates the collection used to cut on this
1496  //edm::InputTag nonIsoTag = hltConfig_.modulePSet(moduleName).getParameter<edm::InputTag>("nonIsoTag");
1497  //std::cout << "varTag.label " << varTag.label() << " nonIsoTag.label " << nonIsoTag.label() << std::endl;
1498 
1499  std::string inputType = hltConfig_.moduleType(varTag.label());
1500  //std::cout << "inputType iso " << inputType << " inputType noniso " << hltConfig_.moduleType(nonIsoTag.label()) << " moduleName " << moduleName << std::endl;
1501 
1502  //--------------------
1503  // sanity check: non-isolated path should be produced by the
1504  // same type of module
1505  //if (nonIsoTag.label().empty()) {
1506  // edm::LogError("EmDQM") << "nonIsoTag of HLTElectronGenericFilter '" << moduleName << "' is empty.";
1507  // return retPSet;
1508  //}
1509  //if (inputType != hltConfig_.moduleType(nonIsoTag.label())) {
1510  // edm::LogError("EmDQM") << "C++ Type of varTag '" << inputType << "' and nonIsoTag '" << hltConfig_.moduleType(nonIsoTag.label()) << "' are not the same for HLTElectronGenericFilter '" << moduleName << "'.";
1511  // return retPSet;
1512  //}
1513  //--------------------
1514 
1515  // the type of object to look for seems to be the
1516  // same for all uses of HLTEgammaGenericFilter
1517  retPSet.addParameter<int>("theHLTOutputTypes", trigger::TriggerElectron);
1518 
1519  std::vector<edm::InputTag> isoCollections;
1520  isoCollections.push_back(varTag);
1521  //if (!nonIsoTag.label().empty())
1522  // isoCollections.push_back(nonIsoTag);
1523 
1524  //--------------------
1525  // the following cases seem to have identical PSets ?
1526  //--------------------
1527 
1528  // note that whether deta or dphi is used is determined from
1529  // the product instance (not the module label)
1530  if (inputType == "EgammaHLTElectronDetaDphiProducer" || // deta and dphi filter
1531  inputType == "EgammaHLTElectronTrackIsolationProducers" // track isolation
1532  ) {
1533  retPSet.addParameter<std::vector<double> >("PlotBounds", std::vector<double>(2, 0.0));
1534  //retPSet.addParameter<edm::InputTag>("HLTCollectionLabels", edm::InputTag(moduleName, "", processName_));
1535  retPSet.addParameter<edm::InputTag>("HLTCollectionLabels", edm::InputTag(moduleName, "", triggerObject_.process()));
1536  retPSet.addParameter<std::vector<edm::InputTag> >("IsoCollections", isoCollections);
1537  retPSet.addParameter<int>("ncandcut", hltConfig_.modulePSet(moduleName).getParameter<int>("ncandcut"));
1538 
1539  return retPSet;
1540  }
1541 
1542  if (verbosity_ >= OUTPUT_ERRORS)
1543  edm::LogError("EmDQM") << "Can't determine what the HLTElectronGenericFilter '" << moduleName << "' should do: uses a collection produced by a module of C++ type '" << inputType << "'.";
1544  return edm::ParameterSet();
1545 }
T getParameter(std::string const &) const
const std::string moduleType(const std::string &module) const
C++ class name of module.
HLTConfigProvider hltConfig_
The instance of the HLTConfigProvider as a data member.
Definition: EmDQM.h:132
const edm::ParameterSet & modulePSet(const std::string &module) const
ParameterSet of module.
static const unsigned OUTPUT_ERRORS
Definition: EmDQM.h:239
std::string moduleName(Provenance const &provenance)
Definition: Provenance.cc:27
edm::InputTag triggerObject_
Definition: EmDQM.h:101
void addParameter(std::string const &name, T const &value)
Definition: ParameterSet.h:144
std::string const & label() const
Definition: InputTag.h:36
std::string const & process() const
Definition: InputTag.h:40
unsigned int verbosity_
Definition: EmDQM.h:102
edm::ParameterSet EmDQM::makePSetForEtFilter ( const std::string &  moduleName)
private

Definition at line 1260 of file EmDQM.cc.

References edm::ParameterSet::addParameter(), edm::ParameterSet::getParameter(), hltConfig_, HLTConfigProvider::modulePSet(), edm::InputTag::process(), AlCaHLTBitMon_QueryRunRegistry::string, trigger::TriggerCluster, and triggerObject_.

Referenced by dqmBeginRun().

1261 {
1262  edm::ParameterSet retPSet;
1263 
1264  retPSet.addParameter<std::vector<double> >("PlotBounds", std::vector<double>(2, 0.0));
1265  //retPSet.addParameter<edm::InputTag>("HLTCollectionLabels", edm::InputTag(moduleName, "", processName_));
1266  retPSet.addParameter<edm::InputTag>("HLTCollectionLabels", edm::InputTag(moduleName, "", triggerObject_.process()));
1267  retPSet.addParameter<std::vector<edm::InputTag> >("IsoCollections", std::vector<edm::InputTag>(1, std::string("none")));
1268  retPSet.addParameter<int>("theHLTOutputTypes", trigger::TriggerCluster);
1269  retPSet.addParameter<int>("ncandcut", hltConfig_.modulePSet(moduleName).getParameter<int>("ncandcut"));
1270 
1271  return retPSet;
1272 }
T getParameter(std::string const &) const
HLTConfigProvider hltConfig_
The instance of the HLTConfigProvider as a data member.
Definition: EmDQM.h:132
const edm::ParameterSet & modulePSet(const std::string &module) const
ParameterSet of module.
std::string moduleName(Provenance const &provenance)
Definition: Provenance.cc:27
edm::InputTag triggerObject_
Definition: EmDQM.h:101
void addParameter(std::string const &name, T const &value)
Definition: ParameterSet.h:144
std::string const & process() const
Definition: InputTag.h:40
edm::ParameterSet EmDQM::makePSetForL1SeedFilter ( const std::string &  moduleName)
private

Definition at line 1184 of file EmDQM.cc.

References edm::ParameterSet::addParameter(), countSubstring(), edm::InputTag::process(), AlCaHLTBitMon_QueryRunRegistry::string, trigger::TriggerL1NoIsoEG, and triggerObject_.

Referenced by dqmBeginRun().

1185 {
1186  // generates a PSet to analyze the behaviour of an L1 seed.
1187  //
1188  // moduleName is the name of the HLT module which filters
1189  // on the L1 seed.
1190  edm::ParameterSet retPSet;
1191 
1192  retPSet.addParameter<std::vector<double> >("PlotBounds", std::vector<double>(2, 0.0));
1193  //retPSet.addParameter<edm::InputTag>("HLTCollectionLabels", edm::InputTag(moduleName, "", processName_));
1194  retPSet.addParameter<edm::InputTag>("HLTCollectionLabels", edm::InputTag(moduleName, "", triggerObject_.process()));
1195  retPSet.addParameter<std::vector<edm::InputTag> >("IsoCollections", std::vector<edm::InputTag>(1, std::string("none")));
1196  retPSet.addParameter<int>("theHLTOutputTypes", trigger::TriggerL1NoIsoEG);
1197 
1198  // as HLTLevel1GTSeed has no parameter ncandcut we determine the value from the name of the filter
1199 
1200  int orCount = countSubstring(moduleName, "OR") + countSubstring(moduleName, "Or");
1201  int egCount = countSubstring(moduleName, "EG");
1202  int dEgCount = countSubstring(moduleName, "DoubleEG");
1203  int tEgCount = countSubstring(moduleName, "TripleEG");
1204 
1205  int candCount = 2*tEgCount + dEgCount + egCount;
1206  // if L1 is and OR of triggers try the assumption that all of them are similar first and if not take the lowest number. If this is not successful, let the path name decide
1207  if (orCount > 0 && candCount > 0) {
1208  if (egCount % (orCount+1) == 0 && dEgCount % (orCount+1) == 0 && tEgCount % (orCount+1) == 0) candCount /= (orCount+1);
1209  else if (egCount-dEgCount-tEgCount > 0) candCount = 1; // at least one singleEG present
1210  else if (dEgCount > 0) candCount = 2; // at least one doubleEG and no singleEG present
1211  else if (tEgCount > 0) candCount = 3; // only tripleEG present
1212  else candCount = -1;
1213  }
1214 
1215  switch (candCount) {
1216  case 0:
1217  retPSet.addParameter<int>("ncandcut", 0);
1218  break;
1219  case 1:
1220  retPSet.addParameter<int>("ncandcut", 1);
1221  break;
1222  case 2:
1223  retPSet.addParameter<int>("ncandcut", 2);
1224  break;
1225  case 3:
1226  retPSet.addParameter<int>("ncandcut", 3);
1227  break;
1228  default:
1229  retPSet.addParameter<int>("ncandcut", -1);
1230  }
1231 
1232  return retPSet;
1233 }
std::string moduleName(Provenance const &provenance)
Definition: Provenance.cc:27
edm::InputTag triggerObject_
Definition: EmDQM.h:101
void addParameter(std::string const &name, T const &value)
Definition: ParameterSet.h:144
int countSubstring(const std::string &, const std::string &)
Definition: EmDQM.cc:1069
std::string const & process() const
Definition: InputTag.h:40
edm::ParameterSet EmDQM::makePSetForL1SeedToSuperClusterMatchFilter ( const std::string &  moduleName)
private

Definition at line 1238 of file EmDQM.cc.

References edm::ParameterSet::addParameter(), edm::ParameterSet::getParameter(), hltConfig_, HLTConfigProvider::modulePSet(), edm::InputTag::process(), AlCaHLTBitMon_QueryRunRegistry::string, trigger::TriggerCluster, and triggerObject_.

Referenced by dqmBeginRun().

1239 {
1240  // generates a PSet to analyze the behaviour of L1 to supercluster match filter.
1241  //
1242  // moduleName is the name of the HLT module which requires the match
1243  // between supercluster and L1 seed.
1244  //
1245  edm::ParameterSet retPSet;
1246 
1247  retPSet.addParameter<std::vector<double> >("PlotBounds", std::vector<double>(2, 0.0));
1248  //retPSet.addParameter<edm::InputTag>("HLTCollectionLabels", edm::InputTag(moduleName, "", processName_));
1249  retPSet.addParameter<edm::InputTag>("HLTCollectionLabels", edm::InputTag(moduleName, "", triggerObject_.process()));
1250  retPSet.addParameter<std::vector<edm::InputTag> >("IsoCollections", std::vector<edm::InputTag>(1, std::string("none")));
1251  retPSet.addParameter<int>("theHLTOutputTypes", trigger::TriggerCluster);
1252  retPSet.addParameter<int>("ncandcut", hltConfig_.modulePSet(moduleName).getParameter<int>("ncandcut"));
1253 
1254  return retPSet;
1255 }
T getParameter(std::string const &) const
HLTConfigProvider hltConfig_
The instance of the HLTConfigProvider as a data member.
Definition: EmDQM.h:132
const edm::ParameterSet & modulePSet(const std::string &module) const
ParameterSet of module.
std::string moduleName(Provenance const &provenance)
Definition: Provenance.cc:27
edm::InputTag triggerObject_
Definition: EmDQM.h:101
void addParameter(std::string const &name, T const &value)
Definition: ParameterSet.h:144
std::string const & process() const
Definition: InputTag.h:40
edm::ParameterSet EmDQM::makePSetForOneOEMinusOneOPFilter ( const std::string &  moduleName)
private

Definition at line 1277 of file EmDQM.cc.

References edm::ParameterSet::addParameter(), edm::ParameterSet::getParameter(), hltConfig_, HLTConfigProvider::modulePSet(), edm::InputTag::process(), AlCaHLTBitMon_QueryRunRegistry::string, trigger::TriggerElectron, and triggerObject_.

Referenced by dqmBeginRun().

1278 {
1279  edm::ParameterSet retPSet;
1280 
1281  retPSet.addParameter<std::vector<double> >("PlotBounds", std::vector<double>(2, 0.0));
1282  //retPSet.addParameter<edm::InputTag>("HLTCollectionLabels", edm::InputTag(moduleName, "", processName_));
1283  retPSet.addParameter<edm::InputTag>("HLTCollectionLabels", edm::InputTag(moduleName, "", triggerObject_.process()));
1284  retPSet.addParameter<std::vector<edm::InputTag> >("IsoCollections", std::vector<edm::InputTag>(1, std::string("none")));
1285  retPSet.addParameter<int>("theHLTOutputTypes", trigger::TriggerElectron);
1286  retPSet.addParameter<int>("ncandcut", hltConfig_.modulePSet(moduleName).getParameter<int>("ncandcut"));
1287 
1288  return retPSet;
1289 }
T getParameter(std::string const &) const
HLTConfigProvider hltConfig_
The instance of the HLTConfigProvider as a data member.
Definition: EmDQM.h:132
const edm::ParameterSet & modulePSet(const std::string &module) const
ParameterSet of module.
std::string moduleName(Provenance const &provenance)
Definition: Provenance.cc:27
edm::InputTag triggerObject_
Definition: EmDQM.h:101
void addParameter(std::string const &name, T const &value)
Definition: ParameterSet.h:144
std::string const & process() const
Definition: InputTag.h:40
edm::ParameterSet EmDQM::makePSetForPixelMatchFilter ( const std::string &  moduleName)
private

Definition at line 1294 of file EmDQM.cc.

References edm::ParameterSet::addParameter(), edm::ParameterSet::getParameter(), hltConfig_, HLTConfigProvider::modulePSet(), edm::InputTag::process(), AlCaHLTBitMon_QueryRunRegistry::string, trigger::TriggerCluster, and triggerObject_.

Referenced by dqmBeginRun().

1295 {
1296  edm::ParameterSet retPSet;
1297 
1298  retPSet.addParameter<std::vector<double> >("PlotBounds", std::vector<double>(2, 0.0));
1299  //retPSet.addParameter<edm::InputTag>("HLTCollectionLabels", edm::InputTag(moduleName, "", processName_));
1300  retPSet.addParameter<edm::InputTag>("HLTCollectionLabels", edm::InputTag(moduleName, "", triggerObject_.process()));
1301  retPSet.addParameter<std::vector<edm::InputTag> >("IsoCollections", std::vector<edm::InputTag>(1, std::string("none")));
1302  retPSet.addParameter<int>("theHLTOutputTypes", trigger::TriggerCluster);
1303  retPSet.addParameter<int>("ncandcut", hltConfig_.modulePSet(moduleName).getParameter<int>("ncandcut"));
1304 
1305  return retPSet;
1306 }
T getParameter(std::string const &) const
HLTConfigProvider hltConfig_
The instance of the HLTConfigProvider as a data member.
Definition: EmDQM.h:132
const edm::ParameterSet & modulePSet(const std::string &module) const
ParameterSet of module.
std::string moduleName(Provenance const &provenance)
Definition: Provenance.cc:27
edm::InputTag triggerObject_
Definition: EmDQM.h:101
void addParameter(std::string const &name, T const &value)
Definition: ParameterSet.h:144
std::string const & process() const
Definition: InputTag.h:40
void EmDQM::SetVarsFromPSet ( std::vector< edm::ParameterSet >::iterator  psetIt)
private

Definition at line 1549 of file EmDQM.cc.

References DEFINE_FWK_MODULE, dirname_, filters, gencut_, gencutCollection_, mps_fire::i, isoNames, nCandCuts, noIsolationPlots_, numOfHLTCollectionLabels, pathIndex, pdgGen, plotBounds, plotEtMin, plotiso, plotPtMax, plotPtMin, reqNum, AlCaHLTBitMon_QueryRunRegistry::string, theHLTCollectionHumanNames, theHLTCollectionLabels, and theHLTOutputTypes.

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

1550 {
1551  dirname_="HLT/HLTEgammaValidation/"+psetIt->getParameter<std::string>("@module_label");
1552 
1553  pathIndex = psetIt->getUntrackedParameter<unsigned int>("pathIndex", 0);
1554  // parameters for generator study
1555  reqNum = psetIt->getParameter<unsigned int>("reqNum");
1556  pdgGen = psetIt->getParameter<int>("pdgGen");
1557  // plotting parameters (untracked because they don't affect the physics)
1558  plotEtMin = psetIt->getUntrackedParameter<double>("genEtMin",0.);
1559  plotPtMin = psetIt->getUntrackedParameter<double>("PtMin",0.);
1560  plotPtMax = psetIt->getUntrackedParameter<double>("PtMax",1000.);
1561 
1562  //preselction cuts
1563  gencutCollection_= psetIt->getParameter<edm::InputTag>("cutcollection");
1564  gencut_ = psetIt->getParameter<int>("cutnum");
1565 
1567  // Read in the Vector of Parameter Sets. //
1568  // Information for each filter-step //
1570  std::vector<edm::ParameterSet> filters =
1571  psetIt->getParameter<std::vector<edm::ParameterSet> >("filters");
1572 
1573  // empty vectors of parameters from previous paths
1574  theHLTCollectionLabels.clear();
1575  theHLTOutputTypes.clear();
1577  plotBounds.clear();
1578  isoNames.clear();
1579  plotiso.clear();
1580  nCandCuts.clear();
1581 
1582  int i = 0;
1583  for(std::vector<edm::ParameterSet>::iterator filterconf = filters.begin() ; filterconf != filters.end() ; filterconf++)
1584  {
1585 
1586  theHLTCollectionLabels.push_back(filterconf->getParameter<edm::InputTag>("HLTCollectionLabels"));
1587  theHLTOutputTypes.push_back(filterconf->getParameter<int>("theHLTOutputTypes"));
1588  // Grab the human-readable name, if it is not specified, use the Collection Label
1589  theHLTCollectionHumanNames.push_back(filterconf->getUntrackedParameter<std::string>("HLTCollectionHumanName",theHLTCollectionLabels[i].label()));
1590 
1591  std::vector<double> bounds = filterconf->getParameter<std::vector<double> >("PlotBounds");
1592  // If the size of plot "bounds" vector != 2, abort
1593  assert(bounds.size() == 2);
1594  plotBounds.push_back(std::pair<double,double>(bounds[0],bounds[1]));
1595  isoNames.push_back(filterconf->getParameter<std::vector<edm::InputTag> >("IsoCollections"));
1596 
1597  //for (unsigned int i=0; i<isoNames.back().size(); i++) {
1598  // switch(theHLTOutputTypes.back()) {
1599  // case trigger::TriggerL1NoIsoEG:
1600  // histoFillerL1NonIso->isoNameTokens_.push_back(consumes<edm::AssociationMap<edm::OneToValue<l1extra::L1EmParticleCollection , float>>>(isoNames.back()[i]));
1601  // break;
1602  // case trigger::TriggerL1IsoEG: // Isolated Level 1
1603  // histoFillerL1Iso->isoNameTokens_.push_back(consumes<edm::AssociationMap<edm::OneToValue<l1extra::L1EmParticleCollection , float>>>(isoNames.back()[i]));
1604  // break;
1605  // case trigger::TriggerPhoton: // Photon
1606  // histoFillerPho->isoNameTokens_.push_back(consumes<edm::AssociationMap<edm::OneToValue<reco::RecoEcalCandidateCollection , float>>>(isoNames.back()[i]));
1607  // break;
1608  // case trigger::TriggerElectron: // Electron
1609  // histoFillerEle->isoNameTokens_.push_back(consumes<edm::AssociationMap<edm::OneToValue<reco::ElectronCollection , float>>>(isoNames.back()[i]));
1610  // break;
1611  // case trigger::TriggerCluster: // TriggerCluster
1612  // histoFillerClu->isoNameTokens_.push_back(consumes<edm::AssociationMap<edm::OneToValue<reco::RecoEcalCandidateCollection , float>>>(isoNames.back()[i]));
1613  // break;
1614  // default:
1615  // throw(cms::Exception("Release Validation Error") << "HLT output type not implemented: theHLTOutputTypes[n]" );
1616  // }
1617  //}
1618 
1619  // If the size of the isoNames vector is not greater than zero, abort
1620  assert(isoNames.back().size()>0);
1621  if (isoNames.back().at(0).label()=="none") {
1622  plotiso.push_back(false);
1623  } else {
1624  if (!noIsolationPlots_) plotiso.push_back(true);
1625  else plotiso.push_back(false);
1626  }
1627  nCandCuts.push_back(filterconf->getParameter<int>("ncandcut"));
1628  i++;
1629  } // END of loop over parameter sets
1630 
1631  // Record number of HLTCollectionLabels
1633 }
unsigned int numOfHLTCollectionLabels
Definition: EmDQM.h:157
std::string dirname_
Definition: EmDQM.h:88
int pdgGen
Definition: EmDQM.h:167
double plotEtMin
Definition: EmDQM.h:169
std::vector< TPRegexp > filters
Definition: eve_filter.cc:22
std::vector< std::vector< edm::InputTag > > isoNames
Definition: EmDQM.h:162
std::vector< edm::InputTag > theHLTCollectionLabels
Definition: EmDQM.h:156
unsigned int gencut_
Definition: EmDQM.h:182
std::vector< unsigned int > nCandCuts
Definition: EmDQM.h:164
double plotPtMax
Definition: EmDQM.h:171
bool noIsolationPlots_
Definition: EmDQM.h:115
double plotPtMin
Definition: EmDQM.h:170
edm::InputTag gencutCollection_
Definition: EmDQM.h:179
unsigned int pathIndex
Definition: EmDQM.h:155
std::vector< std::string > theHLTCollectionHumanNames
Definition: EmDQM.h:158
std::vector< int > theHLTOutputTypes
Definition: EmDQM.h:160
unsigned int reqNum
Definition: EmDQM.h:166
std::vector< std::pair< double, double > > plotBounds
Definition: EmDQM.h:163
std::vector< bool > plotiso
Definition: EmDQM.h:161

Friends And Related Function Documentation

Definition at line 68 of file EmDQM.h.

friend class HistoFiller< reco::ElectronCollection >
friend

Definition at line 66 of file EmDQM.h.

Definition at line 67 of file EmDQM.h.

Member Data Documentation

bool EmDQM::autoConfMode_
private

Definition at line 97 of file EmDQM.h.

Referenced by analyze(), checkRecoParticlesRequirement(), dqmBeginRun(), and EmDQM().

std::string EmDQM::dirname_
private

Definition at line 88 of file EmDQM.h.

Referenced by bookHistograms(), and SetVarsFromPSet().

std::vector<MonitorElement*> EmDQM::etagens
private

Definition at line 211 of file EmDQM.h.

Referenced by analyze(), and bookHistograms().

std::vector<std::vector<MonitorElement*> > EmDQM::etahistmatchs
private

Definition at line 200 of file EmDQM.h.

Referenced by bookHistograms().

std::vector<std::vector<MonitorElement*> > EmDQM::etahists
private

Definition at line 197 of file EmDQM.h.

Referenced by bookHistograms().

double EmDQM::etaMax_
private

Definition at line 108 of file EmDQM.h.

Referenced by bookHistograms(), and EmDQM().

std::vector<MonitorElement*> EmDQM::etgens
private

Definition at line 210 of file EmDQM.h.

Referenced by analyze(), and bookHistograms().

std::vector<std::vector<MonitorElement*> > EmDQM::ethistmatchs
private

Definition at line 202 of file EmDQM.h.

Referenced by bookHistograms().

std::vector<std::vector<MonitorElement*> > EmDQM::ethists
private

Definition at line 199 of file EmDQM.h.

Referenced by bookHistograms().

unsigned int EmDQM::gencut_
private

number of generator level particles (electrons/photons) required (for MC)

Definition at line 182 of file EmDQM.h.

Referenced by analyze(), checkGeneratedParticlesRequirement(), checkRecoParticlesRequirement(), and SetVarsFromPSet().

edm::EDGetTokenT<edm::View<reco::Candidate> > EmDQM::gencutColl_fidDiGamma_token
private

Definition at line 225 of file EmDQM.h.

Referenced by analyze(), checkRecoParticlesRequirement(), and EmDQM().

edm::EDGetTokenT<edm::View<reco::Candidate> > EmDQM::gencutColl_fidGammaJet_token
private

Definition at line 224 of file EmDQM.h.

Referenced by analyze(), checkRecoParticlesRequirement(), and EmDQM().

edm::EDGetTokenT<edm::View<reco::Candidate> > EmDQM::gencutColl_fidTripleEle_token
private

Definition at line 223 of file EmDQM.h.

Referenced by analyze(), checkRecoParticlesRequirement(), and EmDQM().

edm::EDGetTokenT<edm::View<reco::Candidate> > EmDQM::gencutColl_fidWenu_token
private

Definition at line 221 of file EmDQM.h.

Referenced by analyze(), checkRecoParticlesRequirement(), and EmDQM().

edm::EDGetTokenT<edm::View<reco::Candidate> > EmDQM::gencutColl_fidZee_token
private

Definition at line 222 of file EmDQM.h.

Referenced by analyze(), checkRecoParticlesRequirement(), and EmDQM().

edm::EDGetTokenT<edm::View<reco::Candidate> > EmDQM::gencutColl_manualConf_token
private

Definition at line 226 of file EmDQM.h.

Referenced by analyze(), checkRecoParticlesRequirement(), and EmDQM().

edm::InputTag EmDQM::gencutCollection_
private

collection which should be used for generator particles (MC) or reconstructed particles (data).

This collection is used for matching the HLT objects against (e.g. match the HLT object to generated particles or reconstructed electrons/photons).

Definition at line 179 of file EmDQM.h.

Referenced by SetVarsFromPSet().

double EmDQM::genEtaAcc_
private

Definition at line 103 of file EmDQM.h.

Referenced by checkGeneratedParticlesRequirement(), and EmDQM().

double EmDQM::genEtAcc_
private

Definition at line 104 of file EmDQM.h.

Referenced by EmDQM().

edm::EDGetTokenT<edm::View<reco::Candidate> > EmDQM::genParticles_token
private

Definition at line 218 of file EmDQM.h.

Referenced by checkGeneratedParticlesRequirement(), and EmDQM().

std::vector<std::vector<MonitorElement*> > EmDQM::histEtaOfHltObjMatchToGens
private

Definition at line 204 of file EmDQM.h.

Referenced by bookHistograms().

std::vector<std::vector<MonitorElement*> > EmDQM::histEtOfHltObjMatchToGens
private

Definition at line 203 of file EmDQM.h.

Referenced by bookHistograms().

HistoFiller<reco::RecoEcalCandidateCollection>* EmDQM::histoFillerClu
private

Definition at line 91 of file EmDQM.h.

Referenced by analyze(), and EmDQM().

HistoFiller<reco::ElectronCollection>* EmDQM::histoFillerEle
private

Definition at line 90 of file EmDQM.h.

Referenced by analyze(), and EmDQM().

HistoFiller<l1extra::L1EmParticleCollection>* EmDQM::histoFillerL1Iso
private

Definition at line 94 of file EmDQM.h.

Referenced by analyze(), and EmDQM().

HistoFiller<l1extra::L1EmParticleCollection>* EmDQM::histoFillerL1NonIso
private

Definition at line 92 of file EmDQM.h.

Referenced by analyze(), and EmDQM().

HistoFiller<reco::RecoEcalCandidateCollection>* EmDQM::histoFillerPho
private

Definition at line 93 of file EmDQM.h.

Referenced by analyze(), and EmDQM().

std::vector<std::vector<MonitorElement*> > EmDQM::histPhiOfHltObjMatchToGens
private

Definition at line 205 of file EmDQM.h.

Referenced by bookHistograms().

std::set<std::string> EmDQM::hltCollectionLabelsFound
private

Definition at line 186 of file EmDQM.h.

Referenced by analyze(), and dqmBeginRun().

std::vector<std::set<std::string> > EmDQM::hltCollectionLabelsFoundPerPath
private

which hltCollectionLabels were SEEN at least once

Definition at line 185 of file EmDQM.h.

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

std::set<std::string> EmDQM::hltCollectionLabelsMissed
private

Definition at line 190 of file EmDQM.h.

Referenced by analyze(), and dqmBeginRun().

std::vector<std::set<std::string> > EmDQM::hltCollectionLabelsMissedPerPath
private

which hltCollectionLabels were MISSED at least once

Definition at line 189 of file EmDQM.h.

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

HLTConfigProvider EmDQM::hltConfig_
private
edm::EDGetTokenT<edm::TriggerResults> EmDQM::hltResults_token
private

Definition at line 220 of file EmDQM.h.

Referenced by analyze(), and EmDQM().

bool EmDQM::isData_
private

Definition at line 105 of file EmDQM.h.

Referenced by dqmBeginRun(), and EmDQM().

std::vector<std::vector<edm::InputTag> > EmDQM::isoNames
private

Definition at line 162 of file EmDQM.h.

Referenced by SetVarsFromPSet().

bool EmDQM::mcMatchedOnly_
private

Definition at line 113 of file EmDQM.h.

Referenced by analyze(), bookHistograms(), and EmDQM().

unsigned int EmDQM::minEtForEtaEffPlot_
private

Definition at line 111 of file EmDQM.h.

Referenced by analyze(), and EmDQM().

unsigned int EmDQM::nbins_
private

Definition at line 110 of file EmDQM.h.

Referenced by bookHistograms(), and EmDQM().

std::vector<unsigned int> EmDQM::nCandCuts
private

Definition at line 164 of file EmDQM.h.

Referenced by analyze(), and SetVarsFromPSet().

bool EmDQM::noIsolationPlots_
private

Definition at line 115 of file EmDQM.h.

Referenced by EmDQM(), and SetVarsFromPSet().

bool EmDQM::noPhiPlots_
private

Definition at line 114 of file EmDQM.h.

Referenced by analyze(), bookHistograms(), and EmDQM().

unsigned int EmDQM::numOfHLTCollectionLabels
private

Definition at line 157 of file EmDQM.h.

Referenced by analyze(), bookHistograms(), and SetVarsFromPSet().

const unsigned EmDQM::OUTPUT_ALL = 3
staticprivate

Definition at line 241 of file EmDQM.h.

Referenced by dqmBeginRun(), and endRun().

const unsigned EmDQM::OUTPUT_ERRORS = 1
staticprivate
const unsigned EmDQM::OUTPUT_SILENT = 0
staticprivate

Definition at line 238 of file EmDQM.h.

const unsigned EmDQM::OUTPUT_WARNINGS = 2
staticprivate
std::vector<edm::ParameterSet> EmDQM::paramSets
private

Definition at line 153 of file EmDQM.h.

Referenced by analyze(), bookHistograms(), dqmBeginRun(), EmDQM(), and endRun().

unsigned int EmDQM::pathIndex
private

Definition at line 155 of file EmDQM.h.

Referenced by analyze(), and SetVarsFromPSet().

int EmDQM::pdgGen
private
std::vector<MonitorElement*> EmDQM::phigens
private

Definition at line 212 of file EmDQM.h.

Referenced by analyze(), and bookHistograms().

std::vector<std::vector<MonitorElement*> > EmDQM::phihistmatchs
private

Definition at line 201 of file EmDQM.h.

Referenced by bookHistograms().

std::vector<std::vector<MonitorElement*> > EmDQM::phihists
private

Definition at line 198 of file EmDQM.h.

Referenced by bookHistograms().

double EmDQM::phiMax_
private

Definition at line 109 of file EmDQM.h.

Referenced by bookHistograms(), and EmDQM().

std::vector<std::pair<double,double> > EmDQM::plotBounds
private

Definition at line 163 of file EmDQM.h.

Referenced by SetVarsFromPSet().

double EmDQM::plotEtMin
private
std::vector<bool> EmDQM::plotiso
private

Definition at line 161 of file EmDQM.h.

Referenced by SetVarsFromPSet().

double EmDQM::plotPtMax
private

Definition at line 171 of file EmDQM.h.

Referenced by bookHistograms(), and SetVarsFromPSet().

double EmDQM::plotPtMin
private

Definition at line 170 of file EmDQM.h.

Referenced by bookHistograms(), and SetVarsFromPSet().

const edm::ParameterSet& EmDQM::pset
private

Definition at line 99 of file EmDQM.h.

Referenced by EmDQM().

GreaterByPt<reco::Particle> EmDQM::pTComparator_
private

Definition at line 214 of file EmDQM.h.

Referenced by analyze().

GreaterByPt<reco::GenParticle> EmDQM::pTGenComparator_
private

Definition at line 215 of file EmDQM.h.

Referenced by checkGeneratedParticlesRequirement().

double EmDQM::ptMax_
private

Definition at line 106 of file EmDQM.h.

Referenced by dqmBeginRun(), and EmDQM().

double EmDQM::ptMin_
private

Definition at line 107 of file EmDQM.h.

Referenced by dqmBeginRun(), and EmDQM().

unsigned int EmDQM::reqNum
private

Definition at line 166 of file EmDQM.h.

Referenced by analyze(), checkRecoParticlesRequirement(), and SetVarsFromPSet().

std::vector<std::string> EmDQM::theHLTCollectionHumanNames
private

Definition at line 158 of file EmDQM.h.

Referenced by bookHistograms(), and SetVarsFromPSet().

std::vector<edm::InputTag> EmDQM::theHLTCollectionLabels
private

Definition at line 156 of file EmDQM.h.

Referenced by analyze(), bookHistograms(), and SetVarsFromPSet().

std::vector<int> EmDQM::theHLTOutputTypes
private

Definition at line 160 of file EmDQM.h.

Referenced by analyze(), and SetVarsFromPSet().

edm::InputTag EmDQM::theL1Seed
private

Definition at line 159 of file EmDQM.h.

std::vector<MonitorElement*> EmDQM::totalmatchs
private

Definition at line 208 of file EmDQM.h.

Referenced by analyze(), and bookHistograms().

std::vector<MonitorElement*> EmDQM::totals
private

Definition at line 207 of file EmDQM.h.

Referenced by analyze(), and bookHistograms().

edm::InputTag EmDQM::triggerObject_
private
edm::EDGetTokenT<trigger::TriggerEventWithRefs> EmDQM::triggerObject_token
private

Definition at line 219 of file EmDQM.h.

Referenced by analyze(), and EmDQM().

const unsigned EmDQM::TYPE_DOUBLE_ELE = 1
staticprivate

Definition at line 232 of file EmDQM.h.

Referenced by dqmBeginRun(), and findEgammaPaths().

const unsigned EmDQM::TYPE_DOUBLE_PHOTON = 3
staticprivate

Definition at line 234 of file EmDQM.h.

Referenced by dqmBeginRun(), and findEgammaPaths().

const unsigned EmDQM::TYPE_SINGLE_ELE = 0
staticprivate

Definition at line 231 of file EmDQM.h.

Referenced by dqmBeginRun(), and findEgammaPaths().

const unsigned EmDQM::TYPE_SINGLE_PHOTON = 2
staticprivate

Definition at line 233 of file EmDQM.h.

Referenced by dqmBeginRun(), and findEgammaPaths().

const unsigned EmDQM::TYPE_TRIPLE_ELE = 4
staticprivate

Definition at line 235 of file EmDQM.h.

Referenced by dqmBeginRun(), and findEgammaPaths().

bool EmDQM::useHumanReadableHistTitles_
private

Definition at line 112 of file EmDQM.h.

Referenced by bookHistograms(), and EmDQM().

unsigned int EmDQM::verbosity_
private