CMS 3D CMS Logo

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, EtaRegionm_histoKeyEffDenVarType
 
typedef std::pair< int, QualLevelm_histoKeyEffNumEtaType
 
typedef std::tuple< EffType, int, EtaRegion, QualLevelm_histoKeyEffNumVarType
 
typedef std::tuple< ResType, EtaRegion, QualLevelm_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, PropagateToMuon const &propagator)
 
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::MuonBxCollectionm_GmtInputTag
 
std::string m_HistFolder
 
HLTConfigProvider m_hltConfig
 
BXVector< l1t::Muonm_L1tL1tMuons
 
std::vector< l1t::MuonBxCollectionm_L1tMuons
 
float m_maxGmtMuonDR
 
float m_maxHltMuonDR
 
float m_minTagProbeDR
 
std::vector< MuonGmtPairm_MuonGmtPairs
 
edm::EDGetTokenT< reco::MuonCollectionm_MuonInputTag
 
std::vector< const reco::Muon * > m_ProbeMuons
 
PropagateToMuonSetup const m_propagatorSetup
 
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::TriggerEventm_trigInputTag
 
std::vector< std::string > m_trigNames
 
std::string m_trigProcess
 
edm::EDGetTokenT< edm::TriggerResultsm_trigProcess_token
 
bool m_useAtVtxCoord
 
bool m_verbose
 
