Main Page
Namespaces
Classes
Package Documentation
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Pages
src
PhysicsTools
JetMCAlgos
plugins
CandOneToManyDeltaRMatcher.cc
Go to the documentation of this file.
1
/* \class CandOneToManyDeltaRMatcher
2
*
3
* Producer for simple match map:
4
* class to match two collections of candidate
5
* with one-to-Many matching
6
* All elements of class "matched" are matched to each element
7
* of class "source" orderd in DeltaR
8
*
9
*/
10
11
#include "
FWCore/Framework/interface/EDProducer.h
"
12
#include "
FWCore/ParameterSet/interface/ParameterSetfwd.h
"
13
14
#include "
DataFormats/Candidate/interface/Candidate.h
"
15
16
#include<vector>
17
#include<iostream>
18
19
class
CandOneToManyDeltaRMatcher
:
public
edm::EDProducer
{
20
public
:
21
CandOneToManyDeltaRMatcher
(
const
edm::ParameterSet
& );
22
~CandOneToManyDeltaRMatcher
();
23
private
:
24
void
produce
(
edm::Event
&,
const
edm::EventSetup
& )
override
;
25
26
edm::EDGetTokenT<reco::CandidateCollection>
sourceToken_
;
27
edm::EDGetTokenT<reco::CandidateCollection>
matchedToken_
;
28
bool
printdebug_
;
29
};
30
31
#include "
FWCore/Framework/interface/ESHandle.h
"
32
#include "
FWCore/Framework/interface/Event.h
"
33
#include "
FWCore/Framework/interface/EventSetup.h
"
34
#include "
FWCore/Utilities/interface/InputTag.h
"
35
#include "
FWCore/Utilities/interface/EDMException.h
"
36
#include "
FWCore/ParameterSet/interface/ParameterSet.h
"
37
#include "
FWCore/MessageLogger/interface/MessageLogger.h
"
38
39
#include "
DataFormats/Common/interface/Handle.h
"
40
#include "
DataFormats/Candidate/interface/LeafCandidate.h
"
41
#include "
DataFormats/Candidate/interface/CandMatchMap.h
"
42
#include "
DataFormats/Candidate/interface/CandMatchMapMany.h
"
43
#include "
DataFormats/Candidate/interface/CandidateFwd.h
"
44
45
46
#include <Math/VectorUtil.h>
47
#include <TMath.h>
48
49
using namespace
edm;
50
using namespace
std;
51
using namespace
reco
;
52
using namespace
ROOT::Math::VectorUtil;
53
54
namespace
reco
{
55
namespace
helper {
56
typedef
pair<size_t, double>
MatchPair
;
57
58
struct
SortBySecond
{
59
bool
operator()
(
const
MatchPair
&
p1
,
const
MatchPair
&
p2
)
const
{
60
return
p1.second < p2.second;
61
}
62
};
63
}
64
}
65
66
CandOneToManyDeltaRMatcher::CandOneToManyDeltaRMatcher
(
const
ParameterSet
& cfg ) :
67
sourceToken_( consumes<
CandidateCollection
>( cfg.getParameter<
InputTag
>(
"src"
) ) ),
68
matchedToken_( consumes<
CandidateCollection
>( cfg.getParameter<
InputTag
>(
"matched"
) ) ),
69
printdebug_( cfg.getUntrackedParameter<bool>(
"printDebug"
,
false
) ) {
70
produces<CandMatchMapMany>();
71
}
72
73
CandOneToManyDeltaRMatcher::~CandOneToManyDeltaRMatcher
() {
74
}
75
76
void
CandOneToManyDeltaRMatcher::produce
(
Event
& evt,
const
EventSetup
& es ) {
77
78
Handle<CandidateCollection>
source
;
79
Handle<CandidateCollection>
matched;
80
evt.
getByToken
(
sourceToken_
, source ) ;
81
evt.
getByToken
(
matchedToken_
, matched ) ;
82
83
if
(
printdebug_
) {
84
for
( CandidateCollection::const_iterator
c
= source->begin();
c
!= source->end(); ++
c
) {
85
cout
<<
"[CandOneToManyDeltaRMatcher] Et source "
<<
c
->et() << endl;
86
}
87
for
( CandidateCollection::const_iterator
c
= matched->begin();
c
!= matched->end(); ++
c
) {
88
cout
<<
"[CandOneToManyDeltaRMatcher] Et matched "
<<
c
->et() << endl;
89
}
90
}
91
92
93
auto_ptr<CandMatchMapMany> matchMap(
new
CandMatchMapMany
(
CandMatchMapMany::ref_type
(
CandidateRefProd
( source ),
94
CandidateRefProd
( matched )
95
) ) );
96
for
(
size_t
c
= 0;
c
!= source->size(); ++
c
) {
97
const
Candidate
&
src
= (*source)[
c
];
98
if
(
printdebug_
)
cout
<<
"[CandOneToManyDeltaRMatcher] source (Et,Eta,Phi) =("
<< src.
et
() <<
","
<<
99
src.
eta
() <<
","
<<
100
src.
phi
() <<
")"
<< endl;
101
vector<reco::helper::MatchPair>
v
;
102
for
(
size_t
m
= 0;
m
!= matched->size(); ++
m
) {
103
const
Candidate
&
match
= ( * matched )[
m
];
104
double
dist =
DeltaR
( src.
p4
() , match.
p4
() );
105
v.push_back( make_pair(
m
, dist ) );
106
}
107
if
( v.size() > 0 ) {
108
sort
( v.begin(), v.end(),
reco::helper::SortBySecond
() );
109
for
(
size_t
m
= 0;
m
!= v.size(); ++
m
) {
110
if
(
printdebug_
)
cout
<<
"[CandOneToManyDeltaRMatcher] match (Et,Eta,Phi) =("
<< ( * matched )[ v[
m
].first ].et() <<
","
<<
111
( * matched )[ v[
m
].first ].eta() <<
","
<<
112
( * matched )[ v[
m
].first ].phi() <<
") DeltaR="
<<
113
v[
m
].second << endl;
114
matchMap->insert(
CandidateRef
( source,
c
), make_pair(
CandidateRef
( matched, v[
m
].
first
), v[
m
].
second
) );
115
}
116
}
117
}
118
119
evt.
put
( matchMap );
120
121
}
122
123
#include "
FWCore/PluginManager/interface/ModuleDef.h
"
124
#include "
FWCore/Framework/interface/MakerMacros.h
"
125
126
DEFINE_FWK_MODULE
(
CandOneToManyDeltaRMatcher
);
reco::helper::SortBySecond::operator()
bool operator()(const MatchPair &p1, const MatchPair &p2) const
Definition:
CandOneToManyDeltaRMatcher.cc:59
CandMatchMap.h
reco::CandMatchMapMany
edm::AssociationMap< edm::OneToManyWithQuality< reco::CandidateCollection, reco::CandidateCollection, double > > CandMatchMapMany
Definition:
CandMatchMapMany.h:19
MessageLogger.h
LeafCandidate.h
DeltaR
Definition:
deltaR.h:79
edm::Event::getByToken
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition:
Event.h:434
reco::Candidate::et
virtual double et() const =0
transverse energy
reco::Candidate::eta
virtual float eta() const =0
momentum pseudorapidity
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition:
MakerMacros.h:17
Event.h
MakerMacros.h
EventSetup.h
reco::Candidate
Definition:
Candidate.h:32
python.multivaluedict.sort
def sort
Definition:
multivaluedict.py:161
reco::Candidate::phi
virtual float phi() const =0
momentum azimuthal angle
reco::helper::SortBySecond
Definition:
CandOneToManyDeltaRMatcher.cc:58
findQualityFiles.v
v
Definition:
findQualityFiles.py:177
Handle.h
edm::Handle
Definition:
AssociativeIterator.h:47
dt_dqm_sourceclient_common_cff.reco
tuple reco
Definition:
dt_dqm_sourceclient_common_cff.py:105
edm::EDGetTokenT< reco::CandidateCollection >
ParameterSetfwd.h
edm::EDProducer
Definition:
EDProducer.h:30
CandOneToManyDeltaRMatcher::sourceToken_
edm::EDGetTokenT< reco::CandidateCollection > sourceToken_
Definition:
CandOneToManyDeltaRMatcher.cc:26
ParameterSet.h
CandOneToManyDeltaRMatcher::printdebug_
bool printdebug_
Definition:
CandOneToManyDeltaRMatcher.cc:28
edm::second
U second(std::pair< T, U > const &p)
Definition:
ParameterSet.cc:250
Candidate.h
CandOneToManyDeltaRMatcher::CandOneToManyDeltaRMatcher
CandOneToManyDeltaRMatcher(const edm::ParameterSet &)
Definition:
CandOneToManyDeltaRMatcher.cc:66
CandOneToManyDeltaRMatcher::matchedToken_
edm::EDGetTokenT< reco::CandidateCollection > matchedToken_
Definition:
CandOneToManyDeltaRMatcher.cc:27
edm::OwnVector< Candidate >
EDMException.h
edm::Event::put
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition:
Event.h:116
reco::helper::MatchPair
pair< size_t, double > MatchPair
Definition:
CandOneToManyDeltaRMatcher.cc:56
ESHandle.h
edm::EventSetup
Definition:
EventSetup.h:44
alcazmumu_cfi.src
tuple src
Definition:
alcazmumu_cfi.py:30
CandMatchMapMany.h
first
bool first
Definition:
L1TdeRCT.cc:79
p2
double p2[4]
Definition:
TauolaWrapper.h:90
edm::helpers::KeyVal
Definition:
AssociationMapHelpers.h:16
EDProducer.h
CandOneToManyDeltaRMatcher
Definition:
CandOneToManyDeltaRMatcher.cc:19
m
int m
Definition:
DTDataIntegrityTask.cc:31
CandOneToManyDeltaRMatcher::~CandOneToManyDeltaRMatcher
~CandOneToManyDeltaRMatcher()
Definition:
CandOneToManyDeltaRMatcher.cc:73
reco::CandidateRef
edm::Ref< CandidateCollection > CandidateRef
persistent reference to an object in a collection of Candidate objects
Definition:
CandidateFwd.h:29
trackerHits.c
tuple c
Definition:
trackerHits.py:26
CandOneToManyDeltaRMatcher::produce
void produce(edm::Event &, const edm::EventSetup &) override
Definition:
CandOneToManyDeltaRMatcher.cc:76
reco::modules::helper::MatchPair
std::pair< size_t, double > MatchPair
Definition:
Matcher.h:66
p1
double p1[4]
Definition:
TauolaWrapper.h:89
edm::InputTag
Definition:
InputTag.h:17
InputTag.h
edm::ParameterSet
Definition:
ParameterSet.h:35
gather_cfg.cout
tuple cout
Definition:
gather_cfg.py:121
CandidateFwd.h
match
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
Definition:
Utils.h:6
edm::false
volatile std::atomic< bool > shutdown_flag false
Definition:
UnixSignalHandlers.cc:22
edm::Event
Definition:
Event.h:62
reco::CandidateRefProd
edm::RefProd< CandidateCollection > CandidateRefProd
reference to a collection of Candidate objects
Definition:
CandidateFwd.h:37
ModuleDef.h
source
static std::string const source
Definition:
EdmProvDump.cc:43
reco::Candidate::p4
virtual const LorentzVector & p4() const =0
four-momentum Lorentz vector
Generated for CMSSW Reference Manual by
1.8.5