CMS 3D CMS Logo

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

#include <L1TMuonDQMOffline.h>

Inheritance diagram for L1TMuonDQMOffline:
DQMEDAnalyzer edm::stream::EDProducer< edm::GlobalCache< DQMEDAnalyzerGlobalCache >, edm::EndRunProducer, edm::EndLuminosityBlockProducer, edm::Accumulator >

Public Types

enum  Control {
  kCtrlTagPt, kCtrlTagEta, kCtrlTagPhi, kCtrlProbePt,
  kCtrlProbeEta, kCtrlProbePhi, kCtrlTagProbeDr, kCtrlTagHltDr,
  kCtrlMuonGmtDeltaR, kCtrlNTightVsAll, kCtrlNProbesVsTight
}
 
enum  EffType { kEffPt, kEffPhi, kEffEta, kEffVtx }
 
enum  EtaRegion {
  kEtaRegionAll, kEtaRegionBmtf, kEtaRegionOmtf, kEtaRegionEmtf,
  kEtaRegionOut
}
 
enum  QualLevel { kQualAll, kQualOpen, kQualDouble, kQualSingle }
 
enum  ResType {
  kResPt, kRes1OverPt, kResQOverPt, kResPhi,
  kResEta, kResCh
}
 
- Public Types inherited from DQMEDAnalyzer
typedef dqm::reco::DQMStore DQMStore
 
typedef dqm::reco::MonitorElement MonitorElement
 
- Public Types inherited from edm::stream::EDProducer< edm::GlobalCache< DQMEDAnalyzerGlobalCache >, edm::EndRunProducer, edm::EndLuminosityBlockProducer, edm::Accumulator >
using CacheTypes = CacheContexts< T...>
 
using GlobalCache = typename CacheTypes::GlobalCache
 
using HasAbility = AbilityChecker< T...>
 
using InputProcessBlockCache = typename CacheTypes::InputProcessBlockCache
 
using LuminosityBlockCache = typename CacheTypes::LuminosityBlockCache
 
using LuminosityBlockContext = LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCache >
 
using LuminosityBlockSummaryCache = typename CacheTypes::LuminosityBlockSummaryCache
 
using RunCache = typename CacheTypes::RunCache
 
using RunContext = RunContextT< RunCache, GlobalCache >
 
using RunSummaryCache = typename CacheTypes::RunSummaryCache
 

Public Member Functions

 L1TMuonDQMOffline (const edm::ParameterSet &ps)
 
 ~L1TMuonDQMOffline () override
 
- Public Member Functions inherited from DQMEDAnalyzer
void accumulate (edm::Event const &event, edm::EventSetup const &setup) final
 
void beginLuminosityBlock (edm::LuminosityBlock const &lumi, edm::EventSetup const &setup) final
 
void beginRun (edm::Run const &run, edm::EventSetup const &setup) final
 
void beginStream (edm::StreamID id) final
 
 DQMEDAnalyzer ()
 
void endLuminosityBlock (edm::LuminosityBlock const &lumi, edm::EventSetup const &setup) final
 
void endRun (edm::Run const &run, edm::EventSetup const &setup) final
 
virtual bool getCanSaveByLumi ()
 
- Public Member Functions inherited from edm::stream::EDProducer< edm::GlobalCache< DQMEDAnalyzerGlobalCache >, edm::EndRunProducer, edm::EndLuminosityBlockProducer, edm::Accumulator >
 EDProducer ()=default
 
 EDProducer (const EDProducer &)=delete
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
const EDProduceroperator= (const EDProducer &)=delete
 

Protected Member Functions

void analyze (const edm::Event &e, const edm::EventSetup &c) override
 
virtual void bookControlHistos (DQMStore::IBooker &)
 
virtual void bookEfficiencyHistos (DQMStore::IBooker &ibooker)
 
void bookHistograms (DQMStore::IBooker &ibooker, const edm::Run &run, const edm::EventSetup &iSetup) override
 
virtual void bookResolutionHistos (DQMStore::IBooker &ibooker)
 
void dqmBeginRun (const edm::Run &run, const edm::EventSetup &iSetup) override
 
- Protected Member Functions inherited from DQMEDAnalyzer
uint64_t meId () const
 

Private Types

typedef std::tuple< EffType,
int, EtaRegion
m_histoKeyEffDenVarType
 
typedef std::pair< int, QualLevelm_histoKeyEffNumEtaType
 
typedef std::tuple< EffType,
int, EtaRegion, QualLevel
m_histoKeyEffNumVarType
 
typedef std::tuple< ResType,
EtaRegion, QualLevel
m_histoKeyResType
 

Private Member Functions

std::vector< float > getHistBinsEff (EffType eff)
 
std::tuple< int, double, double > getHistBinsRes (ResType res)
 
void getMuonGmtPairs (edm::Handle< l1t::MuonBxCollection > &gmtCands)
 
const unsigned int getNVertices (edm::Handle< reco::VertexCollection > &vertex)
 
const reco::Vertex getPrimaryVertex (edm::Handle< reco::VertexCollection > &vertex, edm::Handle< reco::BeamSpot > &beamSpot)
 
void getProbeMuons (edm::Handle< edm::TriggerResults > &trigResults, edm::Handle< trigger::TriggerEvent > &trigEvent)
 
void getTightMuons (edm::Handle< reco::MuonCollection > &muons, const reco::Vertex &vertex)
 
double matchHlt (edm::Handle< trigger::TriggerEvent > &triggerEvent, const reco::Muon *mu)
 

Private Attributes

edm::EDGetTokenT< reco::BeamSpotm_BsInputTag
 
std::map< Control,
MonitorElement * > 
m_ControlHistos
 
std::vector< std::pair< int,
QualLevel > > 
m_cuts
 
std::vector< edm::ParameterSetm_cutsVPSet
 
std::map< int, MonitorElement * > m_EfficiencyDenEtaHistos
 
std::map< EtaRegion,
MonitorElement * > 
m_EfficiencyDenPtHistos
 
std::map< std::tuple< EffType,
int, EtaRegion >
, MonitorElement * > 
m_EfficiencyDenVarHistos
 
std::map< std::pair< int,
QualLevel >, MonitorElement * > 
m_EfficiencyNumEtaHistos
 
std::map< std::tuple< EffType,
int, EtaRegion, QualLevel >
, MonitorElement * > 
m_EfficiencyNumVarHistos
 
std::map< EffType, std::string > m_effLabelStrings
 
std::map< EffType, std::string > m_effStrings
 
const std::vector< EffTypem_effTypes
 
std::vector< double > m_effVsEtaBins
 
std::vector< double > m_effVsPhiBins
 
std::vector< double > m_effVsPtBins
 
std::vector< double > m_effVsVtxBins
 
const std::vector< EtaRegionm_etaRegions
 
std::map< EtaRegion, std::string > m_etaStrings
 
edm::EDGetTokenT
< l1t::MuonBxCollection
m_GmtInputTag
 
std::string m_HistFolder
 
HLTConfigProvider m_hltConfig
 
BXVector< l1t::Muonm_L1tL1tMuons
 
std::vector
< l1t::MuonBxCollection
m_L1tMuons
 
float m_maxGmtMuonDR
 
float m_maxHltMuonDR
 
float m_minTagProbeDR
 
std::vector< MuonGmtPairm_MuonGmtPairs
 
edm::EDGetTokenT
< reco::MuonCollection
m_MuonInputTag
 
std::vector< const reco::Muon * > m_ProbeMuons
 
PropagateToMuon m_propagator
 
const std::vector< QualLevelm_qualLevelsRes
 
std::map< QualLevel, std::string > m_qualStrings
 
std::vector< reco::MuonCollectionm_RecoMuons
 
