|
|
#include <BPhysicsOniaDQM.h>
DQM offline for quarkonia
- Author
- S. Bolognesi, Eric - CERN
Definition at line 25 of file BPhysicsOniaDQM.h.
◆ BPhysicsOniaDQM()
◆ ~BPhysicsOniaDQM()
BPhysicsOniaDQM::~BPhysicsOniaDQM |
( |
| ) |
|
|
override |
◆ analyze()
Get the analysis.
Reimplemented from DQMEDAnalyzer.
Definition at line 81 of file BPhysicsOniaDQM.cc.
90 VertexCollection::const_iterator privtx;
92 if (privtxs->begin() != privtxs->end()) {
93 privtx = privtxs->begin();
94 RefVtx = privtx->position();
99 if (
muons.isValid()) {
100 for (MuonCollection::const_iterator recoMu1 =
muons->begin(); recoMu1 !=
muons->end(); ++recoMu1) {
102 if (recoMu1->isGlobalMuon() || recoMu1->isTrackerMuon() || recoMu1->isStandAloneMuon()) {
103 for (MuonCollection::const_iterator recoMu2 = recoMu1 + 1; recoMu2 !=
muons->end(); ++recoMu2) {
106 if (recoMu1->isGlobalMuon() && recoMu2->isGlobalMuon()) {
112 if (((*recoMu1).charge() * (*recoMu2).charge()) < 0) {
135 if (recoMu1->isStandAloneMuon() && recoMu2->isStandAloneMuon() && fabs(recoMu1->outerTrack()->d0()) < 5 &&
136 fabs(recoMu1->outerTrack()->dz()) < 30 && fabs(recoMu2->outerTrack()->d0()) < 5 &&
137 fabs(recoMu2->outerTrack()->dz()) < 30) {
143 if (((*recoMu1).charge() * (*recoMu2).charge()) < 0) {
162 if (recoMu1->isTrackerMuon() && recoMu2->isTrackerMuon() &&
170 if (((*recoMu1).charge() * (*recoMu2).charge()) < 0) {
References iEvent, muon::isGoodMuon(), LogTrace, metname, PDWG_BPHSkim_cff::muons, and muon::TrackerMuonArbitrated.
◆ bookHistograms()
Implements DQMEDAnalyzer.
Definition at line 56 of file BPhysicsOniaDQM.cc.
62 iBooker.
book1D(
"tracker_background",
"Same-sign tracker-tracker (arbitrated) dimuon mass", 750, 0, 15);
64 iBooker.
book1D(
"diMuonMass_tracker",
"Opposite-sign tracker-tracker (arbitrated) dimuon mass", 750, 0, 15);
66 iBooker.
book1D(
"standalone_background",
"Same-sign standalone-standalone dimuon mass", 500, 0, 15);
68 iBooker.
book1D(
"diMuonMass_standalone",
"Opposite-sign standalone-standalone dimuon mass", 500, 0, 15);
70 glbSigCut = iBooker.
book1D(
"glbSigCut",
"Opposite-sign glb-glb dimuon mass", 650, 0, 130);
71 glbSigNoCut = iBooker.
book1D(
"glbSigNoCut",
"Opposite-sign glb-glb dimuon mass (no cut)", 650, 0, 130);
72 glbBkgNoCut = iBooker.
book1D(
"glbBkgNoCut",
"Same-sign glb-glb dimuon mass (no cut)", 650, 0, 130);
73 staSigCut = iBooker.
book1D(
"staSigCut",
"Opposite-sign sta-sta dimuon mass", 430, 0, 129);
74 staSigNoCut = iBooker.
book1D(
"staSigNoCut",
"Opposite-sign sta-sta dimuon mass (no cut)", 430, 0, 129);
75 staBkgNoCut = iBooker.
book1D(
"staBkgNoCut",
"Same-sign sta-sta dimuon mass (no cut)", 430, 0, 129);
76 trkSigCut = iBooker.
book1D(
"trkSigCut",
"Opposite-sign trk-trk dimuon mass", 650, 0, 130);
77 trkSigNoCut = iBooker.
book1D(
"trkSigNoCut",
"Opposite-sign trk-trk dimuon mass (no cut)", 650, 0, 130);
78 trkBkgNoCut = iBooker.
book1D(
"trkBkgNoCutt",
"Same-sign trk-trk dimuon mass (no cut)", 650, 0, 130);
References dqm::implementation::IBooker::book1D(), and dqm::implementation::NavigatorBase::setCurrentFolder().
◆ computeMass()
Definition at line 198 of file BPhysicsOniaDQM.cc.
200 float massMu = 0.10566;
202 if (massMu * massMu +
vec1.Mag2() > 0)
203 eMu1 =
sqrt(massMu * massMu +
vec1.Mag2());
205 if (massMu * massMu +
vec2.Mag2() > 0)
206 eMu2 =
sqrt(massMu * massMu +
vec2.Mag2());
211 float eJPsi = eMu1 + eMu2;
213 float massJPsi = -999;
214 if ((eJPsi * eJPsi - pJPsi * pJPsi) > 0)
215 massJPsi =
sqrt(eJPsi * eJPsi - pJPsi * pJPsi);
References mathSSE::sqrt().
◆ isMuonInAccept()
bool BPhysicsOniaDQM::isMuonInAccept |
( |
const reco::Muon & |
recoMu | ) |
|
|
private |
◆ selGlobalMuon()
bool BPhysicsOniaDQM::selGlobalMuon |
( |
const reco::Muon & |
recoMu | ) |
|
|
private |
◆ selTrackerMuon()
bool BPhysicsOniaDQM::selTrackerMuon |
( |
const reco::Muon & |
recoMu | ) |
|
|
private |
◆ diMuonMass_global
◆ diMuonMass_standalone
◆ diMuonMass_tracker
◆ glbBkgNoCut
◆ glbSigCut
◆ glbSigNoCut
◆ global_background
◆ lumiSummaryToken_
◆ metname
std::string BPhysicsOniaDQM::metname |
|
private |
◆ RefVtx
◆ staBkgNoCut
◆ standalone_background
◆ staSigCut
◆ staSigNoCut
◆ theMuonCollectionLabel_
◆ tracker_background
◆ trkBkgNoCut
◆ trkSigCut
◆ trkSigNoCut
◆ vertex_
std::vector< double > vec1
edm::EDGetTokenT< reco::MuonCollection > theMuonCollectionLabel_
virtual void setCurrentFolder(std::string const &fullpath)
double pt() const final
transverse momentum
MonitorElement * trkBkgNoCut
bool isGoodMuon(const reco::Muon &muon, SelectionType type, reco::Muon::ArbitrationType arbitrationType=reco::Muon::SegmentAndTrackArbitration)
main GoodMuon wrapper call
MonitorElement * tracker_background
bool selGlobalMuon(const reco::Muon &recoMu)
MonitorElement * staBkgNoCut
edm::EDGetTokenT< reco::VertexCollection > vertex_
MonitorElement * diMuonMass_standalone
bool isMuonInAccept(const reco::Muon &recoMu)
MonitorElement * glbSigCut
MonitorElement * trkSigCut
double eta() const final
momentum pseudorapidity
MonitorElement * staSigCut
virtual TrackRef globalTrack() const
reference to Track reconstructed in both tracked and muon detector
XYZVectorD XYZVector
spatial vector with cartesian internal representation
MonitorElement * diMuonMass_global
MonitorElement * glbBkgNoCut
MonitorElement * staSigNoCut
MonitorElement * global_background
virtual TrackRef innerTrack() const
edm::EDGetTokenT< LumiSummary > lumiSummaryToken_
double p() const final
magnitude of momentum vector
MonitorElement * glbSigNoCut
MonitorElement * diMuonMass_tracker
MonitorElement * standalone_background
bool selTrackerMuon(const reco::Muon &recoMu)
MonitorElement * trkSigNoCut
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
float computeMass(const math::XYZVector &vec1, const math::XYZVector &vec2)