RecoMuon
MuonIdentification
plugins
cuts
MuonDxyCut.cc
Go to the documentation of this file.
1
#include "
PhysicsTools/SelectorUtils/interface/CutApplicatorBase.h
"
2
#include "
PhysicsTools/SelectorUtils/interface/CutApplicatorWithEventContentBase.h
"
3
#include "
FWCore/MessageLogger/interface/MessageLogger.h
"
4
#include "
DataFormats/MuonReco/interface/Muon.h
"
5
#include "
DataFormats/MuonReco/interface/MuonSelectors.h
"
6
7
class
MuonDxyCut
:
public
CutApplicatorWithEventContentBase
{
8
public
:
9
MuonDxyCut
(
const
edm::ParameterSet
&
c
);
10
11
result_type
operator()
(
const
reco::MuonPtr
&)
const
final
;
12
CandidateType
candidateType
()
const
final {
return
MUON
; }
13
double
value
(
const
reco::CandidatePtr
&)
const
final
;
14
15
void
setConsumes
(
edm::ConsumesCollector
&)
final
;
16
void
getEventContent
(
const
edm::EventBase
&)
final
;
17
18
private
:
19
edm::Handle<reco::VertexCollection>
vtxs_
;
20
const
double
maxDxy_
;
21
enum
BestTrackType
{
INNERTRACK
,
MUONBESTTRACK
,
NONE
}
trackType_
;
22
};
23
DEFINE_EDM_PLUGIN
(
CutApplicatorFactory
,
MuonDxyCut
,
"MuonDxyCut"
);
24
25
// Define constructors and initialization routines
26
MuonDxyCut::MuonDxyCut
(
const
edm::ParameterSet
&
c
)
27
:
CutApplicatorWithEventContentBase
(
c
), maxDxy_(
c
.getParameter<double>(
"maxDxy"
)) {
28
const
std::string
trackTypeName =
c
.getParameter<
std::string
>(
"trackType"
);
29
trackType_
=
NONE
;
30
if
(trackTypeName ==
"muonBestTrack"
)
31
trackType_
=
MUONBESTTRACK
;
32
else
if
(trackTypeName ==
"innerTrack"
)
33
trackType_
=
INNERTRACK
;
34
else
{
35
edm::LogError
(
"MuonDxyCut"
) <<
"Wrong cut id name, "
<< trackTypeName
36
<<
"Choose among \"muonBestTrack\", \"innerTrack\""
;
37
trackType_
=
NONE
;
38
}
39
40
contentTags_
.emplace(
"vertices"
,
c
.getParameter<
edm::InputTag
>(
"vertexSrc"
));
41
contentTags_
.emplace(
"verticesMiniAOD"
,
c
.getParameter<
edm::InputTag
>(
"vertexSrcMiniAOD"
));
42
}
43
44
void
MuonDxyCut::setConsumes
(
edm::ConsumesCollector
& cc) {
45
contentTokens_
.emplace(
"vertices"
, cc.
consumes
<
reco::VertexCollection
>(
contentTags_
[
"vertices"
]));
46
contentTokens_
.emplace(
"verticesMiniAOD"
, cc.
consumes
<
reco::VertexCollection
>(
contentTags_
[
"verticesMiniAOD"
]));
47
}
48
49
void
MuonDxyCut::getEventContent
(
const
edm::EventBase
&
ev
) {
50
ev
.getByLabel(
contentTags_
[
"vertices"
],
vtxs_
);
51
if
(!
vtxs_
.
isValid
())
52
ev
.getByLabel(
contentTags_
[
"verticesMiniAOD"
],
vtxs_
);
53
}
54
55
// Functors for evaluation
56
CutApplicatorBase::result_type
MuonDxyCut::operator()
(
const
reco::MuonPtr
&
cand
)
const
{
57
const
auto
& vtxPos =
vtxs_
->at(0).position();
58
59
reco::TrackRef
trackRef;
60
if
(
trackType_
==
INNERTRACK
)
61
trackRef =
cand
->innerTrack();
62
else
if
(
trackType_
==
MUONBESTTRACK
)
63
trackRef =
cand
->muonBestTrack();
64
65
return
trackRef.
isNonnull
() and
std::abs
(trackRef->dxy(vtxPos)) <=
maxDxy_
;
66
}
67
68
double
MuonDxyCut::value
(
const
reco::CandidatePtr
&
cand
)
const
{
69
const
reco::MuonPtr
muon
(
cand
);
70
reco::TrackRef
trackRef;
71
if
(
trackType_
==
INNERTRACK
)
72
trackRef =
muon
->innerTrack();
73
else
if
(
trackType_
==
MUONBESTTRACK
)
74
trackRef =
muon
->muonBestTrack();
75
if
(trackRef.
isNull
())
76
return
-1;
77
78
const
auto
& vtxPos =
vtxs_
->at(0).position();
79
return
std::abs
(trackRef->dxy(vtxPos));
80
}
edm::ConsumesCollector::consumes
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
Definition:
ConsumesCollector.h:55
makeMEIFBenchmarkPlots.ev
ev
Definition:
makeMEIFBenchmarkPlots.py:55
CutApplicatorWithEventContentBase
Definition:
CutApplicatorWithEventContentBase.h:19
MuonDxyCut::value
double value(const reco::CandidatePtr &) const final
Definition:
MuonDxyCut.cc:68
MuonDxyCut::INNERTRACK
Definition:
MuonDxyCut.cc:21
CutApplicatorWithEventContentBase::contentTags_
std::unordered_map< std::string, edm::InputTag > contentTags_
Definition:
CutApplicatorWithEventContentBase.h:35
MessageLogger.h
runTheMatrix.const
const
Definition:
runTheMatrix.py:337
edm::Ref< TrackCollection >
edm::Handle< reco::VertexCollection >
edm::Ref::isNonnull
bool isNonnull() const
Checks for non-null.
Definition:
Ref.h:238
reco::VertexCollection
std::vector< Vertex > VertexCollection
collection of Vertex objects
Definition:
VertexFwd.h:9
muon
Definition:
MuonCocktails.h:17
HLT_2022v12_cff.muon
muon
Definition:
HLT_2022v12_cff.py:9252
edm::LogError
Log< level::Error, false > LogError
Definition:
MessageLogger.h:123
MuonDxyCut::MuonDxyCut
MuonDxyCut(const edm::ParameterSet &c)
Definition:
MuonDxyCut.cc:26
AlCaHLTBitMon_QueryRunRegistry.string
string string
Definition:
AlCaHLTBitMon_QueryRunRegistry.py:256
MuonDxyCut::trackType_
enum MuonDxyCut::BestTrackType trackType_
MuonDxyCut::getEventContent
void getEventContent(const edm::EventBase &) final
Definition:
MuonDxyCut.cc:49
MuonDxyCut::vtxs_
edm::Handle< reco::VertexCollection > vtxs_
Definition:
MuonDxyCut.cc:19
c
auto & c
Definition:
CAHitNtupletGeneratorKernelsImpl.h:56
edmplugin::PluginFactory
Definition:
PluginFactory.h:35
MuonDxyCut::MUONBESTTRACK
Definition:
MuonDxyCut.cc:21
candidate_functions::CandidateCut::result_type
bool result_type
Definition:
CandidateCut.h:11
funct::abs
Abs< T >::type abs(const T &t)
Definition:
Abs.h:22
CutApplicatorWithEventContentBase.h
edm::Ptr< reco::Muon >
MuonDxyCut::BestTrackType
BestTrackType
Definition:
MuonDxyCut.cc:21
Muon.h
MuonDxyCut::candidateType
CandidateType candidateType() const final
Definition:
MuonDxyCut.cc:12
edm::Ref::isNull
bool isNull() const
Checks for null.
Definition:
Ref.h:235
MuonDxyCut::NONE
Definition:
MuonDxyCut.cc:21
edm::EventBase
Definition:
EventBase.h:46
MuonDxyCut::operator()
result_type operator()(const reco::MuonPtr &) const final
Definition:
MuonDxyCut.cc:56
CutApplicatorWithEventContentBase::contentTokens_
std::unordered_map< std::string, edm::EDGetToken > contentTokens_
Definition:
CutApplicatorWithEventContentBase.h:40
MuonSelectors.h
MuonDxyCut::maxDxy_
const double maxDxy_
Definition:
MuonDxyCut.cc:20
edm::HandleBase::isValid
bool isValid() const
Definition:
HandleBase.h:70
CutApplicatorBase::MUON
Definition:
CutApplicatorBase.h:47
edm::InputTag
Definition:
InputTag.h:15
CutApplicatorBase::CandidateType
CandidateType
Definition:
CutApplicatorBase.h:47
edm::ParameterSet
Definition:
ParameterSet.h:47
DEFINE_EDM_PLUGIN
#define DEFINE_EDM_PLUGIN(factory, type, name)
Definition:
PluginFactory.h:123
cand
Definition:
decayParser.h:32
CutApplicatorBase.h
MuonDxyCut::setConsumes
void setConsumes(edm::ConsumesCollector &) final
Definition:
MuonDxyCut.cc:44
MuonDxyCut
Definition:
MuonDxyCut.cc:7
edm::ConsumesCollector
Definition:
ConsumesCollector.h:45
Generated for CMSSW Reference Manual by
1.8.14