CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
BPhysicsOniaDQM Class Reference

#include <BPhysicsOniaDQM.h>

Inheritance diagram for BPhysicsOniaDQM:
DQMEDAnalyzer edm::one::EDProducer< edm::Accumulator, edm::EndLuminosityBlockProducer, edm::EndRunProducer, edm::one::WatchLuminosityBlocks, edm::one::WatchRuns > edm::one::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

void analyze (const edm::Event &, const edm::EventSetup &) override
 Get the analysis. More...
 
void bookHistograms (DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
 
 BPhysicsOniaDQM (const edm::ParameterSet &)
 Constructor. More...
 
 ~BPhysicsOniaDQM () override
 Destructor. More...
 
- Public Member Functions inherited from DQMEDAnalyzer
void accumulate (edm::Event const &ev, edm::EventSetup const &es) final
 
virtual void analyze (edm::Event const &, edm::EventSetup const &)
 
void beginLuminosityBlock (edm::LuminosityBlock const &lumi, edm::EventSetup const &setup) override
 
void beginRun (edm::Run const &run, edm::EventSetup const &setup) final
 
virtual void dqmBeginRun (edm::Run const &, edm::EventSetup const &)
 
 DQMEDAnalyzer ()
 
 DQMEDAnalyzer (DQMEDAnalyzer const &)=delete
 
 DQMEDAnalyzer (DQMEDAnalyzer &&)=delete
 
void endLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &) override
 
void endLuminosityBlockProduce (edm::LuminosityBlock &lumi, edm::EventSetup const &setup) final
 
void endRun (edm::Run const &run, edm::EventSetup const &setup) override
 
void endRunProduce (edm::Run &run, edm::EventSetup const &setup) override
 
 ~DQMEDAnalyzer () override=default
 
- Public Member Functions inherited from edm::one::EDProducer< edm::Accumulator, edm::EndLuminosityBlockProducer, edm::EndRunProducer, edm::one::WatchLuminosityBlocks, edm::one::WatchRuns >
 EDProducer ()=default
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
bool hasAbilityToProduceInLumis () const final
 
bool hasAbilityToProduceInRuns () const final
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
- Public Member Functions inherited from edm::one::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
bool wantsStreamLuminosityBlocks () const
 
bool wantsStreamRuns () const
 
 ~EDProducerBase () override
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts (BranchType iBranchType) const
 
 ProducerBase ()
 
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex () const
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription const &)> registrationCallback () const
 used by the fwk to register list of products More...
 
void resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
 
 ~ProducerBase () noexcept(false) override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Member Functions

float computeMass (const math::XYZVector &vec1, const math::XYZVector &vec2)
 
bool isMuonInAccept (const reco::Muon &recoMu)
 
bool selGlobalMuon (const reco::Muon &recoMu)
 
bool selTrackerMuon (const reco::Muon &recoMu)
 

Private Attributes

MonitorElementdiMuonMass_global
 
MonitorElementdiMuonMass_standalone
 
MonitorElementdiMuonMass_tracker
 
MonitorElementglbBkgNoCut
 
MonitorElementglbSigCut
 
MonitorElementglbSigNoCut
 
MonitorElementglobal_background
 
edm::EDGetTokenT< LumiSummarylumiSummaryToken_
 
std::string metname
 
math::XYZPoint RefVtx
 
MonitorElementstaBkgNoCut
 
MonitorElementstandalone_background
 
MonitorElementstaSigCut
 
MonitorElementstaSigNoCut
 
edm::EDGetTokenT< reco::MuonCollectiontheMuonCollectionLabel_
 
MonitorElementtracker_background
 
MonitorElementtrkBkgNoCut
 
MonitorElementtrkSigCut
 
MonitorElementtrkSigNoCut
 
edm::EDGetTokenT< reco::VertexCollectionvertex_
 

Additional Inherited Members

- Public Types inherited from edm::one::EDProducerBase
typedef EDProducerBase ModuleType
 
- Public Types inherited from edm::ProducerBase
using ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex >>
 
typedef ProductRegistryHelper::TypeLabelList TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::one::EDProducerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
- Protected Attributes inherited from DQMEDAnalyzer
edm::EDPutTokenT< DQMTokenlumiToken_
 
