Main Page
Namespaces
Classes
Package Documentation
CVS Directory
WorkBook
Offline Guide
Release schedule
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Groups
Pages
PhysicsTools
HepMCCandAlgos
plugins
MCTruthCompositeMatcherNew.cc
Go to the documentation of this file.
1
/* \class MCTruthCompositeMatcher
2
*
3
* \author Luca Lista, INFN
4
*
5
*/
6
7
#include "
FWCore/Framework/interface/EDProducer.h
"
8
#include "
FWCore/Utilities/interface/InputTag.h
"
9
#include "
CommonTools/CandUtils/interface/CandMatcherNew.h
"
10
#include "
DataFormats/HepMCCandidate/interface/GenParticle.h
"
11
#include "
DataFormats/Common/interface/Association.h
"
12
#include "
FWCore/ParameterSet/interface/ParameterSet.h
"
13
#include "
FWCore/Utilities/interface/transform.h
"
14
#include "
FWCore/Framework/interface/Event.h
"
15
#include "
FWCore/Framework/interface/makeRefToBaseProdFrom.h
"
16
#include "
DataFormats/Common/interface/Handle.h
"
17
18
namespace
reco
{
19
namespace
modulesNew {
20
21
class
MCTruthCompositeMatcher
:
public
edm::EDProducer
{
22
public
:
23
explicit
MCTruthCompositeMatcher
(
const
edm::ParameterSet
&);
24
~MCTruthCompositeMatcher
()
override
;
25
26
private
:
27
edm::EDGetTokenT<CandidateView>
srcToken_
;
28
std::vector<edm::EDGetTokenT<reco::GenParticleMatch> >
matchMapTokens_
;
29
std::vector<int>
pdgId_
;
30
void
produce
(
edm::Event
&,
const
edm::EventSetup
&)
override
;
31
};
32
33
MCTruthCompositeMatcher::MCTruthCompositeMatcher
(
const
edm::ParameterSet
&
cfg
)
34
: srcToken_(consumes<
CandidateView
>(cfg.getParameter<edm::
InputTag
>(
"src"
))),
35
matchMapTokens_(edm::
vector_transform
(
36
cfg.
template
getParameter<std::
vector
<edm::
InputTag
> >(
"matchMaps"
),
37
[this](edm::
InputTag
const
&
tag
) {
return
consumes<reco::GenParticleMatch>(
tag
); })),
38
pdgId_
(
cfg
.getParameter<std::vector<int> >(
"matchPDGId"
)) {
39
produces<reco::GenParticleMatch>();
40
}
41
42
MCTruthCompositeMatcher::~MCTruthCompositeMatcher
() {}
43
44
void
MCTruthCompositeMatcher::produce
(
edm::Event
&evt,
const
edm::EventSetup
&) {
45
using namespace
edm;
46
using namespace
std;
47
Handle<CandidateView>
cands
;
48
evt.
getByToken
(
srcToken_
,
cands
);
49
size_t
nMaps =
matchMapTokens_
.size();
50
std::vector<const GenParticleMatch *> maps;
51
maps.reserve(nMaps);
52
for
(
size_t
i
= 0;
i
!= nMaps; ++
i
) {
53
Handle<reco::GenParticleMatch>
matchMap;
54
evt.
getByToken
(
matchMapTokens_
[
i
], matchMap);
55
maps.push_back(&*matchMap);
56
}
57
utilsNew::CandMatcher<GenParticleCollection>
match
(maps);
58
auto
matchMap = std::make_unique<GenParticleMatch>(match.
ref
());
59
int
size
=
cands
->size();
60
vector<int>::const_iterator
begin
=
pdgId_
.begin(),
end
=
pdgId_
.end();
61
if
(
size
!= 0) {
62
GenParticleMatch::Filler
filler(*matchMap);
63
vector<int>
indices
(
size
);
64
for
(
int
i
= 0;
i
!=
size
; ++
i
) {
65
const
Candidate
&cand = (*cands)[
i
];
66
GenParticleRef
mc = match[cand];
67
if
(mc.
isNull
()) {
68
indices[
i
] = -1;
69
}
else
{
70
bool
found
=
true
;
71
if
(
begin
!=
end
)
72
found =
find
(
begin
,
end
,
std::abs
(mc->pdgId())) !=
end
;
73
indices[
i
] = found ? int(mc.
key
()) : -1;
74
}
75
}
76
CandidateBaseRefProd
ref(
edm::makeRefToBaseProdFrom
(
cands
->refAt(0), evt));
77
filler.
insert
(ref, indices.begin(), indices.end());
78
filler.
fill
();
79
}
80
evt.
put
(
std::move
(matchMap));
81
}
82
83
}
// namespace modulesNew
84
}
// namespace reco
85
86
#include "
DataFormats/Candidate/interface/Candidate.h
"
87
#include "
FWCore/Framework/interface/MakerMacros.h
"
88
89
namespace
reco
{
90
namespace
modulesNew {
91
92
typedef
MCTruthCompositeMatcher
MCTruthCompositeMatcherNew
;
93
94
DEFINE_FWK_MODULE
(
MCTruthCompositeMatcherNew
);
95
96
}
// namespace modulesNew
97
}
// namespace reco
edm::helper::Filler::fill
void fill()
Definition:
ValueMap.h:65
makeRefToBaseProdFrom.h
reco::modulesNew::MCTruthCompositeMatcher::srcToken_
edm::EDGetTokenT< CandidateView > srcToken_
Definition:
MCTruthCompositeMatcherNew.cc:27
edm::Event::put
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition:
Event.h:133
looper.cfg
tuple cfg
Definition:
looper.py:296
mps_fire.i
i
Definition:
mps_fire.py:428
Association.h
reco::modulesNew::MCTruthCompositeMatcher::matchMapTokens_
std::vector< edm::EDGetTokenT< reco::GenParticleMatch > > matchMapTokens_
Definition:
MCTruthCompositeMatcherNew.cc:28
reco::modulesNew::MCTruthCompositeMatcher::MCTruthCompositeMatcher
MCTruthCompositeMatcher(const edm::ParameterSet &)
Definition:
MCTruthCompositeMatcherNew.cc:33
edm::Event::getByToken
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition:
Event.h:539
edm::Ref< GenParticleCollection >
GenParticle.h
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition:
MakerMacros.h:16
HLT_FULL_cff.cands
tuple cands
Definition:
HLT_FULL_cff.py:15391
Event.h
SplitLinear.begin
list begin
Definition:
SplitLinear.py:25
MakerMacros.h
edm::Handle
Definition:
AssociativeIterator.h:50
reco::Candidate
Definition:
Candidate.h:27
edm::helper::Filler::insert
void insert(const H &h, I begin, I end)
Definition:
ValueMap.h:53
reco::utilsNew::CandMatcher::ref
map_type::refprod_type ref() const
reference to matched collection
Definition:
CandMatcherNew.h:35
edm::Ref::key
key_type key() const
Accessor for product key.
Definition:
Ref.h:250
edm::vector_transform
auto vector_transform(std::vector< InputType > const &input, Function predicate) -> std::vector< typename std::remove_cv< typename std::remove_reference< decltype(predicate(input.front()))>::type >::type >
Definition:
transform.h:11
dt_dqm_sourceclient_common_cff.reco
tuple reco
Definition:
dt_dqm_sourceclient_common_cff.py:111
reco::modulesNew::MCTruthCompositeMatcher::~MCTruthCompositeMatcher
~MCTruthCompositeMatcher() override
Definition:
MCTruthCompositeMatcherNew.cc:42
spr::find
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition:
FindCaloHit.cc:19
edm::EDGetTokenT< CandidateView >
edm::EDProducer
Definition:
EDProducer.h:36
edm::Association::Filler
Definition:
Association.h:78
ParameterSet.h
Candidate.h
edm::View
Definition:
CaloClusterFwd.h:14
GlobalPosition_Frontier_DevDB_cff.tag
tuple tag
Definition:
GlobalPosition_Frontier_DevDB_cff.py:11
edm::RefToBaseProd
Definition:
RefToBase.h:65
reco::utilsNew::CandMatcher
Definition:
CandMatcherNew.h:19
eostools.move
def move
Definition:
eostools.py:511
reco::modulesNew::pdgId_
pdgId_(cfg.getParameter< std::vector< int > >("matchPDGId"))
Definition:
MCTruthCompositeMatcherNew.cc:38
funct::abs
Abs< T >::type abs(const T &t)
Definition:
Abs.h:22
edm::EventSetup
Definition:
EventSetup.h:59
transform.h
edm::Ref::isNull
bool isNull() const
Checks for null.
Definition:
Ref.h:235
reco::modulesNew::MCTruthCompositeMatcher::pdgId_
std::vector< int > pdgId_
Definition:
MCTruthCompositeMatcherNew.cc:29
EDProducer.h
reco::modulesNew::MCTruthCompositeMatcher::produce
void produce(edm::Event &, const edm::EventSetup &) override
Definition:
MCTruthCompositeMatcherNew.cc:44
CandMatcherNew.h
reco::modulesNew::MCTruthCompositeMatcherNew
MCTruthCompositeMatcher MCTruthCompositeMatcherNew
Definition:
MCTruthCompositeMatcherNew.cc:92
HLT_FULL_cff.InputTag
tuple InputTag
Definition:
HLT_FULL_cff.py:86956
edm::makeRefToBaseProdFrom
RefToBaseProd< T > makeRefToBaseProdFrom(RefToBase< T > const &iRef, Event const &iEvent)
Definition:
makeRefToBaseProdFrom.h:34
trackerHitRTTI::vector
Definition:
trackerHitRTTI.h:21
InputTag.h
dataset.end
string end
Definition:
dataset.py:937
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
dqmdumpme.indices
list indices
Definition:
dqmdumpme.py:50
edm::Event
Definition:
Event.h:73
newFWLiteAna.found
found
Definition:
newFWLiteAna.py:118
findQualityFiles.size
tuple size
Write out results.
Definition:
findQualityFiles.py:443
runTheMatrix.const
string const
Definition:
runTheMatrix.py:329
svgfig.template
def template
Definition:
svgfig.py:521
Handle.h
reco::modulesNew::MCTruthCompositeMatcher
Definition:
MCTruthCompositeMatcherNew.cc:21
Generated for CMSSW Reference Manual by
1.8.5