edm::EDGetTokenT< reco::VertexCollectionm_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< DQMEDAnalyzerGlobalCacheinitializeGlobalCache (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

◆ m_histoKeyEffDenVarType

Definition at line 118 of file L1TMuonDQMOffline.h.

◆ m_histoKeyEffNumEtaType

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

Definition at line 116 of file L1TMuonDQMOffline.h.

◆ m_histoKeyEffNumVarType

Definition at line 115 of file L1TMuonDQMOffline.h.

◆ m_histoKeyResType

Definition at line 113 of file L1TMuonDQMOffline.h.

Member Enumeration Documentation

◆ Control

◆ EffType

◆ EtaRegion

◆ QualLevel

◆ ResType

Constructor & Destructor Documentation

◆ L1TMuonDQMOffline()

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

Definition at line 110 of file L1TMuonDQMOffline.cc.

References kEffEta, kEffPhi, kEffPt, and kEffVtx.

111  : m_propagatorSetup(ps.getParameter<edm::ParameterSet>("muProp"), consumesCollector()),
116  m_effStrings({{kEffPt, "pt"}, {kEffPhi, "phi"}, {kEffEta, "eta"}, {kEffVtx, "vtx"}}),
117  m_effLabelStrings({{kEffPt, "p_{T} (GeV)"}, {kEffPhi, "#phi"}, {kEffEta, "#eta"}, {kEffVtx, "# vertices"}}),
118  m_resStrings({{kResPt, "pt"},
119  {kRes1OverPt, "1overpt"},
120  {kResQOverPt, "qoverpt"},
121  {kResPhi, "phi"},
122  {kResEta, "eta"},
123  {kResCh, "charge"}}),
124  m_resLabelStrings({{kResPt, "(p_{T}^{L1} - p_{T}^{reco})/p_{T}^{reco}"},
125  {kRes1OverPt, "(p_{T}^{reco} - p_{T}^{L1})/p_{T}^{L1}"},
126  {kResQOverPt, "(q^{L1}*q^{reco}*p_{T}^{reco} - p_{T}^{L1})/p_{T}^{L1}"},
127  {kResPhi, "#phi_{L1} - #phi_{reco}"},
128  {kResEta, "#eta_{L1} - #eta_{reco}"},
129  {kResCh, "charge^{L1} - charge^{reco}"}}),
130  m_etaStrings({{kEtaRegionAll, "etaMin0_etaMax2p4"},
131  {kEtaRegionBmtf, "etaMin0_etaMax0p83"},
132  {kEtaRegionOmtf, "etaMin0p83_etaMax1p24"},
133  {kEtaRegionEmtf, "etaMin1p24_etaMax2p4"}}),
135  {{kQualAll, "qualAll"}, {kQualOpen, "qualOpen"}, {kQualDouble, "qualDouble"}, {kQualSingle, "qualSingle"}}),
136  m_verbose(ps.getUntrackedParameter<bool>("verbose")),
137  m_HistFolder(ps.getUntrackedParameter<string>("histFolder")),
138  m_TagPtCut(ps.getUntrackedParameter<double>("tagPtCut")),
139  m_recoToL1PtCutFactor(ps.getUntrackedParameter<double>("recoToL1PtCutFactor")),
140  m_cutsVPSet(ps.getUntrackedParameter<std::vector<edm::ParameterSet>>("cuts")),
141  m_MuonInputTag(consumes<reco::MuonCollection>(ps.getUntrackedParameter<InputTag>("muonInputTag"))),
142  m_GmtInputTag(consumes<l1t::MuonBxCollection>(ps.getUntrackedParameter<InputTag>("gmtInputTag"))),
143  m_VtxInputTag(consumes<VertexCollection>(ps.getUntrackedParameter<InputTag>("vtxInputTag"))),
144  m_BsInputTag(consumes<BeamSpot>(ps.getUntrackedParameter<InputTag>("bsInputTag"))),
145  m_trigInputTag(consumes<trigger::TriggerEvent>(ps.getUntrackedParameter<InputTag>("trigInputTag"))),
146  m_trigProcess(ps.getUntrackedParameter<string>("trigProcess")),
147  m_trigProcess_token(consumes<edm::TriggerResults>(ps.getUntrackedParameter<InputTag>("trigProcess_token"))),
148  m_trigNames(ps.getUntrackedParameter<vector<string>>("triggerNames")),
149  m_effVsPtBins(ps.getUntrackedParameter<std::vector<double>>("efficiencyVsPtBins")),
150  m_effVsPhiBins(ps.getUntrackedParameter<std::vector<double>>("efficiencyVsPhiBins")),
151  m_effVsEtaBins(ps.getUntrackedParameter<std::vector<double>>("efficiencyVsEtaBins")),
152  m_effVsVtxBins(ps.getUntrackedParameter<std::vector<double>>("efficiencyVsVtxBins")),
153  m_useAtVtxCoord(ps.getUntrackedParameter<bool>("useL1AtVtxCoord")),
154  m_maxGmtMuonDR(0.3),
155  m_minTagProbeDR(0.5),
156  m_maxHltMuonDR(0.1) {
157  if (m_verbose)
158  cout << "[L1TMuonDQMOffline:] ____________ Storage initialization ____________ " << endl;
159 
160  for (const auto& cutsPSet : m_cutsVPSet) {
161  const auto qCut = cutsPSet.getUntrackedParameter<int>("qualCut");
162  QualLevel qLevel = kQualAll;
163  if (qCut > 11) {
164  qLevel = kQualSingle;
165  } else if (qCut > 7) {
166  qLevel = kQualDouble;
167  } else if (qCut > 3) {
168  qLevel = kQualOpen;
169  }
170  m_cuts.emplace_back(std::make_pair(cutsPSet.getUntrackedParameter<int>("ptCut"), qLevel));
171  }
172 }
std::map< EffType, std::string > m_effStrings
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
edm::EDGetTokenT< reco::BeamSpot > m_BsInputTag
edm::EDGetTokenT< reco::MuonCollection > m_MuonInputTag
std::vector< double > m_effVsVtxBins
std::map< ResType, std::string > m_resLabelStrings
std::map< EtaRegion, std::string > m_etaStrings
edm::EDGetTokenT< edm::TriggerResults > m_trigProcess_token
const std::vector< EtaRegion > m_etaRegions
std::vector< double > m_effVsPhiBins
std::string m_HistFolder
std::vector< std::string > m_trigNames
std::map< QualLevel, std::string > m_qualStrings
T getUntrackedParameter(std::string const &, T const &) const
std::string m_trigProcess
std::vector< edm::ParameterSet > m_cutsVPSet
std::map< EffType, std::string > m_effLabelStrings
edm::EDGetTokenT< l1t::MuonBxCollection > m_GmtInputTag
std::vector< double > m_effVsPtBins
PropagateToMuonSetup const m_propagatorSetup
std::vector< std::pair< int, QualLevel > > m_cuts
const std::vector< EffType > m_effTypes
const std::vector< QualLevel > m_qualLevelsRes
std::map< ResType, std::string > m_resStrings
std::vector< double > m_effVsEtaBins
const std::vector< ResType > m_resTypes
edm::EDGetTokenT< reco::VertexCollection > m_VtxInputTag
edm::EDGetTokenT< trigger::TriggerEvent > m_trigInputTag