std::vector< reco::Muonm_RecoRecoMuons
 
double m_recoToL1PtCutFactor
 
std::map< ResType, std::string > m_resLabelStrings
 
std::map< std::tuple< ResType,
EtaRegion, QualLevel >
, MonitorElement * > 
m_ResolutionHistos
 
std::map< ResType, std::string > m_resStrings
 
const std::vector< ResTypem_resTypes
 
double m_TagPtCut
 
std::vector< const reco::Muon * > m_TightMuons
 
std::vector< int > m_trigIndices
 
edm::EDGetTokenT
< trigger::TriggerEvent
m_trigInputTag
 
std::vector< std::string > m_trigNames
 
std::string m_trigProcess
 
edm::EDGetTokenT
< edm::TriggerResults
m_trigProcess_token
 
bool m_useAtVtxCoord
 
bool m_verbose
 
edm::EDGetTokenT
< reco::VertexCollection
m_VtxInputTag
 

Additional Inherited Members

- Static Public Member Functions inherited from DQMEDAnalyzer
static void globalEndJob (DQMEDAnalyzerGlobalCache const *)
 
static void globalEndLuminosityBlockProduce (edm::LuminosityBlock &lumi, edm::EventSetup const &setup, LuminosityBlockContext const *context)
 
static void globalEndRunProduce (edm::Run &run, edm::EventSetup const &setup, RunContext const *context)
 
static std::unique_ptr
< DQMEDAnalyzerGlobalCache
initializeGlobalCache (edm::ParameterSet const &)
 
- Protected Attributes inherited from DQMEDAnalyzer
edm::EDPutTokenT< DQMTokenlumiToken_
 
edm::EDPutTokenT< DQMTokenrunToken_
 
unsigned int streamId_
 

Detailed Description

Definition at line 62 of file L1TMuonDQMOffline.h.

Member Typedef Documentation

Definition at line 118 of file L1TMuonDQMOffline.h.

typedef std::pair<int, QualLevel> L1TMuonDQMOffline::m_histoKeyEffNumEtaType
private

Definition at line 116 of file L1TMuonDQMOffline.h.

Definition at line 115 of file L1TMuonDQMOffline.h.

Definition at line 113 of file L1TMuonDQMOffline.h.

Member Enumeration Documentation

Constructor & Destructor Documentation

L1TMuonDQMOffline::L1TMuonDQMOffline ( const edm::ParameterSet ps)
L1TMuonDQMOffline::~L1TMuonDQMOffline ( )
override

Definition at line 175 of file L1TMuonDQMOffline.cc.

175 {}

Member Function Documentation

void L1TMuonDQMOffline::analyze ( const edm::Event e,
const edm::EventSetup c 
)
overrideprotectedvirtual

Reimplemented from DQMEDAnalyzer.

Definition at line 212 of file L1TMuonDQMOffline.cc.

References beam_dqm_sourceclient-live_cfg::beamSpot, gather_cfg::cout, GOODCOLL_filter_cfg::cut, edm::Event::getByToken(), getMuonGmtPairs(), getNVertices(), getPrimaryVertex(), getProbeMuons(), getTightMuons(), PropagateToMuon::init(), kEffEta, kEffPt, kEffVtx, kEtaRegionAll, kEtaRegionOut, kQualAll, kResPt, m_BsInputTag, m_cuts, m_EfficiencyDenEtaHistos, m_EfficiencyDenPtHistos, m_EfficiencyDenVarHistos, m_EfficiencyNumEtaHistos, m_EfficiencyNumVarHistos, m_effTypes, m_GmtInputTag, m_MuonGmtPairs, m_MuonInputTag, m_propagator, m_qualLevelsRes, m_recoToL1PtCutFactor, m_ResolutionHistos, m_resTypes, m_trigInputTag, m_trigProcess_token, m_verbose, m_VtxInputTag, patZpeak::muons, beam_dqm_sourceclient-live_cfg::primaryVertex, L1TMuonDQMOffline_cfi::qualCut, and isotrackApplyRegressor::var.

