Main Page
Namespaces
Classes
Package Documentation
DQMOffline
RecoB
src
MatchJet.cc
Go to the documentation of this file.
1
#include <functional>
2
#include <algorithm>
3
#include <vector>
4
#include <memory>
5
#include <string>
6
7
#include <Math/GenVector/Cartesian3D.h>
8
#include <Math/GenVector/VectorUtil.h>
9
10
#include "
DQMOffline/RecoB/interface/MatchJet.h
"
11
12
#include "
Matching.h
"
13
14
using namespace
btag
;
15
16
namespace
{
17
template
<
typename
T>
18
static
inline
T
sqr
(
const
T
&
val
) {
return
val *
val
; }
19
20
template
<
typename
T1,
typename
T2,
typename
R>
21
struct
JetDistance
:
public
std::binary_function<T1, T2, R> {
22
JetDistance
(
double
sigmaDeltaR
,
double
sigmaDeltaE
) :
23
sigmaDeltaR2(
sqr
(sigmaDeltaR)),
24
sigmaDeltaE2(
sqr
(sigmaDeltaE)) {}
25
26
double
operator () (
const
T1 &v1,
const
T2 &v2)
const
27
{
28
using namespace
ROOT::Math
;
29
// return VectorUtil::DeltaR2(v1, v2) / sigmaDeltaR2 +
30
// sqr(2. * (v1.R() - v2.R()) /
31
// (v1.R() + v2.R())) / sigmaDeltaE2;
32
double
x
= VectorUtil::DeltaR2(v1, v2) / sigmaDeltaR2 +
33
sqr
(2. * (v1.R() - v2.R()) /
34
(v1.R() + v2.R())) / sigmaDeltaE2;
35
// std::cout << "xxx " << VectorUtil::DeltaPhi(v1, v2) << " " << (v1.Eta() - v2.Eta()) << " " << (v1.R() - v2.R()) / (v1.R() + v2.R()) << " " << x << std::endl;
36
return
x;
37
}
38
39
double
sigmaDeltaR2, sigmaDeltaE2;
40
};
41
}
42
43
MatchJet::MatchJet
(
const
edm::ParameterSet
& pSet) :
44
maxChi2
(pSet.getParameter<double>(
"maxChi2"
)),
45
sigmaDeltaR
(pSet.getParameter<double>(
"sigmaDeltaR"
)),
46
sigmaDeltaE
(pSet.getParameter<double>(
"sigmaDeltaE"
)),
47
threshold
(1.0)
48
{
49
}
50
51
void
MatchJet::matchCollections
(
52
const
edm::RefToBaseVector<reco::Jet>
& refJets_,
53
const
edm::RefToBaseVector<reco::Jet>
& recJets_,
54
const
reco::JetCorrector
*
corrector
55
)
56
{
57
refJetCorrector
.
setCorrector
(corrector);
58
recJetCorrector
.
setCorrector
(corrector);
59
60
typedef
ROOT::Math::Cartesian3D<double>
Vector
;
61
62
std::vector<Vector> corrRefJets;
63
refJets
.
clear
();
64
for
(
edm::RefToBaseVector<reco::Jet>::const_iterator
iter =
refJets
.
begin
();
65
iter != refJets_.
end
(); ++iter) {
66
edm::RefToBase<reco::Jet>
jetRef = *iter;
67
reco::Jet
jet
=
refJetCorrector
(*jetRef);
68
if
(jet.
energy
() <
threshold
)
69
continue
;
70
71
corrRefJets.push_back(
Vector
(jet.
px
(), jet.
py
(), jet.
pz
()));
72
refJets
.
push_back
(jetRef);
73
}
74
75
std::vector<Vector> corrRecJets;
76
recJets
.
clear
();
77
for
(
edm::RefToBaseVector<reco::Jet>::const_iterator
iter =
recJets
.
begin
();
78
iter != recJets_.
end
(); ++iter) {
79
edm::RefToBase<reco::Jet>
jetRec = *iter;
80
reco::Jet
jet
=
recJetCorrector
(*jetRec);
81
if
(jet.
energy
() <
threshold
)
82
continue
;
83
84
corrRecJets.push_back(
Vector
(jet.
px
(), jet.
py
(), jet.
pz
()));
85
recJets
.
push_back
(jetRec);
86
}
87
88
this->
refJets
=
refJets
;
89
refToRec
.clear();
90
refToRec
.resize(
refJets
.
size
(), -1);
91
92
this->
recJets
=
recJets
;
93
recToRef
.clear();
94
recToRef
.resize(
recJets
.
size
(), -1);
95
96
Matching<double>
matching
(corrRefJets, corrRecJets,
97
JetDistance<Vector, Vector, double>
(
98
sigmaDeltaR
,
sigmaDeltaE
));
99
typedef
Matching<double>::Match
Match
;
100
101
const
std::vector<Match>&
matches
=
102
matching.
match
(std::less<double>(),
103
[&](
auto
&
c
){
return
c
< this->
maxChi2
;});
104
for
(std::vector<Match>::const_iterator iter = matches.begin();
105
iter != matches.end(); ++iter) {
106
refToRec
[iter->index1] = iter->index2;
107
recToRef
[iter->index2] = iter->index1;
108
}
109
}
110
111
edm::RefToBase<reco::Jet>
112
MatchJet::operator()
(
const
edm::RefToBase<reco::Jet>
& recJet)
const
113
{
114
edm::RefToBase<reco::Jet>
result
;
115
if
(recJet.
id
() !=
recJets
.
id
())
116
return
result;
117
118
for
(
unsigned
int
i
= 0;
i
!=
recJets
.
size
(); ++
i
) {
119
if
(
recJets
[
i
] == recJet) {
120
int
match
=
recToRef
[
i
];
121
if
(match >= 0)
122
result =
refJets
[
match
];
123
break
;
124
}
125
}
126
127
return
result
;
128
}
metsig::jet
Definition:
SignAlgoResolutions.h:40
mps_fire.i
i
Definition:
mps_fire.py:277
mps_fire.result
result
Definition:
mps_fire.py:234
Vector
ROOT::Math::Plane3D::Vector Vector
Definition:
EcalHitMaker.cc:29
reco::Jet
Base class for all types of Jets.
Definition:
Jet.h:20
PFTauMatching_cfi.matching
matching
Definition:
PFTauMatching_cfi.py:19
reco::LeafCandidate::px
double px() const final
x coordinate of momentum vector
Definition:
LeafCandidate.h:125
EnergyCorrector.c
c
Definition:
EnergyCorrector.py:44
MatchJet::refJets
edm::RefToBaseVector< reco::Jet > refJets
Definition:
MatchJet.h:39
edm::RefToBaseVector::end
const_iterator end() const
Definition:
RefToBaseVector.h:230
edm::reftobase::BaseVectorHolder::const_iterator
Definition:
BaseVectorHolder.h:53
MatchJet::recToRef
std::vector< int > recToRef
Definition:
MatchJet.h:38
patRefSel_triggerMatching_cfi.matches
matches
Definition:
patRefSel_triggerMatching_cfi.py:17
MatchJet::recJets
edm::RefToBaseVector< reco::Jet > recJets
Definition:
MatchJet.h:40
JetDistance
Definition:
Qjets.h:16
edm::RefToBase::id
ProductID id() const
Definition:
RefToBase.h:242
btag
Definition:
Matching.h:11
edm::RefToBase< reco::Jet >
MatchJet::sigmaDeltaE
double sigmaDeltaE
Definition:
MatchJet.h:47
MatchJet::matchCollections
void matchCollections(const edm::RefToBaseVector< reco::Jet > &refJets, const edm::RefToBaseVector< reco::Jet > &recJets, const reco::JetCorrector *corrector)
match the collections
Definition:
MatchJet.cc:51
edm::RefToBaseVector::clear
void clear()
Definition:
RefToBaseVector.h:197
vertices_cff.x
x
Definition:
vertices_cff.py:29
ROOT::Math
Definition:
Transform3DPJ.h:42
Matching.h
MatchJet::sigmaDeltaR
double sigmaDeltaR
Definition:
MatchJet.h:46
electronIdCutBased_cfi.threshold
threshold
Definition:
electronIdCutBased_cfi.py:6
MatchJet::refToRec
std::vector< int > refToRec
Definition:
MatchJet.h:38
MatchJet::maxChi2
double maxChi2
Definition:
MatchJet.h:45
reco::LeafCandidate::pz
double pz() const final
z coordinate of momentum vector
Definition:
LeafCandidate.h:129
reco::LeafCandidate::energy
double energy() const final
energy
Definition:
LeafCandidate.h:110
edm::RefToBaseVector< reco::Jet >
mitigatedMETSequence_cff.corrector
corrector
Definition:
mitigatedMETSequence_cff.py:43
edm::RefToBaseVector::size
size_type size() const
Definition:
RefToBaseVector.h:189
MatchJet::operator()
edm::RefToBase< reco::Jet > operator()(const edm::RefToBase< reco::Jet > &recJet) const
Returns the matched "reference" jet.
Definition:
MatchJet.cc:112
reco::JetCorrector
Definition:
JetCorrector.h:35
MatchJet::refJetCorrector
CorrectJet refJetCorrector
Definition:
MatchJet.h:42
MatchJet::recJetCorrector
CorrectJet recJetCorrector
Definition:
MatchJet.h:43
btag::Matching
Definition:
Matching.h:14
CorrectJet::setCorrector
void setCorrector(const reco::JetCorrector *corrector)
Returns the corrected jet.
Definition:
CorrectJet.h:22
reco::LeafCandidate::py
double py() const final
y coordinate of momentum vector
Definition:
LeafCandidate.h:127
edm::RefToBaseVector::begin
const_iterator begin() const
Definition:
RefToBaseVector.h:222
MultipleCompare.Match
def Match(required, got)
Definition:
MultipleCompare.py:74
btag::Matching::match
std::vector< Match > match(SortComparator sortComparator=SortComparator(), CutCriterion cutCriterion=CutCriterion())
Definition:
Matching.h:72
funct::sqr
Square< F >::type sqr(const F &f)
Definition:
Square.h:13
edm::RefToBaseVector::push_back
void push_back(const RefToBase< T > &)
Definition:
RefToBaseVector.h:264
edm::ParameterSet
Definition:
ParameterSet.h:36
match
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
Definition:
Utils.h:10
MatchJet.h
btag::Matching::Match
Definition:
Matching.h:35
MatchJet::threshold
double threshold
Definition:
MatchJet.h:48
MatchJet::MatchJet
MatchJet()
Definition:
MatchJet.h:22
bTagAnalysis_cfi.sigmaDeltaE
sigmaDeltaE
Definition:
bTagAnalysis_cfi.py:16
T
long double T
Definition:
Basic3DVectorLD.h:66
heppy_batch.val
val
Definition:
heppy_batch.py:350
edm::RefToBaseVector::id
ProductID id() const
Definition:
RefToBaseVector.h:206
btvTracks_cfi.maxChi2
maxChi2
Definition:
btvTracks_cfi.py:6
bTagAnalysis_cfi.sigmaDeltaR
sigmaDeltaR
Definition:
bTagAnalysis_cfi.py:15
Generated for CMSSW Reference Manual by
1.8.11