◆ ~L1TMuonDQMOffline()

L1TMuonDQMOffline::~L1TMuonDQMOffline ( )
override

Definition at line 175 of file L1TMuonDQMOffline.cc.

175 {}

Member Function Documentation

◆ analyze()

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

Reimplemented from DQMEDAnalyzer.

Definition at line 212 of file L1TMuonDQMOffline.cc.

References pwdgSkimBPark_cfi::beamSpot, gather_cfg::cout, PA_MinBiasSkim_cff::cut, options_cfi::eventSetup, getMuonGmtPairs(), getNVertices(), getPrimaryVertex(), getProbeMuons(), getTightMuons(), iEvent, 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_propagatorSetup, m_qualLevelsRes, m_recoToL1PtCutFactor, m_ResolutionHistos, m_resTypes, m_trigInputTag, m_trigProcess_token, m_verbose, m_VtxInputTag, PDWG_BPHSkim_cff::muons, L1TkPrimaryVertex_cfi::nVtx, BeamMonitor_cff::primaryVertex, TrackCandidateProducer_cfi::propagator, L1TMuonDQMOffline_cfi::qualCut, B2GTnPMonitor_cfi::trigEvent, trigObjTnPSource_cfi::var, and bphysicsOniaDQM_cfi::vertex.

212  {
213  auto const propagator = m_propagatorSetup.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);
230 
232  getProbeMuons(trigResults, trigEvent); // CB add flag to run on orthogonal datasets (no T&P)
233 
234  getMuonGmtPairs(gmtCands, propagator);
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
PropagateToMuonSetup const m_propagatorSetup
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
const reco::Vertex getPrimaryVertex(edm::Handle< reco::VertexCollection > &vertex, edm::Handle< reco::BeamSpot > &beamSpot)
const std::vector< ResType > m_resTypes
edm::EDGetTokenT< reco::VertexCollection > m_VtxInputTag
edm::EDGetTokenT< trigger::TriggerEvent > m_trigInputTag
std::map< std::tuple< EffType, int, EtaRegion, QualLevel >, MonitorElement * > m_EfficiencyNumVarHistos
primaryVertex
hltOfflineBeamSpot for HLTMON
void getMuonGmtPairs(edm::Handle< l1t::MuonBxCollection > &gmtCands, PropagateToMuon const &propagator)
void getTightMuons(edm::Handle< reco::MuonCollection > &muons, const reco::Vertex &vertex)

◆ bookControlHistos()

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:212
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

◆ bookEfficiencyHistos()

void L1TMuonDQMOffline::bookEfficiencyHistos ( DQMStore::IBooker ibooker)
protectedvirtual

Definition at line 364 of file L1TMuonDQMOffline.cc.

References dqm::implementation::IBooker::book1D(), PA_MinBiasSkim_cff::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, Skims_PA_cff::name, dqm::implementation::NavigatorBase::setCurrentFolder(), AlCaHLTBitMon_QueryRunRegistry::string, cond::impl::to_string(), and trigObjTnPSource_cfi::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::string to_string(const V &value)
Definition: OMSAccess.h:71
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
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

◆ bookHistograms()

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, createfilelist::int, 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 }
const std::string & triggerName(unsigned int triggerIndex) const
std::vector< std::string > m_trigNames
virtual void bookControlHistos(DQMStore::IBooker &)
unsigned int size() const
number of trigger paths in trigger table
virtual void bookResolutionHistos(DQMStore::IBooker &ibooker)
HLTConfigProvider m_hltConfig
std::vector< int > m_trigIndices
virtual void bookEfficiencyHistos(DQMStore::IBooker &ibooker)

◆ bookResolutionHistos()

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, Skims_PA_cff::name, LaserClient_cfi::nbins, dqm::implementation::NavigatorBase::setCurrentFolder(), AlCaHLTBitMon_QueryRunRegistry::string, trigObjTnPSource_cfi::var, TrackerOfflineValidation_Dqm_cff::xmax, and TrackerOfflineValidation_Dqm_cff::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)
const std::vector< QualLevel > m_qualLevelsRes
std::map< ResType, std::string > m_resStrings
const std::vector< ResType > m_resTypes
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:98