edm::EDPutTokenT< DQMTokenrunToken_
 

Detailed Description

DQM offline for quarkonia

Author
S. Bolognesi, Eric - CERN

Definition at line 27 of file BPhysicsOniaDQM.h.

Constructor & Destructor Documentation

BPhysicsOniaDQM::BPhysicsOniaDQM ( const edm::ParameterSet parameters)

Constructor.

Definition at line 29 of file BPhysicsOniaDQM.cc.

References edm::ParameterSet::getParameter(), and metname.

29  {
30  // Muon Collection Label
31  vertex_ = consumes<reco::VertexCollection>(
32  parameters.getParameter<InputTag>("vertex"));
33  theMuonCollectionLabel_ = consumes<reco::MuonCollection>(
34  parameters.getParameter<InputTag>("MuonCollection"));
35  lumiSummaryToken_ = consumes<LumiSummary, edm::InLumi>(
36  parameters.getParameter<InputTag>("lumiSummary"));
37 
38  global_background = nullptr;
39  diMuonMass_global = nullptr;
40  tracker_background = nullptr;
41  diMuonMass_tracker = nullptr;
42  standalone_background = nullptr;
43  diMuonMass_standalone = nullptr;
44 
45  glbSigCut = nullptr;
46  glbSigNoCut = nullptr;
47  glbBkgNoCut = nullptr;
48  staSigCut = nullptr;
49  staSigNoCut = nullptr;
50  staBkgNoCut = nullptr;
51  trkSigCut = nullptr;
52  trkSigNoCut = nullptr;
53  trkBkgNoCut = nullptr;
54 
55  metname = "oniaAnalyzer";
56 }
T getParameter(std::string const &) const
edm::EDGetTokenT< reco::VertexCollection > vertex_
MonitorElement * global_background
MonitorElement * tracker_background
MonitorElement * diMuonMass_global
MonitorElement * glbSigCut
MonitorElement * diMuonMass_standalone
MonitorElement * trkSigCut
MonitorElement * standalone_background
MonitorElement * staBkgNoCut
edm::EDGetTokenT< reco::MuonCollection > theMuonCollectionLabel_
std::string metname
MonitorElement * staSigNoCut
MonitorElement * staSigCut
MonitorElement * trkBkgNoCut
MonitorElement * glbBkgNoCut
MonitorElement * diMuonMass_tracker
MonitorElement * trkSigNoCut
edm::EDGetTokenT< LumiSummary > lumiSummaryToken_
MonitorElement * glbSigNoCut
BPhysicsOniaDQM::~BPhysicsOniaDQM ( )
override

Destructor.

Definition at line 58 of file BPhysicsOniaDQM.cc.

58 {}

Member Function Documentation

void BPhysicsOniaDQM::analyze ( const edm::Event iEvent,
const edm::EventSetup iSetup 
)
override

Get the analysis.

Definition at line 103 of file BPhysicsOniaDQM.cc.

References edm::Event::getByToken(), muon::isGoodMuon(), edm::HandleBase::isValid(), LogTrace, metname, extraflags_cff::muons, and muon::TrackerMuonArbitrated.