212  {
213  m_propagator.init(eventSetup);
214 
216  iEvent.getByToken(m_MuonInputTag, muons);
218  iEvent.getByToken(m_BsInputTag, beamSpot);
220  iEvent.getByToken(m_VtxInputTag, vertex);
222  iEvent.getByToken(m_GmtInputTag, gmtCands);
223  Handle<edm::TriggerResults> trigResults;
224  iEvent.getByToken(m_trigProcess_token, trigResults);
226  iEvent.getByToken(m_trigInputTag, trigEvent);
227 
228  const auto nVtx = getNVertices(vertex);
229  const Vertex primaryVertex = getPrimaryVertex(vertex, beamSpot);
230 
231  getTightMuons(muons, primaryVertex);
232  getProbeMuons(trigResults, trigEvent); // CB add flag to run on orthogonal datasets (no T&P)
233 
234  getMuonGmtPairs(gmtCands);
235 
236  if (m_verbose)
237  cout << "[L1TMuonDQMOffline:] Computing efficiencies" << endl;
238 
239  vector<MuonGmtPair>::const_iterator muonGmtPairsIt = m_MuonGmtPairs.begin();
240  vector<MuonGmtPair>::const_iterator muonGmtPairsEnd = m_MuonGmtPairs.end();
241 
242  // To fill once for global eta and once for TF eta region of the L1T muon.
243  // The second entry is a placeholder and will be replaced by the TF eta region of the L1T muon.
244  std::array<EtaRegion, 2> regsToFill{{kEtaRegionAll, kEtaRegionAll}};
245 
246  for (; muonGmtPairsIt != muonGmtPairsEnd; ++muonGmtPairsIt) {
247  // Fill the resolution histograms
248  if ((muonGmtPairsIt->etaRegion() != kEtaRegionOut) && (muonGmtPairsIt->gmtPt() > 0)) {
249  regsToFill[1] = muonGmtPairsIt->etaRegion();
251  for (const auto var : m_resTypes) {
252  const auto varToFill = muonGmtPairsIt->getDeltaVar(var);
253  std::get<0>(histoKeyRes) = var;
254  // Fill for the global eta and for TF eta region that the probe muon is in
255  for (const auto regToFill : regsToFill) {
256  std::get<1>(histoKeyRes) = regToFill;
257  for (const auto qualLevel : m_qualLevelsRes) {
258  // This assumes that the qualLevel enum has increasing qualities
259  // HW quality levels can be 0, 4, 8, or 12
260  int qualCut = qualLevel * 4;
261  if (muonGmtPairsIt->gmtQual() >= qualCut) {
262  std::get<2>(histoKeyRes) = qualLevel;
263  m_ResolutionHistos[histoKeyRes]->Fill(varToFill);
264  }
265  }
266  }
267  }
268  }
269 
270  // Fill the efficiency numerator and denominator histograms
271  if (muonGmtPairsIt->etaRegion() != kEtaRegionOut) {
272  unsigned int cutsCounter = 0;
273  for (const auto& cut : m_cuts) {
274  const auto gmtPtCut = cut.first;
275  const auto qualLevel = cut.second;
276  const bool gmtAboveCut = (muonGmtPairsIt->gmtPt() > gmtPtCut);
277 
278  // default keys
279  m_histoKeyEffDenVarType histoKeyEffDenVar = {kEffPt, gmtPtCut, kEtaRegionAll};
280  m_histoKeyEffNumVarType histoKeyEffNumVar = {kEffPt, gmtPtCut, kEtaRegionAll, qualLevel};
281 
282  regsToFill[1] = muonGmtPairsIt->etaRegion();
283  for (const auto var : m_effTypes) {
284  if (var != kEffPt) {
285  if (muonGmtPairsIt->pt() < m_recoToL1PtCutFactor * gmtPtCut)
286  break; // efficiency at plateau
287  }
288  double varToFill;
289  if (var == kEffVtx) {
290  varToFill = static_cast<double>(nVtx);
291  } else {
292  varToFill = muonGmtPairsIt->getVar(var);
293  }
294  // Fill denominators
295  if (var == kEffEta) {
296  m_EfficiencyDenEtaHistos[gmtPtCut]->Fill(varToFill);
297  } else {
298  std::get<0>(histoKeyEffDenVar) = var;
299  // Fill for the global eta and for TF eta region that the probe muon is in
300  for (const auto regToFill : regsToFill) {
301  if (var == kEffPt) {
302  if (cutsCounter == 0) {
303  m_EfficiencyDenPtHistos[regToFill]->Fill(varToFill);
304  }
305  } else {
306  std::get<2>(histoKeyEffDenVar) = regToFill;
307  m_EfficiencyDenVarHistos[histoKeyEffDenVar]->Fill(varToFill);
308  }
309  }
310  }
311  // Fill numerators
312  std::get<0>(histoKeyEffNumVar) = var;
313  // This assumes that the qualLevel enum has increasing qualities
314  if (gmtAboveCut && muonGmtPairsIt->gmtQual() >= qualLevel * 4) {
315  if (var == kEffEta) {
316  m_histoKeyEffNumEtaType histoKeyEffNumEta = {gmtPtCut, qualLevel};
317  m_EfficiencyNumEtaHistos[histoKeyEffNumEta]->Fill(varToFill);
318  } else {
319  std::get<3>(histoKeyEffNumVar) = qualLevel;
320  // Fill for the global eta and for TF eta region that the probe muon is in
321  for (const auto regToFill : regsToFill) {
322  std::get<2>(histoKeyEffNumVar) = regToFill;
323  m_EfficiencyNumVarHistos[histoKeyEffNumVar]->Fill(varToFill);
324  }
325  }
326  }
327  }
328  ++cutsCounter;
329  }
330  }
331  }
332 
333  if (m_verbose)
334  cout << "[L1TMuonDQMOffline:] Computation finished" << endl;
335 }
edm::EDGetTokenT< reco::BeamSpot > m_BsInputTag
edm::EDGetTokenT< reco::MuonCollection > m_MuonInputTag
edm::EDGetTokenT< edm::TriggerResults > m_trigProcess_token
std::map< std::tuple< ResType, EtaRegion, QualLevel >, MonitorElement * > m_ResolutionHistos
std::map< EtaRegion, MonitorElement * > m_EfficiencyDenPtHistos
std::tuple< EffType, int, EtaRegion, QualLevel > m_histoKeyEffNumVarType
std::pair< int, QualLevel > m_histoKeyEffNumEtaType
std::tuple< ResType, EtaRegion, QualLevel > m_histoKeyResType
void getProbeMuons(edm::Handle< edm::TriggerResults > &trigResults, edm::Handle< trigger::TriggerEvent > &trigEvent)
const unsigned int getNVertices(edm::Handle< reco::VertexCollection > &vertex)
int iEvent
Definition: GenABIO.cc:224
edm::EDGetTokenT< l1t::MuonBxCollection > m_GmtInputTag
std::tuple< EffType, int, EtaRegion > m_histoKeyEffDenVarType
std::map< std::pair< int, QualLevel >, MonitorElement * > m_EfficiencyNumEtaHistos
list var
if using global norm cols_to_minmax = [&#39;t_delta&#39;, &#39;t_hmaxNearP&#39;,&#39;t_emaxNearP&#39;, &#39;t_hAnnular&#39;, &#39;t_eAnnular&#39;,&#39;t_pt&#39;,&#39;t_nVtx&#39;,&#39;t_ieta&#39;,&#39;t_eHcal10&#39;, &#39;t_eHcal30&#39;,&#39;t_rhoh&#39;,&#39;t_eHcal&#39;] df[cols_to_minmax] = df[cols_to_minmax].apply(lambda x: (x - x.min()) / (x.max() - x.min()) if (x.max() - x.min() &gt; 0) else 1.0/200.0)
std::map< int, MonitorElement * > m_EfficiencyDenEtaHistos
std::vector< std::pair< int, QualLevel > > m_cuts
const std::vector< EffType > m_effTypes
const std::vector< QualLevel > m_qualLevelsRes
std::vector< MuonGmtPair > m_MuonGmtPairs
std::map< std::tuple< EffType, int, EtaRegion >, MonitorElement * > m_EfficiencyDenVarHistos
void getMuonGmtPairs(edm::Handle< l1t::MuonBxCollection > &gmtCands)
const reco::Vertex getPrimaryVertex(edm::Handle< reco::VertexCollection > &vertex, edm::Handle< reco::BeamSpot > &beamSpot)
void init(const edm::EventSetup &iSetup)
Call this method at the beginning of each event, to initialize geometry, magnetic field and propagato...
tuple muons
Definition: patZpeak.py:39
const std::vector< ResType > m_resTypes
edm::EDGetTokenT< reco::VertexCollection > m_VtxInputTag
edm::EDGetTokenT< trigger::TriggerEvent > m_trigInputTag
tuple cout
Definition: gather_cfg.py:144
std::map< std::tuple< EffType, int, EtaRegion, QualLevel >, MonitorElement * > m_EfficiencyNumVarHistos
PropagateToMuon m_propagator
void getTightMuons(edm::Handle< reco::MuonCollection > &muons, const reco::Vertex &vertex)
void L1TMuonDQMOffline::bookControlHistos ( DQMStore::IBooker ibooker)
protectedvirtual

Definition at line 338 of file L1TMuonDQMOffline.cc.

References dqm::implementation::IBooker::book1D(), dqm::implementation::IBooker::book2D(), gather_cfg::cout, kCtrlMuonGmtDeltaR, kCtrlNProbesVsTight, kCtrlNTightVsAll, kCtrlProbeEta, kCtrlProbePhi, kCtrlProbePt, kCtrlTagEta, kCtrlTagHltDr, kCtrlTagPhi, kCtrlTagProbeDr, kCtrlTagPt, m_ControlHistos, m_HistFolder, m_verbose, and dqm::implementation::NavigatorBase::setCurrentFolder().

Referenced by bookHistograms().

338  {
339  if (m_verbose)
340  cout << "[L1TMuonDQMOffline:] Booking Control Plot Histos" << endl;
341 
342  ibooker.setCurrentFolder(m_HistFolder + "/control_variables");
343 
344  m_ControlHistos[kCtrlMuonGmtDeltaR] = ibooker.book1D("MuonGmtDeltaR", "MuonGmtDeltaR; #DeltaR", 50, 0., 0.5);
346  ibooker.book2D("NTightVsAll", "NTightVsAll; # muons; # tight muons", 20, -0.5, 19.5, 16, -0.5, 15.5);
348  ibooker.book2D("NProbesVsTight", "NProbesVsTight; # tight muons; # probe muons", 8, -0.5, 7.5, 8, -0.5, 7.5);
349 
350  m_ControlHistos[kCtrlTagPt] = ibooker.book1D("TagMuonPt", "TagMuonPt; p_{T}", 50, 0., 100.);
351  m_ControlHistos[kCtrlTagPhi] = ibooker.book1D("TagMuonPhi", "TagMuonPhi; #phi", 66, -3.3, 3.3);
352  m_ControlHistos[kCtrlTagEta] = ibooker.book1D("TagMuonEta", "TagMuonEta; #eta", 50, -2.5, 2.5);
353 
354  m_ControlHistos[kCtrlProbePt] = ibooker.book1D("ProbeMuonPt", "ProbeMuonPt; p_{T}", 50, 0., 100.);
355  m_ControlHistos[kCtrlProbePhi] = ibooker.book1D("ProbeMuonPhi", "ProbeMuonPhi; #phi", 66, -3.3, 3.3);
356  m_ControlHistos[kCtrlProbeEta] = ibooker.book1D("ProbeMuonEta", "ProbeMuonEta; #eta", 50, -2.5, 2.5);
357 
359  ibooker.book1D("TagMuonProbeMuonDeltaR", "TagMuonProbeMuonDeltaR; #DeltaR", 50, 0., 5.0);
360  m_ControlHistos[kCtrlTagHltDr] = ibooker.book1D("TagMuonHltDeltaR", "TagMuonHltDeltaR;#DeltaR", 55, 0., 0.11);
361 }
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:32
std::string m_HistFolder
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
Definition: DQMStore.h:177
tuple cout
Definition: gather_cfg.py:144
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:98
std::map< Control, MonitorElement * > m_ControlHistos
void L1TMuonDQMOffline::bookEfficiencyHistos ( DQMStore::IBooker ibooker)
protectedvirtual

Definition at line 364 of file L1TMuonDQMOffline.cc.

References dqm::implementation::IBooker::book1D(), GOODCOLL_filter_cfg::cut, getHistBinsEff(), kEffEta, kEffPt, m_cuts, m_EfficiencyDenEtaHistos, m_EfficiencyDenPtHistos, m_EfficiencyDenVarHistos, m_EfficiencyNumEtaHistos, m_EfficiencyNumVarHistos, m_effLabelStrings, m_effStrings, m_effTypes, m_etaRegions, m_etaStrings, m_HistFolder, m_qualStrings, mergeVDriftHistosByStation::name, dqm::implementation::NavigatorBase::setCurrentFolder(), AlCaHLTBitMon_QueryRunRegistry::string, and isotrackApplyRegressor::var.

Referenced by bookHistograms().

364  {
365  ibooker.setCurrentFolder(m_HistFolder + "/numerators_and_denominators");
366 
367  for (const auto var : m_effTypes) {
368  auto histBins = getHistBinsEff(var);
369  // histograms for eta variable get a special treatment
370  if (var == kEffEta) {
371  for (const auto& cut : m_cuts) {
372  const auto gmtPtCut = cut.first;
373  const auto qualLevel = cut.second;
374  std::string name = "effDen_" + m_effStrings[var] + "_" + std::to_string(gmtPtCut);
375  m_EfficiencyDenEtaHistos[gmtPtCut] =
376  ibooker.book1D(name, name + ";" + m_effLabelStrings[var], histBins.size() - 1, &histBins[0]);
377  name = "effNum_" + m_effStrings[var] + "_" + std::to_string(gmtPtCut) + "_" + m_qualStrings[qualLevel];
378  m_histoKeyEffNumEtaType histoKeyEffNumEta = {gmtPtCut, qualLevel};
379  m_EfficiencyNumEtaHistos[histoKeyEffNumEta] =
380  ibooker.book1D(name, name + ";" + m_effLabelStrings[var], histBins.size() - 1, &histBins[0]);
381  }
382  } else {
383  for (const auto etaReg : m_etaRegions) {
384  // denominator histograms for pt variable get a special treatment
385  if (var == kEffPt) {
386  std::string name = "effDen_" + m_effStrings[var] + "_" + m_etaStrings[etaReg];
387  m_EfficiencyDenPtHistos[etaReg] =
388  ibooker.book1D(name, name + ";" + m_effLabelStrings[var], histBins.size() - 1, &histBins[0]);
389  } else {
390  for (const auto& cut : m_cuts) {
391  const int gmtPtCut = cut.first;
392  std::string name =
393  "effDen_" + m_effStrings[var] + "_" + std::to_string(gmtPtCut) + "_" + m_etaStrings[etaReg];
394  m_histoKeyEffDenVarType histoKeyEffDenVar = {var, gmtPtCut, etaReg};
395  m_EfficiencyDenVarHistos[histoKeyEffDenVar] =
396  ibooker.book1D(name, name + ";" + m_effLabelStrings[var], histBins.size() - 1, &histBins[0]);
397  }
398  }
399  for (const auto& cut : m_cuts) {
400  const auto gmtPtCut = cut.first;
401  const auto qualLevel = cut.second;
402  std::string name = "effNum_" + m_effStrings[var] + "_" + std::to_string(gmtPtCut) + "_" +
403  m_etaStrings[etaReg] + "_" + m_qualStrings[qualLevel];
404  m_histoKeyEffNumVarType histoKeyEffNum = {var, gmtPtCut, etaReg, qualLevel};
405  m_EfficiencyNumVarHistos[histoKeyEffNum] =
406  ibooker.book1D(name, name + ";" + m_effLabelStrings[var], histBins.size() - 1, &histBins[0]);
407  }
408  }
409  }
410  }
411 }
std::map< EffType, std::string > m_effStrings
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:32
std::map< EtaRegion, std::string > m_etaStrings
const std::vector< EtaRegion > m_etaRegions
std::map< EtaRegion, MonitorElement * > m_EfficiencyDenPtHistos
std::tuple< EffType, int, EtaRegion, QualLevel > m_histoKeyEffNumVarType
std::string m_HistFolder
std::pair< int, QualLevel > m_histoKeyEffNumEtaType
std::vector< float > getHistBinsEff(EffType eff)
std::map< QualLevel, std::string > m_qualStrings
std::map< EffType, std::string > m_effLabelStrings
std::tuple< EffType, int, EtaRegion > m_histoKeyEffDenVarType
std::map< std::pair< int, QualLevel >, MonitorElement * > m_EfficiencyNumEtaHistos
list var
if using global norm cols_to_minmax = [&#39;t_delta&#39;, &#39;t_hmaxNearP&#39;,&#39;t_emaxNearP&#39;, &#39;t_hAnnular&#39;, &#39;t_eAnnular&#39;,&#39;t_pt&#39;,&#39;t_nVtx&#39;,&#39;t_ieta&#39;,&#39;t_eHcal10&#39;, &#39;t_eHcal30&#39;,&#39;t_rhoh&#39;,&#39;t_eHcal&#39;] df[cols_to_minmax] = df[cols_to_minmax].apply(lambda x: (x - x.min()) / (x.max() - x.min()) if (x.max() - x.min() &gt; 0) else 1.0/200.0)
std::map< int, MonitorElement * > m_EfficiencyDenEtaHistos
std::vector< std::pair< int, QualLevel > > m_cuts
const std::vector< EffType > m_effTypes
std::map< std::tuple< EffType, int, EtaRegion >, MonitorElement * > m_EfficiencyDenVarHistos
std::map< std::tuple< EffType, int, EtaRegion, QualLevel >, MonitorElement * > m_EfficiencyNumVarHistos
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:98
void L1TMuonDQMOffline::bookHistograms ( DQMStore::IBooker ibooker,
const edm::Run run,
const edm::EventSetup iSetup 
)
overrideprotectedvirtual

Implements DQMEDAnalyzer.

Definition at line 185 of file L1TMuonDQMOffline.cc.

References bookControlHistos(), bookEfficiencyHistos(), bookResolutionHistos(), gather_cfg::cout, m_hltConfig, m_trigIndices, m_trigNames, m_verbose, HLTConfigProvider::size(), and HLTConfigProvider::triggerName().

185  {
186  //book histos
187  bookControlHistos(ibooker);
188  bookEfficiencyHistos(ibooker);
189  bookResolutionHistos(ibooker);
190 
191  vector<string>::const_iterator trigNamesIt = m_trigNames.begin();
192  vector<string>::const_iterator trigNamesEnd = m_trigNames.end();
193 
194  for (; trigNamesIt != trigNamesEnd; ++trigNamesIt) {
195  TString tNameTmp = TString(*trigNamesIt); // use TString as it handles regex
196  TRegexp tNamePattern = TRegexp(tNameTmp, true);
197  int tIndex = -1;
198 
199  for (unsigned ipath = 0; ipath < m_hltConfig.size(); ++ipath) {
200  TString tmpName = TString(m_hltConfig.triggerName(ipath));
201  if (tmpName.Contains(tNamePattern)) {
202  tIndex = int(ipath);
203  m_trigIndices.push_back(tIndex);
204  }
205  }
206  if (tIndex < 0 && m_verbose)
207  cout << "[L1TMuonDQMOffline:] Warning: Could not find trigger " << (*trigNamesIt) << endl;
208  }
209 }
unsigned int size() const
number of trigger paths in trigger table
const std::string & triggerName(unsigned int triggerIndex) const
std::vector< std::string > m_trigNames
virtual void bookControlHistos(DQMStore::IBooker &)
virtual void bookResolutionHistos(DQMStore::IBooker &ibooker)
HLTConfigProvider m_hltConfig
tuple cout
Definition: gather_cfg.py:144
std::vector< int > m_trigIndices
virtual void bookEfficiencyHistos(DQMStore::IBooker &ibooker)
void L1TMuonDQMOffline::bookResolutionHistos ( DQMStore::IBooker ibooker)
protectedvirtual

Definition at line 413 of file L1TMuonDQMOffline.cc.

References dqm::implementation::IBooker::book1D(), gather_cfg::cout, getHistBinsRes(), m_etaRegions, m_etaStrings, m_HistFolder, m_qualLevelsRes, m_qualStrings, m_resLabelStrings, m_ResolutionHistos, m_resStrings, m_resTypes, m_verbose, mergeVDriftHistosByStation::name, hlt_dqm_clientPB-live_cfg::nbins, dqm::implementation::NavigatorBase::setCurrentFolder(), AlCaHLTBitMon_QueryRunRegistry::string, isotrackApplyRegressor::var, hlt_dqm_clientPB-live_cfg::xmax, and hlt_dqm_clientPB-live_cfg::xmin.

Referenced by bookHistograms().

413  {
414  if (m_verbose)
415  cout << "[L1TMuonOffline:] Booking Resolution Plot Histos" << endl;
416  ibooker.setCurrentFolder(m_HistFolder + "/resolution");
417 
418  for (const auto var : m_resTypes) {
419  auto nbins = std::get<0>(getHistBinsRes(var));
420  auto xmin = std::get<1>(getHistBinsRes(var));
421  auto xmax = std::get<2>(getHistBinsRes(var));
422  for (const auto etaReg : m_etaRegions) {
423  for (const auto qualLevel : m_qualLevelsRes) {
424  m_histoKeyResType histoKeyRes = {var, etaReg, qualLevel};
425  std::string name =
426  "resolution_" + m_resStrings[var] + "_" + m_etaStrings[etaReg] + "_" + m_qualStrings[qualLevel];
427  m_ResolutionHistos[histoKeyRes] = ibooker.book1D(name, name + ";" + m_resLabelStrings[var], nbins, xmin, xmax);
428  }
429  }
430  }
431 }
std::map< ResType, std::string > m_resLabelStrings
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:32
std::map< EtaRegion, std::string > m_etaStrings
std::map< std::tuple< ResType, EtaRegion, QualLevel >, MonitorElement * > m_ResolutionHistos
const std::vector< EtaRegion > m_etaRegions
std::string m_HistFolder
std::tuple< ResType, EtaRegion, QualLevel > m_histoKeyResType
std::map< QualLevel, std::string > m_qualStrings
std::tuple< int, double, double > getHistBinsRes(ResType res)
list var
if using global norm cols_to_minmax = [&#39;t_delta&#39;, &#39;t_hmaxNearP&#39;,&#39;t_emaxNearP&#39;, &#39;t_hAnnular&#39;, &#39;t_eAnnular&#39;,&#39;t_pt&#39;,&#39;t_nVtx&#39;,&#39;t_ieta&#39;,&#39;t_eHcal10&#39;, &#39;t_eHcal30&#39;,&#39;t_rhoh&#39;,&#39;t_eHcal&#39;] df[cols_to_minmax] = df[cols_to_minmax].apply(lambda x: (x - x.min()) / (x.max() - x.min()) if (x.max() - x.min() &gt; 0) else 1.0/200.0)
const std::vector< QualLevel > m_qualLevelsRes
std::map< ResType, std::string > m_resStrings
const std::vector< ResType > m_resTypes
tuple cout
Definition: gather_cfg.py:144
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:98
void L1TMuonDQMOffline::dqmBeginRun ( const edm::Run run,
const edm::EventSetup iSetup 
)
overrideprotectedvirtual

Reimplemented from DQMEDAnalyzer.

Definition at line 177 of file L1TMuonDQMOffline.cc.

References gather_cfg::cout, HLTConfigProvider::init(), m_hltConfig, m_trigProcess, and m_verbose.

177  {
178  if (m_verbose)
179  cout << "[L1TMuonDQMOffline:] Called beginRun." << endl;
180  bool changed = true;
181  m_hltConfig.init(run, iSetup, m_trigProcess, changed);
182 }
std::string m_trigProcess
bool init(const edm::Run &iRun, const edm::EventSetup &iSetup, const std::string &processName, bool &changed)
d&#39;tor
HLTConfigProvider m_hltConfig
tuple cout
Definition: gather_cfg.py:144
std::vector< float > L1TMuonDQMOffline::getHistBinsEff ( EffType  eff)
private

Definition at line 618 of file L1TMuonDQMOffline.cc.

References L1TMuonDQMOffline_cfi::effVsEtaBins, L1TMuonDQMOffline_cfi::effVsPhiBins, L1TMuonDQMOffline_cfi::effVsPtBins, L1TMuonDQMOffline_cfi::effVsVtxBins, kEffEta, kEffPhi, kEffPt, kEffVtx, m_effVsEtaBins, m_effVsPhiBins, m_effVsPtBins, and m_effVsVtxBins.

Referenced by bookEfficiencyHistos().

618  {
619  if (eff == kEffPt) {
620  std::vector<float> effVsPtBins(m_effVsPtBins.begin(), m_effVsPtBins.end());
621  return effVsPtBins;
622  }
623  if (eff == kEffPhi) {
624  std::vector<float> effVsPhiBins(m_effVsPhiBins.begin(), m_effVsPhiBins.end());
625  return effVsPhiBins;
626  }
627  if (eff == kEffEta) {
628  std::vector<float> effVsEtaBins(m_effVsEtaBins.begin(), m_effVsEtaBins.end());
629  return effVsEtaBins;
630  }
631  if (eff == kEffVtx) {
632  std::vector<float> effVsVtxBins(m_effVsVtxBins.begin(), m_effVsVtxBins.end());
633  return effVsVtxBins;
634  }
635  return {0., 1.};
636 }
std::vector< double > m_effVsVtxBins
std::vector< double > m_effVsPhiBins
std::vector< double > m_effVsPtBins
std::vector< double > m_effVsEtaBins
std::tuple< int, double, double > L1TMuonDQMOffline::getHistBinsRes ( ResType  res)
private

Definition at line 638 of file L1TMuonDQMOffline.cc.

References kRes1OverPt, kResCh, kResEta, kResPhi, kResPt, and kResQOverPt.

Referenced by bookResolutionHistos().

638  {
639  if (res == kResPt)
640  return {50, -2., 2.};
641  if (res == kRes1OverPt)
642  return {50, -2., 2.};
643  if (res == kResQOverPt)
644  return {50, -2., 2.};
645  if (res == kResPhi)
646  return {96, -0.2, 0.2};
647  if (res == kResEta)
648  return {100, -0.1, 0.1};
649  if (res == kResCh)
650  return {5, -2, 3};
651  return {1, 0, 1};
652 }
void L1TMuonDQMOffline::getMuonGmtPairs ( edm::Handle< l1t::MuonBxCollection > &  gmtCands)
private

Definition at line 556 of file L1TMuonDQMOffline.cc.

References gather_cfg::cout, MuonGmtPair::dR(), MuonGmtPair::getVar(), kCtrlMuonGmtDeltaR, kCtrlProbeEta, kCtrlProbePhi, kCtrlProbePt, kEffEta, kEffPhi, kEffPt, m_ControlHistos, m_maxGmtMuonDR, m_MuonGmtPairs, m_ProbeMuons, m_propagator, m_useAtVtxCoord, and m_verbose.

Referenced by analyze().

556  {
557  m_MuonGmtPairs.clear();
558  if (m_verbose)
559  cout << "[L1TMuonDQMOffline:] Getting muon GMT pairs" << endl;
560 
561  vector<const reco::Muon*>::const_iterator probeMuIt = m_ProbeMuons.begin();
562  vector<const reco::Muon*>::const_iterator probeMuEnd = m_ProbeMuons.end();
563 
565  l1t::MuonBxCollection::const_iterator gmtEnd = gmtCands->end(0);
566 
567  for (; probeMuIt != probeMuEnd; ++probeMuIt) {
568  MuonGmtPair pairBestCand((*probeMuIt), nullptr, m_propagator, m_useAtVtxCoord);
569 
570  // Fill the control histograms with the probe muon kinematic variables used
571  m_ControlHistos[kCtrlProbeEta]->Fill(pairBestCand.getVar(L1TMuonDQMOffline::kEffEta));
572  m_ControlHistos[kCtrlProbePhi]->Fill(pairBestCand.getVar(L1TMuonDQMOffline::kEffPhi));
573  m_ControlHistos[kCtrlProbePt]->Fill(pairBestCand.getVar(L1TMuonDQMOffline::kEffPt));
574 
575  gmtIt = gmtCands->begin(0); // use only on L1T muons from BX 0
576 
577  for (; gmtIt != gmtEnd; ++gmtIt) {
578  MuonGmtPair pairTmpCand((*probeMuIt), &(*gmtIt), m_propagator, m_useAtVtxCoord);
579 
580  if ((pairTmpCand.dR() < m_maxGmtMuonDR) && (pairTmpCand.dR() < pairBestCand.dR())) {
581  pairBestCand = pairTmpCand;
582  }
583  }
584  m_MuonGmtPairs.push_back(pairBestCand);
585  m_ControlHistos[kCtrlMuonGmtDeltaR]->Fill(pairBestCand.dR());
586  }
587 }
std::vector< const reco::Muon * > m_ProbeMuons
std::vector< T >::const_iterator const_iterator
Definition: BXVector.h:18
std::vector< MuonGmtPair > m_MuonGmtPairs
tuple cout
Definition: gather_cfg.py:144
PropagateToMuon m_propagator
std::map< Control, MonitorElement * > m_ControlHistos
const unsigned int L1TMuonDQMOffline::getNVertices ( edm::Handle< reco::VertexCollection > &  vertex)
private

Definition at line 434 of file L1TMuonDQMOffline.cc.

References edm::HandleBase::isValid().

Referenced by analyze().

434  {
435  unsigned int nVtx = 0;
436 
437  if (vertex.isValid()) {
438  for (const auto& vertexIt : *vertex) {
439  if (vertexIt.isValid() && !vertexIt.isFake()) {
440  ++nVtx;
441  }
442  }
443  }
444  return nVtx;
445 }
bool isValid() const
Definition: HandleBase.h:70
const reco::Vertex L1TMuonDQMOffline::getPrimaryVertex ( edm::Handle< reco::VertexCollection > &  vertex,
edm::Handle< reco::BeamSpot > &  beamSpot 
)
private

Definition at line 448 of file L1TMuonDQMOffline.cc.

References edm::HandleBase::isValid(), and beam_dqm_sourceclient-live_cfg::primaryVertex.

Referenced by analyze().

448  {
449  Vertex::Point posVtx;
450  Vertex::Error errVtx;
451 
452  bool hasPrimaryVertex = false;
453 
454  if (vertex.isValid()) {
455  vector<Vertex>::const_iterator vertexIt = vertex->begin();
456  vector<Vertex>::const_iterator vertexEnd = vertex->end();
457 
458  for (; vertexIt != vertexEnd; ++vertexIt) {
459  if (vertexIt->isValid() && !vertexIt->isFake()) {
460  posVtx = vertexIt->position();
461  errVtx = vertexIt->error();
462  hasPrimaryVertex = true;
463  break;
464  }
465  }
466  }
467 
468  if (!hasPrimaryVertex) {
469  posVtx = beamSpot->position();
470  errVtx(0, 0) = beamSpot->BeamWidthX();
471  errVtx(1, 1) = beamSpot->BeamWidthY();
472  errVtx(2, 2) = beamSpot->sigmaZ();
473  }
474  const Vertex primaryVertex(posVtx, errVtx);
475  return primaryVertex;
476 }
math::Error< dimension >::type Error
covariance error matrix (3x3)
Definition: Vertex.h:44
math::XYZPoint Point
point in the space
Definition: Vertex.h:40
bool isValid() const
Definition: HandleBase.h:70
void L1TMuonDQMOffline::getProbeMuons ( edm::Handle< edm::TriggerResults > &  trigResults,
edm::Handle< trigger::TriggerEvent > &  trigEvent 
)
private

Definition at line 495 of file L1TMuonDQMOffline.cc.

References gather_cfg::cout, HLT_FULL_cff::distance, PVValHelper::eta, kCtrlNProbesVsTight, kCtrlTagEta, kCtrlTagHltDr, kCtrlTagPhi, kCtrlTagProbeDr, kCtrlTagPt, m_ControlHistos, m_minTagProbeDR, m_ProbeMuons, m_TagPtCut, m_TightMuons, m_verbose, matchHlt(), phi, DiDispStaMuonMonitor_cfi::pt, and mathSSE::sqrt().

Referenced by analyze().

496  {
497  if (m_verbose)
498  cout << "[L1TMuonDQMOffline:] getting probe muons" << endl;
499  m_ProbeMuons.clear();
500  std::vector<const reco::Muon*> tagMuonsInHist;
501 
502  tagMuonsInHist.clear();
503 
504  vector<const reco::Muon*>::const_iterator probeCandIt = m_TightMuons.begin();
505  vector<const reco::Muon*>::const_iterator tightMuonsEnd = m_TightMuons.end();
506 
507  for (; probeCandIt != tightMuonsEnd; ++probeCandIt) {
508  bool isProbe = false;
509  vector<const reco::Muon*>::const_iterator tagCandIt = m_TightMuons.begin();
510  float deltar = 0.;
511 
512  for (; tagCandIt != tightMuonsEnd; ++tagCandIt) {
513  bool tagMuonAlreadyInHist = false;
514  bool tagHasTrig = false;
515  float eta = (*tagCandIt)->eta();
516  float phi = (*tagCandIt)->phi();
517  float pt = (*tagCandIt)->pt();
518  float dEta = eta - (*probeCandIt)->eta();
519  float dPhi = phi - (*probeCandIt)->phi();
520  deltar = sqrt(dEta * dEta + dPhi * dPhi);
521 
522  if ((*tagCandIt) == (*probeCandIt) || deltar < m_minTagProbeDR)
523  continue; // CB has a little bias for closed-by muons
524  auto matchHltDeltaR = matchHlt(trigEvent, (*tagCandIt));
525  tagHasTrig = (matchHltDeltaR < m_maxHltMuonDR) && (pt > m_TagPtCut);
526  isProbe |= tagHasTrig;
527  if (tagHasTrig) {
528  if (std::distance(m_TightMuons.begin(), m_TightMuons.end()) > 2) {
529  for (vector<const reco::Muon*>::const_iterator tagMuonsInHistIt = tagMuonsInHist.begin();
530  tagMuonsInHistIt != tagMuonsInHist.end();
531  ++tagMuonsInHistIt) {
532  if ((*tagCandIt) == (*tagMuonsInHistIt)) {
533  tagMuonAlreadyInHist = true;
534  break;
535  }
536  }
537  if (tagMuonAlreadyInHist == false)
538  tagMuonsInHist.push_back((*tagCandIt));
539  }
540  if (tagMuonAlreadyInHist == false) {
541  m_ControlHistos[kCtrlTagEta]->Fill(eta);
542  m_ControlHistos[kCtrlTagPhi]->Fill(phi);
543  m_ControlHistos[kCtrlTagPt]->Fill(pt);
544  m_ControlHistos[kCtrlTagProbeDr]->Fill(deltar);
545  m_ControlHistos[kCtrlTagHltDr]->Fill(matchHltDeltaR);
546  }
547  }
548  }
549  if (isProbe)
550  m_ProbeMuons.push_back((*probeCandIt));
551  }
553 }
std::vector< const reco::Muon * > m_ProbeMuons
double matchHlt(edm::Handle< trigger::TriggerEvent > &triggerEvent, const reco::Muon *mu)
T sqrt(T t)
Definition: SSEVec.h:19
std::vector< const reco::Muon * > m_TightMuons
tuple cout
Definition: gather_cfg.py:144
std::map< Control, MonitorElement * > m_ControlHistos
void L1TMuonDQMOffline::getTightMuons ( edm::Handle< reco::MuonCollection > &  muons,
const reco::Vertex vertex 
)
private

Definition at line 479 of file L1TMuonDQMOffline.cc.

References gather_cfg::cout, muon::isTightMuon(), kCtrlNTightVsAll, m_ControlHistos, m_TightMuons, and m_verbose.

Referenced by analyze().

479  {
480  if (m_verbose)
481  cout << "[L1TMuonDQMOffline:] Getting tight muons" << endl;
482  m_TightMuons.clear();
483  MuonCollection::const_iterator muonIt = muons->begin();
484  MuonCollection::const_iterator muonEnd = muons->end();
485 
486  for (; muonIt != muonEnd; ++muonIt) {
487  if (muon::isTightMuon((*muonIt), vertex)) {
488  m_TightMuons.push_back(&(*muonIt));
489  }
490  }
491  m_ControlHistos[kCtrlNTightVsAll]->Fill(muons->size(), m_TightMuons.size());
492 }
std::vector< const reco::Muon * > m_TightMuons
tuple cout
Definition: gather_cfg.py:144
bool isTightMuon(const reco::Muon &, const reco::Vertex &)
std::map< Control, MonitorElement * > m_ControlHistos
double L1TMuonDQMOffline::matchHlt ( edm::Handle< trigger::TriggerEvent > &  triggerEvent,
const reco::Muon mu 
)
private

Definition at line 590 of file L1TMuonDQMOffline.cc.

References HLT_FULL_cff::deltaR, HLT_FULL_cff::InputTag, m_hltConfig, m_trigIndices, m_trigProcess, HLTConfigProvider::moduleLabels(), HLTConfigProvider::size(), and TriggerAnalyzer::trigObjs.

Referenced by getProbeMuons().

590  {
591  double matchDeltaR = 9999;
592 
593  TriggerObjectCollection trigObjs = triggerEvent->getObjects();
594 
595  vector<int>::const_iterator trigIndexIt = m_trigIndices.begin();
596  vector<int>::const_iterator trigIndexEnd = m_trigIndices.end();
597 
598  for (; trigIndexIt != trigIndexEnd; ++trigIndexIt) {
599  const vector<string> moduleLabels(m_hltConfig.moduleLabels(*trigIndexIt));
600  const unsigned moduleIndex = m_hltConfig.size((*trigIndexIt)) - 2;
601  const unsigned hltFilterIndex = triggerEvent->filterIndex(InputTag(moduleLabels[moduleIndex], "", m_trigProcess));
602 
603  if (hltFilterIndex < triggerEvent->sizeFilters()) {
604  const Keys triggerKeys(triggerEvent->filterKeys(hltFilterIndex));
605  const Vids triggerVids(triggerEvent->filterIds(hltFilterIndex));
606  const unsigned nTriggers = triggerVids.size();
607  for (size_t iTrig = 0; iTrig < nTriggers; ++iTrig) {
608  const TriggerObject trigObject = trigObjs[triggerKeys[iTrig]];
609  double dRtmp = deltaR((*mu), trigObject);
610  if (dRtmp < matchDeltaR)
611  matchDeltaR = dRtmp;
612  }
613  }
614  }
615  return matchDeltaR;
616 }
unsigned int size() const
number of trigger paths in trigger table
std::string m_trigProcess
Single trigger physics object (e.g., an isolated muon)
Definition: TriggerObject.h:21
const std::vector< std::string > & moduleLabels(unsigned int trigger) const
label(s) of module(s) on a trigger path
std::vector< TriggerObject > TriggerObjectCollection
collection of trigger physics objects (e.g., all isolated muons)
Definition: TriggerObject.h:75
std::vector< size_type > Keys
HLTConfigProvider m_hltConfig
std::vector< int > Vids
std::vector< int > m_trigIndices

Member Data Documentation

edm::EDGetTokenT<reco::BeamSpot> L1TMuonDQMOffline::m_BsInputTag
private

Definition at line 164 of file L1TMuonDQMOffline.h.

Referenced by analyze().

std::map<Control, MonitorElement*> L1TMuonDQMOffline::m_ControlHistos
private
std::vector<std::pair<int, QualLevel> > L1TMuonDQMOffline::m_cuts
private

Definition at line 139 of file L1TMuonDQMOffline.h.

Referenced by analyze(), and bookEfficiencyHistos().

std::vector<edm::ParameterSet> L1TMuonDQMOffline::m_cutsVPSet
private

Definition at line 160 of file L1TMuonDQMOffline.h.

std::map<int, MonitorElement*> L1TMuonDQMOffline::m_EfficiencyDenEtaHistos
private

Definition at line 125 of file L1TMuonDQMOffline.h.

Referenced by analyze(), and bookEfficiencyHistos().

std::map<EtaRegion, MonitorElement*> L1TMuonDQMOffline::m_EfficiencyDenPtHistos
private

Definition at line 124 of file L1TMuonDQMOffline.h.

Referenced by analyze(), and bookEfficiencyHistos().

std::map<std::tuple<EffType, int, EtaRegion>, MonitorElement*> L1TMuonDQMOffline::m_EfficiencyDenVarHistos
private

Definition at line 123 of file L1TMuonDQMOffline.h.

Referenced by analyze(), and bookEfficiencyHistos().

std::map<std::pair<int, QualLevel>, MonitorElement*> L1TMuonDQMOffline::m_EfficiencyNumEtaHistos
private

Definition at line 122 of file L1TMuonDQMOffline.h.

Referenced by analyze(), and bookEfficiencyHistos().

std::map<std::tuple<EffType, int, EtaRegion, QualLevel>, MonitorElement*> L1TMuonDQMOffline::m_EfficiencyNumVarHistos
private

Definition at line 121 of file L1TMuonDQMOffline.h.

Referenced by analyze(), and bookEfficiencyHistos().

std::map<EffType, std::string> L1TMuonDQMOffline::m_effLabelStrings
private

Definition at line 149 of file L1TMuonDQMOffline.h.

Referenced by bookEfficiencyHistos().

std::map<EffType, std::string> L1TMuonDQMOffline::m_effStrings
private

Definition at line 148 of file L1TMuonDQMOffline.h.

Referenced by bookEfficiencyHistos().

const std::vector<EffType> L1TMuonDQMOffline::m_effTypes
private

Definition at line 142 of file L1TMuonDQMOffline.h.

Referenced by analyze(), and bookEfficiencyHistos().

std::vector<double> L1TMuonDQMOffline::m_effVsEtaBins
private

Definition at line 172 of file L1TMuonDQMOffline.h.

Referenced by getHistBinsEff().

std::vector<double> L1TMuonDQMOffline::m_effVsPhiBins
private

Definition at line 171 of file L1TMuonDQMOffline.h.

Referenced by getHistBinsEff().

std::vector<double> L1TMuonDQMOffline::m_effVsPtBins
private

Definition at line 170 of file L1TMuonDQMOffline.h.

Referenced by getHistBinsEff().

std::vector<double> L1TMuonDQMOffline::m_effVsVtxBins
private

Definition at line 173 of file L1TMuonDQMOffline.h.

Referenced by getHistBinsEff().

const std::vector<EtaRegion> L1TMuonDQMOffline::m_etaRegions
private

Definition at line 144 of file L1TMuonDQMOffline.h.

Referenced by bookEfficiencyHistos(), and bookResolutionHistos().

std::map<EtaRegion, std::string> L1TMuonDQMOffline::m_etaStrings
private

Definition at line 152 of file L1TMuonDQMOffline.h.

Referenced by bookEfficiencyHistos(), and bookResolutionHistos().

edm::EDGetTokenT<l1t::MuonBxCollection> L1TMuonDQMOffline::m_GmtInputTag
private

Definition at line 162 of file L1TMuonDQMOffline.h.

Referenced by analyze().

std::string L1TMuonDQMOffline::m_HistFolder
private
HLTConfigProvider L1TMuonDQMOffline::m_hltConfig
private

Definition at line 105 of file L1TMuonDQMOffline.h.

Referenced by bookHistograms(), dqmBeginRun(), and matchHlt().

BXVector<l1t::Muon> L1TMuonDQMOffline::m_L1tL1tMuons
private

Definition at line 137 of file L1TMuonDQMOffline.h.

std::vector<l1t::MuonBxCollection> L1TMuonDQMOffline::m_L1tMuons
private

Definition at line 135 of file L1TMuonDQMOffline.h.

float L1TMuonDQMOffline::m_maxGmtMuonDR
private

Definition at line 178 of file L1TMuonDQMOffline.h.

Referenced by getMuonGmtPairs().

float L1TMuonDQMOffline::m_maxHltMuonDR
private

Definition at line 180 of file L1TMuonDQMOffline.h.

float L1TMuonDQMOffline::m_minTagProbeDR
private

Definition at line 179 of file L1TMuonDQMOffline.h.

Referenced by getProbeMuons().

std::vector<MuonGmtPair> L1TMuonDQMOffline::m_MuonGmtPairs
private

Definition at line 132 of file L1TMuonDQMOffline.h.

Referenced by analyze(), and getMuonGmtPairs().

edm::EDGetTokenT<reco::MuonCollection> L1TMuonDQMOffline::m_MuonInputTag
private

Definition at line 161 of file L1TMuonDQMOffline.h.

Referenced by analyze().

std::vector<const reco::Muon*> L1TMuonDQMOffline::m_ProbeMuons
private

Definition at line 131 of file L1TMuonDQMOffline.h.

Referenced by getMuonGmtPairs(), and getProbeMuons().

PropagateToMuon L1TMuonDQMOffline::m_propagator
private

Definition at line 107 of file L1TMuonDQMOffline.h.

Referenced by analyze(), and getMuonGmtPairs().

const std::vector<QualLevel> L1TMuonDQMOffline::m_qualLevelsRes
private

Definition at line 145 of file L1TMuonDQMOffline.h.

Referenced by analyze(), and bookResolutionHistos().

std::map<QualLevel, std::string> L1TMuonDQMOffline::m_qualStrings
private

Definition at line 153 of file L1TMuonDQMOffline.h.

Referenced by bookEfficiencyHistos(), and bookResolutionHistos().

std::vector<reco::MuonCollection> L1TMuonDQMOffline::m_RecoMuons
private

Definition at line 134 of file L1TMuonDQMOffline.h.

std::vector<reco::Muon> L1TMuonDQMOffline::m_RecoRecoMuons
private

Definition at line 136 of file L1TMuonDQMOffline.h.

double L1TMuonDQMOffline::m_recoToL1PtCutFactor
private

Definition at line 159 of file L1TMuonDQMOffline.h.

Referenced by analyze().

std::map<ResType, std::string> L1TMuonDQMOffline::m_resLabelStrings
private

Definition at line 151 of file L1TMuonDQMOffline.h.

Referenced by bookResolutionHistos().

std::map<std::tuple<ResType, EtaRegion, QualLevel>, MonitorElement*> L1TMuonDQMOffline::m_ResolutionHistos
private

Definition at line 126 of file L1TMuonDQMOffline.h.

Referenced by analyze(), and bookResolutionHistos().

std::map<ResType, std::string> L1TMuonDQMOffline::m_resStrings
private

Definition at line 150 of file L1TMuonDQMOffline.h.

Referenced by bookResolutionHistos().

const std::vector<ResType> L1TMuonDQMOffline::m_resTypes
private

Definition at line 143 of file L1TMuonDQMOffline.h.

Referenced by analyze(), and bookResolutionHistos().

double L1TMuonDQMOffline::m_TagPtCut
private

Definition at line 158 of file L1TMuonDQMOffline.h.

Referenced by getProbeMuons().

std::vector<const reco::Muon*> L1TMuonDQMOffline::m_TightMuons
private

Definition at line 130 of file L1TMuonDQMOffline.h.

Referenced by getProbeMuons(), and getTightMuons().

std::vector<int> L1TMuonDQMOffline::m_trigIndices
private

Definition at line 175 of file L1TMuonDQMOffline.h.

Referenced by bookHistograms(), and matchHlt().

edm::EDGetTokenT<trigger::TriggerEvent> L1TMuonDQMOffline::m_trigInputTag
private

Definition at line 165 of file L1TMuonDQMOffline.h.

Referenced by analyze().

std::vector<std::string> L1TMuonDQMOffline::m_trigNames
private

Definition at line 169 of file L1TMuonDQMOffline.h.

Referenced by bookHistograms().

std::string L1TMuonDQMOffline::m_trigProcess
private

Definition at line 166 of file L1TMuonDQMOffline.h.

Referenced by dqmBeginRun(), and matchHlt().

edm::EDGetTokenT<edm::TriggerResults> L1TMuonDQMOffline::m_trigProcess_token
private

Definition at line 167 of file L1TMuonDQMOffline.h.

Referenced by analyze().

bool L1TMuonDQMOffline::m_useAtVtxCoord
private

Definition at line 177 of file L1TMuonDQMOffline.h.

Referenced by getMuonGmtPairs().

bool L1TMuonDQMOffline::m_verbose
private
edm::EDGetTokenT<reco::VertexCollection> L1TMuonDQMOffline::m_VtxInputTag
private

Definition at line 163 of file L1TMuonDQMOffline.h.

Referenced by analyze().