◆ dqmBeginRun()

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, m_verbose, and writedatasetfile::run.

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

◆ getHistBinsEff()

std::vector< float > L1TMuonDQMOffline::getHistBinsEff ( EffType  eff)
private

Definition at line 619 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().

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

◆ getHistBinsRes()

std::tuple< int, double, double > L1TMuonDQMOffline::getHistBinsRes ( ResType  res)
private

Definition at line 639 of file L1TMuonDQMOffline.cc.

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

Referenced by bookResolutionHistos().

639  {
640  if (res == kResPt)
641  return {50, -2., 2.};
642  if (res == kRes1OverPt)
643  return {50, -2., 2.};
644  if (res == kResQOverPt)
645  return {50, -2., 2.};
646  if (res == kResPhi)
647  return {96, -0.2, 0.2};
648  if (res == kResEta)
649  return {100, -0.1, 0.1};
650  if (res == kResCh)
651  return {5, -2, 3};
652  return {1, 0, 1};
653 }
Definition: Electron.h:6

◆ getMuonGmtPairs()

void L1TMuonDQMOffline::getMuonGmtPairs ( edm::Handle< l1t::MuonBxCollection > &  gmtCands,
PropagateToMuon const &  propagator 
)
private

Definition at line 556 of file L1TMuonDQMOffline.cc.

References BXVector< T >::begin(), gather_cfg::cout, MuonGmtPair::dR(), BXVector< T >::end(), MuonGmtPair::getVar(), kCtrlMuonGmtDeltaR, kCtrlProbeEta, kCtrlProbePhi, kCtrlProbePt, kEffEta, kEffPhi, kEffPt, m_ControlHistos, m_maxGmtMuonDR, m_MuonGmtPairs, m_ProbeMuons, m_useAtVtxCoord, m_verbose, and TrackCandidateProducer_cfi::propagator.

Referenced by analyze().

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

◆ getNVertices()

const unsigned int L1TMuonDQMOffline::getNVertices ( edm::Handle< reco::VertexCollection > &  vertex)
private

Definition at line 434 of file L1TMuonDQMOffline.cc.

References L1TkPrimaryVertex_cfi::nVtx, and bphysicsOniaDQM_cfi::vertex.

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 }

◆ getPrimaryVertex()

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 pwdgSkimBPark_cfi::beamSpot, BeamMonitor_cff::primaryVertex, and bphysicsOniaDQM_cfi::vertex.

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
primaryVertex
hltOfflineBeamSpot for HLTMON