103  {
104  LogTrace(metname) << "[BPhysicsOniaDQM] Analysis of event # ";
105 
106  // Take the STA muon container
108  iEvent.getByToken(theMuonCollectionLabel_, muons);
109 
111  iEvent.getByToken(vertex_, privtxs);
112  VertexCollection::const_iterator privtx;
113 
114  if (privtxs->begin() != privtxs->end()) {
115  privtx = privtxs->begin();
116  RefVtx = privtx->position();
117  } else {
118  RefVtx.SetXYZ(0., 0., 0.);
119  }
120 
121  if (muons.isValid()) {
122  for (MuonCollection::const_iterator recoMu1 = muons->begin();
123  recoMu1 != muons->end(); ++recoMu1) {
124  // only loop over the remaining muons if recoMu1 is one of the following
125  if (recoMu1->isGlobalMuon() || recoMu1->isTrackerMuon() ||
126  recoMu1->isStandAloneMuon()) {
127  for (MuonCollection::const_iterator recoMu2 = recoMu1 + 1;
128  recoMu2 != muons->end(); ++recoMu2) {
129  // fill the relevant histograms if recoMu2 satisfies one of the
130  // following
131  if (recoMu1->isGlobalMuon() && recoMu2->isGlobalMuon()) {
132  math::XYZVector vec1 = recoMu1->globalTrack()->momentum();
133  math::XYZVector vec2 = recoMu2->globalTrack()->momentum();
134  float massJPsi = computeMass(vec1, vec2);
135 
136  // if opposite charges, fill glbSig, else fill glbBkg
137  if (((*recoMu1).charge() * (*recoMu2).charge()) < 0) {
138  if (diMuonMass_global != nullptr) { // BPhysicsOniaDQM original one
139  diMuonMass_global->Fill(massJPsi);
140  }
141 
142  if (glbSigNoCut != nullptr) {
143  glbSigNoCut->Fill(massJPsi);
144  if (selGlobalMuon(*recoMu1) && selGlobalMuon(*recoMu2)) {
145  if (glbSigCut != nullptr) glbSigCut->Fill(massJPsi);
146  }
147  }
148  } else {
149  if (global_background != nullptr) { // BPhysicsOniaDQM original one
150  global_background->Fill(massJPsi);
151  }
152 
153  if (glbBkgNoCut != nullptr) {
154  glbBkgNoCut->Fill(massJPsi);
155  }
156  }
157  }
158 
159  if (recoMu1->isStandAloneMuon() && recoMu2->isStandAloneMuon() &&
160  fabs(recoMu1->outerTrack()->d0()) < 5 &&
161  fabs(recoMu1->outerTrack()->dz()) < 30 &&
162  fabs(recoMu2->outerTrack()->d0()) < 5 &&
163  fabs(recoMu2->outerTrack()->dz()) < 30) {
164  math::XYZVector vec1 = recoMu1->outerTrack()->momentum();
165  math::XYZVector vec2 = recoMu2->outerTrack()->momentum();
166  float massJPsi = computeMass(vec1, vec2);
167 
168  // if opposite charges, fill staSig, else fill staBkg
169  if (((*recoMu1).charge() * (*recoMu2).charge()) < 0) {
170  if (diMuonMass_standalone != nullptr) {
171  diMuonMass_standalone->Fill(massJPsi);
172  }
173 
174  if (staSigNoCut != nullptr) {
175  staSigNoCut->Fill(massJPsi);
176  }
177  } else {
178  if (standalone_background != nullptr) {
179  standalone_background->Fill(massJPsi);
180  }
181 
182  if (staBkgNoCut != nullptr) {
183  staBkgNoCut->Fill(massJPsi);
184  }
185  }
186  }
187 
188  if (recoMu1->isTrackerMuon() && recoMu2->isTrackerMuon() &&
191  math::XYZVector vec1 = recoMu1->innerTrack()->momentum();
192  math::XYZVector vec2 = recoMu2->innerTrack()->momentum();
193  float massJPsi = computeMass(vec1, vec2);
194 
195  // if opposite charges, fill trkSig, else fill trkBkg
196  if (((*recoMu1).charge() * (*recoMu2).charge()) < 0) {
197  if (diMuonMass_tracker != nullptr) {
198  diMuonMass_tracker->Fill(massJPsi);
199  }
200 
201  if (trkSigNoCut != nullptr) {
202  trkSigNoCut->Fill(massJPsi);
203  if (selTrackerMuon(*recoMu1) && selTrackerMuon(*recoMu2)) {
204  if (trkSigCut != nullptr) trkSigCut->Fill(massJPsi);
205  }
206  }
207  } else {
208  if (tracker_background != nullptr) {
209  tracker_background->Fill(massJPsi);
210  }
211 
212  if (trkBkgNoCut != nullptr) {
213  trkBkgNoCut->Fill(massJPsi);
214  }
215  }
216  }
217  } // end of 2nd MuonCollection
218  } // end of GLB,STA,TRK muon check
219  } // end of 1st MuonCollection
220  } // Is this MuonCollection vaild?
221 }
bool selGlobalMuon(const reco::Muon &recoMu)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:579
edm::EDGetTokenT< reco::VertexCollection > vertex_
MonitorElement * global_background
MonitorElement * tracker_background
MonitorElement * diMuonMass_global
void Fill(long long x)
MonitorElement * glbSigCut
MonitorElement * diMuonMass_standalone
MonitorElement * trkSigCut
MonitorElement * standalone_background
MonitorElement * staBkgNoCut
std::vector< double > vec1
Definition: HCALResponse.h:15
edm::EDGetTokenT< reco::MuonCollection > theMuonCollectionLabel_
std::string metname
bool isValid() const
Definition: HandleBase.h:74
#define LogTrace(id)
MonitorElement * staSigNoCut
bool isGoodMuon(const reco::Muon &muon, SelectionType type, reco::Muon::ArbitrationType arbitrationType=reco::Muon::SegmentAndTrackArbitration)
main GoodMuon wrapper call
XYZVectorD XYZVector
spatial vector with cartesian internal representation
Definition: Vector3D.h:30
math::XYZPoint RefVtx
MonitorElement * trkBkgNoCut
MonitorElement * glbBkgNoCut
MonitorElement * diMuonMass_tracker
bool selTrackerMuon(const reco::Muon &recoMu)
float computeMass(const math::XYZVector &vec1, const math::XYZVector &vec2)
MonitorElement * trkSigNoCut
std::vector< vec1 > vec2
Definition: HCALResponse.h:16
MonitorElement * glbSigNoCut
void BPhysicsOniaDQM::bookHistograms ( DQMStore::IBooker iBooker,
edm::Run const &  ,
edm::EventSetup const &   
)
overridevirtual

