Main Page
Namespaces
Classes
Package Documentation
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Groups
Pages
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
inline
double
sqr
(
double
val
) {
return
val *
val
; }
18
}
// namespace
19
20
MatchJet::MatchJet
(
const
edm::ParameterSet
& pSet)
21
:
maxChi2
(pSet.getParameter<double>(
"maxChi2"
)),
22
sigmaDeltaR2(
sqr
(pSet.getParameter<double>(
"sigmaDeltaR"
))),
23
sigmaDeltaE2(
sqr
(pSet.getParameter<double>(
"sigmaDeltaE"
))),
24
threshold
(1.0) {}
25
26
void
MatchJet::matchCollections
(
const
edm::RefToBaseVector<reco::Jet>
& refJets_,
27
const
edm::RefToBaseVector<reco::Jet>
& recJets_,
28
const
reco::JetCorrector
*
corrector
) {
29
refJetCorrector
.
setCorrector
(corrector);
30
recJetCorrector
.
setCorrector
(corrector);
31
32
typedef
ROOT::Math::Cartesian3D<double>
Vector
;
33
34
std::vector<Vector> corrRefJets;
35
refJets
.
clear
();
36
for
(
edm::RefToBaseVector<reco::Jet>::const_iterator
iter =
refJets
.
begin
(); iter != refJets_.
end
(); ++iter) {
37
edm::RefToBase<reco::Jet>
jetRef = *iter;
38
reco::Jet
jet
=
refJetCorrector
(*jetRef);
39
if
(jet.
energy
() <
threshold
)
40
continue
;
41
42
corrRefJets.push_back(
Vector
(jet.
px
(), jet.
py
(), jet.
pz
()));
43
refJets
.
push_back
(jetRef);
44
}
45
46
std::vector<Vector> corrRecJets;
47
recJets
.
clear
();
48
for
(
edm::RefToBaseVector<reco::Jet>::const_iterator
iter =
recJets
.
begin
(); iter != recJets_.
end
(); ++iter) {
49
edm::RefToBase<reco::Jet>
jetRec = *iter;
50
reco::Jet
jet
=
recJetCorrector
(*jetRec);
51
if
(jet.
energy
() <
threshold
)
52
continue
;
53
54
corrRecJets.push_back(
Vector
(jet.
px
(), jet.
py
(), jet.
pz
()));
55
recJets
.
push_back
(jetRec);
56
}
57
58
refToRec
.clear();
59
refToRec
.resize(
refJets
.
size
(), -1);
60
61
recToRef
.clear();
62
recToRef
.resize(
recJets
.
size
(), -1);
63
64
Matching<double>
matching(corrRefJets, corrRecJets, [
this
](
auto
& v1,
auto
& v2) {
65
double
x
= ROOT::Math::VectorUtil::DeltaR2(v1, v2) / this->
sigmaDeltaR2
+
66
sqr
(2. * (v1.R() - v2.R()) / (v1.R() + v2.R())) / this->
sigmaDeltaE2
;
67
// Possible debug output
68
// std::cout << "xxx " << ROOT::Math::VectorUtil::DeltaPhi(v1, v2) << " " << (v1.Eta() - v2.Eta())
69
// << " " << (v1.R() - v2.R()) / (v1.R() + v2.R()) << " " << x << std::endl;
70
return
x
;
71
});
72
73
typedef
Matching<double>::Match
Match
;
74
75
const
std::vector<Match>& matches = matching.match(std::less<double>(), [&](
auto
&
c
) {
return
c
< this->
maxChi2
; });
76
for
(std::vector<Match>::const_iterator iter = matches.begin(); iter != matches.end(); ++iter) {
77
refToRec
[iter->index1] = iter->index2;
78
recToRef
[iter->index2] = iter->index1;
79
}
80
}
81
82
edm::RefToBase<reco::Jet>
MatchJet::operator()
(
const
edm::RefToBase<reco::Jet>
& recJet)
const
{
83
edm::RefToBase<reco::Jet>
result
;
84
if
(recJet.
id
() !=
recJets
.
id
())
85
return
result;
86
87
for
(
unsigned
int
i
= 0;
i
!=
recJets
.
size
(); ++
i
) {
88
if
(
recJets
[
i
] == recJet) {
89
int
match
=
recToRef
[
i
];
90
if
(match >= 0)
91
result =
refJets
[
match
];
92
break
;
93
}
94
}
95
96
return
result
;
97
}
metsig::jet
Definition:
SignAlgoResolutions.h:47
MatchJet::sigmaDeltaE2
double sigmaDeltaE2
Definition:
MatchJet.h:44
c
const edm::EventSetup & c
Definition:
SiStripLAProfileBooker.cc:66
reco::LeafCandidate::pz
double pz() const final
z coordinate of momentum vector
Definition:
LeafCandidate.h:144
mps_fire.i
i
Definition:
mps_fire.py:428
Vector
ROOT::Math::Plane3D::Vector Vector
Definition:
EcalHitMaker.cc:29
reco::Jet
Base class for all types of Jets.
Definition:
Jet.h:20
HLT_FULL_cff.maxChi2
tuple maxChi2
Definition:
HLT_FULL_cff.py:10119
MatchJet::refJets
edm::RefToBaseVector< reco::Jet > refJets
Definition:
MatchJet.h:36
edm::RefToBaseVector::end
const_iterator end() const
Definition:
RefToBaseVector.h:186
edm::reftobase::BaseVectorHolder::const_iterator
Definition:
BaseVectorHolder.h:54
hgcalPerformanceValidation.val
tuple val
Definition:
hgcalPerformanceValidation.py:364
MatchJet::recToRef
std::vector< int > recToRef
Definition:
MatchJet.h:35
MatchJet::recJets
edm::RefToBaseVector< reco::Jet > recJets
Definition:
MatchJet.h:37
sqr
int sqr(const T &t)
Definition:
pfalgo_common_ref.h:9
edm::RefToBase::id
ProductID id() const
Definition:
RefToBase.h:214
edm::RefToBase< reco::Jet >
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:26
mps_fire.result
tuple result
Definition:
mps_fire.py:311
edm::RefToBaseVector::clear
void clear()
Definition:
RefToBaseVector.h:165
Matching.h
MultipleCompare.Match
def Match
Definition:
MultipleCompare.py:75
reco::LeafCandidate::px
double px() const final
x coordinate of momentum vector
Definition:
LeafCandidate.h:140
MatchJet::refToRec
std::vector< int > refToRec
Definition:
MatchJet.h:35
MatchJet::maxChi2
double maxChi2
Definition:
MatchJet.h:42
edm::RefToBaseVector< reco::Jet >
dtDQMClient_cfg.threshold
tuple threshold
Definition:
dtDQMClient_cfg.py:15
MatchJet::sigmaDeltaR2
double sigmaDeltaR2
Definition:
MatchJet.h:43
edm::RefToBaseVector::size
size_type size() const
Definition:
RefToBaseVector.h:160
MatchJet::operator()
edm::RefToBase< reco::Jet > operator()(const edm::RefToBase< reco::Jet > &recJet) const
Returns the matched "reference" jet.
Definition:
MatchJet.cc:82
reco::LeafCandidate::py
double py() const final
y coordinate of momentum vector
Definition:
LeafCandidate.h:142
BTagSF.btag
tuple btag
Definition:
BTagSF.py:16
reco::JetCorrector
Definition:
JetCorrector.h:33
MatchJet::refJetCorrector
CorrectJet refJetCorrector
Definition:
MatchJet.h:39
MatchJet::recJetCorrector
CorrectJet recJetCorrector
Definition:
MatchJet.h:40
pfClustersFromHGC3DClusters_cfi.corrector
string corrector
Definition:
pfClustersFromHGC3DClusters_cfi.py:49
btag::Matching
Definition:
Matching.h:13
CorrectJet::setCorrector
void setCorrector(const reco::JetCorrector *corrector)
Returns the corrected jet.
Definition:
CorrectJet.h:21
edm::RefToBaseVector::begin
const_iterator begin() const
Definition:
RefToBaseVector.h:181
edm::RefToBaseVector::push_back
void push_back(const RefToBase< T > &)
Definition:
RefToBaseVector.h:217
edm::ParameterSet
Definition:
ParameterSet.h:47
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:28
MatchJet::threshold
double threshold
Definition:
MatchJet.h:45
MatchJet::MatchJet
MatchJet()
Definition:
MatchJet.h:21
DDAxes::x
edm::RefToBaseVector::id
ProductID id() const
Definition:
RefToBaseVector.h:171
reco::LeafCandidate::energy
double energy() const final
energy
Definition:
LeafCandidate.h:125
Generated for CMSSW Reference Manual by
1.8.5