◆ getProbeMuons()

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_2022v12_cff::dEta, HLT_2022v12_cff::distance, HLT_2022v12_cff::dPhi, 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, mathSSE::sqrt(), and B2GTnPMonitor_cfi::trigEvent.

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) {
543  m_ControlHistos[kCtrlTagPt]->Fill(pt);
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
Definition: deltar.py:1
std::vector< const reco::Muon * > m_TightMuons
std::map< Control, MonitorElement * > m_ControlHistos

◆ getTightMuons()

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, m_verbose, PDWG_BPHSkim_cff::muons, and bphysicsOniaDQM_cfi::vertex.

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
bool isTightMuon(const reco::Muon &, const reco::Vertex &)
std::map< Control, MonitorElement * > m_ControlHistos

◆ matchHlt()

double L1TMuonDQMOffline::matchHlt ( edm::Handle< trigger::TriggerEvent > &  triggerEvent,
const reco::Muon mu 
)
private

Definition at line 591 of file L1TMuonDQMOffline.cc.

References PbPb_ZMuSkimMuonDPG_cff::deltaR, HLT_2022v12_cff::InputTag, m_hltConfig, m_trigIndices, m_trigProcess, HLTConfigProvider::moduleLabels(), amptDefaultParameters_cff::mu, HLTConfigProvider::size(), PDWG_DiPhoton_SD_cff::triggerEvent, and TriggerAnalyzer::trigObjs.

Referenced by getProbeMuons().

591  {
592  double matchDeltaR = 9999;
593 
595 
596  vector<int>::const_iterator trigIndexIt = m_trigIndices.begin();
597  vector<int>::const_iterator trigIndexEnd = m_trigIndices.end();
598 
599  for (; trigIndexIt != trigIndexEnd; ++trigIndexIt) {
600  const vector<string> moduleLabels(m_hltConfig.moduleLabels(*trigIndexIt));
601  const unsigned moduleIndex = m_hltConfig.size((*trigIndexIt)) - 2;
602  const unsigned hltFilterIndex = triggerEvent->filterIndex(InputTag(moduleLabels[moduleIndex], "", m_trigProcess));
603 
604  if (hltFilterIndex < triggerEvent->sizeFilters()) {
605  const Keys triggerKeys(triggerEvent->filterKeys(hltFilterIndex));
606  const Vids triggerVids(triggerEvent->filterIds(hltFilterIndex));
607  const unsigned nTriggers = triggerVids.size();
608  for (size_t iTrig = 0; iTrig < nTriggers; ++iTrig) {
609  const TriggerObject trigObject = trigObjs[triggerKeys[iTrig]];
610  double dRtmp = deltaR((*mu), trigObject);
611  if (dRtmp < matchDeltaR)
612  matchDeltaR = dRtmp;
613  }
614  }
615  }
616  return matchDeltaR;
617 }
std::string m_trigProcess
unsigned int size() const
number of trigger paths in trigger table
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

◆ m_BsInputTag

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

Definition at line 164 of file L1TMuonDQMOffline.h.

Referenced by analyze().

◆ m_ControlHistos

std::map<Control, MonitorElement*> L1TMuonDQMOffline::m_ControlHistos
private

◆ m_cuts

std::vector<std::pair<int, QualLevel> > L1TMuonDQMOffline::m_cuts
private

Definition at line 139 of file L1TMuonDQMOffline.h.

Referenced by analyze(), and bookEfficiencyHistos().

◆ m_cutsVPSet

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

Definition at line 160 of file L1TMuonDQMOffline.h.

◆ m_EfficiencyDenEtaHistos

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

Definition at line 125 of file L1TMuonDQMOffline.h.

Referenced by analyze(), and bookEfficiencyHistos().

◆ m_EfficiencyDenPtHistos

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

Definition at line 124 of file L1TMuonDQMOffline.h.

Referenced by analyze(), and bookEfficiencyHistos().

◆ m_EfficiencyDenVarHistos

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().

◆ m_EfficiencyNumEtaHistos

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

Definition at line 122 of file L1TMuonDQMOffline.h.

Referenced by analyze(), and bookEfficiencyHistos().

◆ m_EfficiencyNumVarHistos

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().

◆ m_effLabelStrings

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

Definition at line 149 of file L1TMuonDQMOffline.h.

Referenced by bookEfficiencyHistos().

◆ m_effStrings

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

Definition at line 148 of file L1TMuonDQMOffline.h.

Referenced by bookEfficiencyHistos().

◆ m_effTypes

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

Definition at line 142 of file L1TMuonDQMOffline.h.

Referenced by analyze(), and bookEfficiencyHistos().

◆ m_effVsEtaBins

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

Definition at line 172 of file L1TMuonDQMOffline.h.

Referenced by getHistBinsEff().

◆ m_effVsPhiBins

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

Definition at line 171 of file L1TMuonDQMOffline.h.

Referenced by getHistBinsEff().

◆ m_effVsPtBins

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

Definition at line 170 of file L1TMuonDQMOffline.h.

Referenced by getHistBinsEff().

◆ m_effVsVtxBins

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

Definition at line 173 of file L1TMuonDQMOffline.h.

Referenced by getHistBinsEff().

◆ m_etaRegions

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

Definition at line 144 of file L1TMuonDQMOffline.h.

Referenced by bookEfficiencyHistos(), and bookResolutionHistos().

◆ m_etaStrings

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

Definition at line 152 of file L1TMuonDQMOffline.h.

Referenced by bookEfficiencyHistos(), and bookResolutionHistos().

◆ m_GmtInputTag

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

Definition at line 162 of file L1TMuonDQMOffline.h.

Referenced by analyze().

◆ m_HistFolder

std::string L1TMuonDQMOffline::m_HistFolder
private

◆ m_hltConfig

HLTConfigProvider L1TMuonDQMOffline::m_hltConfig
private

Definition at line 105 of file L1TMuonDQMOffline.h.

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

◆ m_L1tL1tMuons

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

Definition at line 137 of file L1TMuonDQMOffline.h.

◆ m_L1tMuons

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

Definition at line 135 of file L1TMuonDQMOffline.h.

◆ m_maxGmtMuonDR

float L1TMuonDQMOffline::m_maxGmtMuonDR
private

Definition at line 178 of file L1TMuonDQMOffline.h.

Referenced by getMuonGmtPairs().

◆ m_maxHltMuonDR

float L1TMuonDQMOffline::m_maxHltMuonDR
private

Definition at line 180 of file L1TMuonDQMOffline.h.

◆ m_minTagProbeDR

float L1TMuonDQMOffline::m_minTagProbeDR
private

Definition at line 179 of file L1TMuonDQMOffline.h.

Referenced by getProbeMuons().

◆ m_MuonGmtPairs

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

Definition at line 132 of file L1TMuonDQMOffline.h.

Referenced by analyze(), and getMuonGmtPairs().

◆ m_MuonInputTag

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

Definition at line 161 of file L1TMuonDQMOffline.h.

Referenced by analyze().

◆ m_ProbeMuons

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

Definition at line 131 of file L1TMuonDQMOffline.h.

Referenced by getMuonGmtPairs(), and getProbeMuons().

◆ m_propagatorSetup

PropagateToMuonSetup const L1TMuonDQMOffline::m_propagatorSetup
private

Definition at line 107 of file L1TMuonDQMOffline.h.

Referenced by analyze().

◆ m_qualLevelsRes

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

Definition at line 145 of file L1TMuonDQMOffline.h.

Referenced by analyze(), and bookResolutionHistos().

◆ m_qualStrings

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

Definition at line 153 of file L1TMuonDQMOffline.h.

Referenced by bookEfficiencyHistos(), and bookResolutionHistos().

◆ m_RecoMuons

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

Definition at line 134 of file L1TMuonDQMOffline.h.

◆ m_RecoRecoMuons

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

Definition at line 136 of file L1TMuonDQMOffline.h.

◆ m_recoToL1PtCutFactor

double L1TMuonDQMOffline::m_recoToL1PtCutFactor
private

Definition at line 159 of file L1TMuonDQMOffline.h.

Referenced by analyze().

◆ m_resLabelStrings

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

Definition at line 151 of file L1TMuonDQMOffline.h.

Referenced by bookResolutionHistos().

◆ m_ResolutionHistos

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().

◆ m_resStrings

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

Definition at line 150 of file L1TMuonDQMOffline.h.

Referenced by bookResolutionHistos().

◆ m_resTypes

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

Definition at line 143 of file L1TMuonDQMOffline.h.

Referenced by analyze(), and bookResolutionHistos().

◆ m_TagPtCut

double L1TMuonDQMOffline::m_TagPtCut
private

Definition at line 158 of file L1TMuonDQMOffline.h.

Referenced by getProbeMuons().

◆ m_TightMuons

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

Definition at line 130 of file L1TMuonDQMOffline.h.

Referenced by getProbeMuons(), and getTightMuons().

◆ m_trigIndices

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

Definition at line 175 of file L1TMuonDQMOffline.h.

Referenced by bookHistograms(), and matchHlt().

◆ m_trigInputTag

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

Definition at line 165 of file L1TMuonDQMOffline.h.

Referenced by analyze().

◆ m_trigNames

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

Definition at line 169 of file L1TMuonDQMOffline.h.

Referenced by bookHistograms().

◆ m_trigProcess

std::string L1TMuonDQMOffline::m_trigProcess
private

Definition at line 166 of file L1TMuonDQMOffline.h.

Referenced by dqmBeginRun(), and matchHlt().

◆ m_trigProcess_token

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

Definition at line 167 of file L1TMuonDQMOffline.h.

Referenced by analyze().

◆ m_useAtVtxCoord

bool L1TMuonDQMOffline::m_useAtVtxCoord
private

Definition at line 177 of file L1TMuonDQMOffline.h.

Referenced by getMuonGmtPairs().

◆ m_verbose

bool L1TMuonDQMOffline::m_verbose
private

◆ m_VtxInputTag

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

Definition at line 163 of file L1TMuonDQMOffline.h.

Referenced by analyze().