Implements DQMEDAnalyzer.

Definition at line 60 of file BPhysicsOniaDQM.cc.

References DQMStore::IBooker::book1D(), and DQMStore::IBooker::setCurrentFolder().

62  {
63  iBooker.setCurrentFolder("Physics/BPhysics"); // Use folder with name of PAG
64 
65  global_background = iBooker.book1D(
66  "global_background", "Same-sign global-global dimuon mass", 750, 0, 15);
68  iBooker.book1D("diMuonMass_global",
69  "Opposite-sign global-global dimuon mass", 750, 0, 15);
70  tracker_background = iBooker.book1D(
71  "tracker_background",
72  "Same-sign tracker-tracker (arbitrated) dimuon mass", 750, 0, 15);
73  diMuonMass_tracker = iBooker.book1D(
74  "diMuonMass_tracker",
75  "Opposite-sign tracker-tracker (arbitrated) dimuon mass", 750, 0, 15);
77  iBooker.book1D("standalone_background",
78  "Same-sign standalone-standalone dimuon mass", 500, 0, 15);
79  diMuonMass_standalone = iBooker.book1D(
80  "diMuonMass_standalone",
81  "Opposite-sign standalone-standalone dimuon mass", 500, 0, 15);
82 
83  glbSigCut = iBooker.book1D("glbSigCut", "Opposite-sign glb-glb dimuon mass",
84  650, 0, 130);
85  glbSigNoCut = iBooker.book1D(
86  "glbSigNoCut", "Opposite-sign glb-glb dimuon mass (no cut)", 650, 0, 130);
87  glbBkgNoCut = iBooker.book1D(
88  "glbBkgNoCut", "Same-sign glb-glb dimuon mass (no cut)", 650, 0, 130);
89  staSigCut = iBooker.book1D("staSigCut", "Opposite-sign sta-sta dimuon mass",
90  430, 0, 129);
91  staSigNoCut = iBooker.book1D(
92  "staSigNoCut", "Opposite-sign sta-sta dimuon mass (no cut)", 430, 0, 129);
93  staBkgNoCut = iBooker.book1D(
94  "staBkgNoCut", "Same-sign sta-sta dimuon mass (no cut)", 430, 0, 129);
95  trkSigCut = iBooker.book1D("trkSigCut", "Opposite-sign trk-trk dimuon mass",
96  650, 0, 130);
97  trkSigNoCut = iBooker.book1D(
98  "trkSigNoCut", "Opposite-sign trk-trk dimuon mass (no cut)", 650, 0, 130);
99  trkBkgNoCut = iBooker.book1D(
100  "trkBkgNoCutt", "Same-sign trk-trk dimuon mass (no cut)", 650, 0, 130);
101 }
MonitorElement * global_background
MonitorElement * tracker_background
MonitorElement * diMuonMass_global
MonitorElement * glbSigCut
MonitorElement * diMuonMass_standalone
MonitorElement * trkSigCut
MonitorElement * standalone_background
MonitorElement * staBkgNoCut
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:118
MonitorElement * staSigNoCut
MonitorElement * staSigCut
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:274
MonitorElement * trkBkgNoCut
MonitorElement * glbBkgNoCut
MonitorElement * diMuonMass_tracker
MonitorElement * trkSigNoCut
MonitorElement * glbSigNoCut
float BPhysicsOniaDQM::computeMass ( const math::XYZVector vec1,
const math::XYZVector vec2 
)
private

Definition at line 223 of file BPhysicsOniaDQM.cc.

References mathSSE::sqrt().

224  {
225  // mass of muon
226  float massMu = 0.10566;
227  float eMu1 = -999;
228  if (massMu * massMu + vec1.Mag2() > 0)
229  eMu1 = sqrt(massMu * massMu + vec1.Mag2());
230  float eMu2 = -999;
231  if (massMu * massMu + vec2.Mag2() > 0)
232  eMu2 = sqrt(massMu * massMu + vec2.Mag2());
233 
234  float pJPsi = -999;
235  if ((vec1 + vec2).Mag2() > 0) pJPsi = sqrt((vec1 + vec2).Mag2());
236  float eJPsi = eMu1 + eMu2;
237 
238  float massJPsi = -999;
239  if ((eJPsi * eJPsi - pJPsi * pJPsi) > 0)
240  massJPsi = sqrt(eJPsi * eJPsi - pJPsi * pJPsi);
241 
242  return massJPsi;
243 }
std::vector< double > vec1
Definition: HCALResponse.h:15
T sqrt(T t)
Definition: SSEVec.h:18
std::vector< vec1 > vec2
Definition: HCALResponse.h:16
bool BPhysicsOniaDQM::isMuonInAccept ( const reco::Muon recoMu)
private

Definition at line 245 of file BPhysicsOniaDQM.cc.

References reco::LeafCandidate::eta(), reco::LeafCandidate::p(), and reco::LeafCandidate::pt().

245  {
246  return (fabs(recoMu.eta()) < 2.4 &&
247  ((fabs(recoMu.eta()) < 1.3 && recoMu.pt() > 3.3) ||
248  (fabs(recoMu.eta()) > 1.3 && fabs(recoMu.eta()) < 2.2 &&
249  recoMu.p() > 2.9) ||
250  (fabs(recoMu.eta()) > 2.2 && recoMu.pt() > 0.8)));
251 }
double eta() const final
momentum pseudorapidity
double pt() const final
transverse momentum
double p() const final
magnitude of momentum vector
bool BPhysicsOniaDQM::selGlobalMuon ( const reco::Muon recoMu)
private

Definition at line 253 of file BPhysicsOniaDQM.cc.

References reco::Muon::globalTrack(), reco::Muon::innerTrack(), reco::HitPattern::numberOfValidMuonHits(), AlCaHLTBitMon_ParallelJobs::p, reco::HitPattern::pixelLayersWithMeasurement(), and lumiQueryAPI::q.

253  {
254  TrackRef iTrack = recoMu.innerTrack();
255  const reco::HitPattern &p = iTrack->hitPattern();
256 
257  TrackRef gTrack = recoMu.globalTrack();
258  const reco::HitPattern &q = gTrack->hitPattern();
259 
260  return (isMuonInAccept(recoMu) && iTrack->found() > 11 &&
261  gTrack->chi2() / gTrack->ndof() < 20.0 &&
262  q.numberOfValidMuonHits() > 0 &&
263  iTrack->chi2() / iTrack->ndof() < 4.0 &&
264  // recoMu.muonID("TrackerMuonArbitrated") &&
265  // recoMu.muonID("TMLastStationAngTight") &&
266  p.pixelLayersWithMeasurement() > 1 &&
267  fabs(iTrack->dxy(RefVtx)) < 3.0 && fabs(iTrack->dz(RefVtx)) < 15.0);
268 }
virtual TrackRef innerTrack() const
Definition: Muon.h:48
int pixelLayersWithMeasurement() const
Definition: HitPattern.cc:501
bool isMuonInAccept(const reco::Muon &recoMu)
math::XYZPoint RefVtx
int numberOfValidMuonHits() const
Definition: HitPattern.h:834
virtual TrackRef globalTrack() const
reference to Track reconstructed in both tracked and muon detector
Definition: Muon.h:54
bool BPhysicsOniaDQM::selTrackerMuon ( const reco::Muon recoMu)
private

Definition at line 270 of file BPhysicsOniaDQM.cc.

References reco::Muon::innerTrack(), AlCaHLTBitMon_ParallelJobs::p, and reco::HitPattern::pixelLayersWithMeasurement().

270  {
271  TrackRef iTrack = recoMu.innerTrack();
272  const reco::HitPattern &p = iTrack->hitPattern();
273 
274  return (isMuonInAccept(recoMu) && iTrack->found() > 11 &&
275  iTrack->chi2() / iTrack->ndof() < 4.0 &&
276  // recoMu.muonID("TrackerMuonArbitrated") &&
277  // recoMu.muonID("TMLastStationAngTight") &&
278  p.pixelLayersWithMeasurement() > 1 &&
279  fabs(iTrack->dxy(RefVtx)) < 3.0 && fabs(iTrack->dz(RefVtx)) < 15.0);
280 }
virtual TrackRef innerTrack() const
Definition: Muon.h:48
int pixelLayersWithMeasurement() const
Definition: HitPattern.cc:501
bool isMuonInAccept(const reco::Muon &recoMu)
math::XYZPoint RefVtx

Member Data Documentation

MonitorElement* BPhysicsOniaDQM::diMuonMass_global
private

Definition at line 56 of file BPhysicsOniaDQM.h.

MonitorElement* BPhysicsOniaDQM::diMuonMass_standalone
private

Definition at line 58 of file BPhysicsOniaDQM.h.

MonitorElement* BPhysicsOniaDQM::diMuonMass_tracker
private

Definition at line 57 of file BPhysicsOniaDQM.h.

MonitorElement* BPhysicsOniaDQM::glbBkgNoCut
private

Definition at line 65 of file BPhysicsOniaDQM.h.

MonitorElement* BPhysicsOniaDQM::glbSigCut
private

Definition at line 63 of file BPhysicsOniaDQM.h.

MonitorElement* BPhysicsOniaDQM::glbSigNoCut
private

Definition at line 64 of file BPhysicsOniaDQM.h.

MonitorElement* BPhysicsOniaDQM::global_background
private

Definition at line 59 of file BPhysicsOniaDQM.h.

edm::EDGetTokenT<LumiSummary> BPhysicsOniaDQM::lumiSummaryToken_
private

Definition at line 50 of file BPhysicsOniaDQM.h.

std::string BPhysicsOniaDQM::metname
private

Definition at line 53 of file BPhysicsOniaDQM.h.

math::XYZPoint BPhysicsOniaDQM::RefVtx
private

Definition at line 73 of file BPhysicsOniaDQM.h.

MonitorElement* BPhysicsOniaDQM::staBkgNoCut
private

Definition at line 68 of file BPhysicsOniaDQM.h.

MonitorElement* BPhysicsOniaDQM::standalone_background
private

Definition at line 61 of file BPhysicsOniaDQM.h.

MonitorElement* BPhysicsOniaDQM::staSigCut
private

Definition at line 66 of file BPhysicsOniaDQM.h.

MonitorElement* BPhysicsOniaDQM::staSigNoCut
private

Definition at line 67 of file BPhysicsOniaDQM.h.

edm::EDGetTokenT<reco::MuonCollection> BPhysicsOniaDQM::theMuonCollectionLabel_
private

Definition at line 49 of file BPhysicsOniaDQM.h.

MonitorElement* BPhysicsOniaDQM::tracker_background
private

Definition at line 60 of file BPhysicsOniaDQM.h.

MonitorElement* BPhysicsOniaDQM::trkBkgNoCut
private

Definition at line 71 of file BPhysicsOniaDQM.h.

MonitorElement* BPhysicsOniaDQM::trkSigCut
private

Definition at line 69 of file BPhysicsOniaDQM.h.

MonitorElement* BPhysicsOniaDQM::trkSigNoCut
private

Definition at line 70 of file BPhysicsOniaDQM.h.

edm::EDGetTokenT<reco::VertexCollection> BPhysicsOniaDQM::vertex_
private

Definition at line 47 of file BPhysicsOniaDQM.h.