SimTracker
TrackAssociation
plugins
MCTrackMatcher.cc
Go to the documentation of this file.
1
7
#include "
DataFormats/Common/interface/Association.h
"
8
#include "
DataFormats/HepMCCandidate/interface/GenParticle.h
"
9
#include "
FWCore/Framework/interface/global/EDProducer.h
"
10
#include "
FWCore/Utilities/interface/InputTag.h
"
11
#include "
SimDataFormats/Associations/interface/TrackToTrackingParticleAssociator.h
"
12
#include "
SimDataFormats/TrackingAnalysis/interface/TrackingParticle.h
"
13
14
namespace
edm
{
15
class
ParameterSet
;
16
}
17
18
using namespace
edm
;
19
using namespace
std
;
20
using namespace
reco
;
21
22
class
MCTrackMatcher
:
public
edm::global::EDProducer
<> {
23
public
:
25
MCTrackMatcher
(
const
edm::ParameterSet
&);
26
27
private
:
28
void
produce(
edm::StreamID
,
edm::Event
&evt,
const
edm::EventSetup
&es)
const override
;
29
edm::EDGetTokenT<reco::TrackToTrackingParticleAssociator>
associator_
;
30
edm::EDGetTokenT<edm::View<reco::Track>
>
tracks_
;
31
edm::EDGetTokenT<GenParticleCollection>
genParticles_
;
32
edm::EDGetTokenT<std::vector<int>
>
genParticleInts_
;
33
edm::EDGetTokenT<TrackingParticleCollection>
trackingParticles_
;
34
bool
throwOnMissingTPCollection_
;
35
typedef
edm::Association<reco::GenParticleCollection>
GenParticleMatch
;
36
};
37
38
#include "
DataFormats/Common/interface/Handle.h
"
39
#include "
FWCore/Framework/interface/Event.h
"
40
#include "
FWCore/ParameterSet/interface/ParameterSet.h
"
41
#include "
FWCore/Utilities/interface/EDMException.h
"
42
43
MCTrackMatcher::MCTrackMatcher
(
const
ParameterSet
&
p
)
44
: associator_(consumes<
reco
::
TrackToTrackingParticleAssociator
>(
p
.getParameter<
string
>(
"associator"
))),
45
tracks_(consumes<
edm
::
View
<
reco
::
Track
>>(
p
.getParameter<
InputTag
>(
"tracks"
))),
46
genParticles_(consumes<
GenParticleCollection
>(
p
.getParameter<
InputTag
>(
"genParticles"
))),
47
genParticleInts_(consumes<
std
::
vector
<
int
>>(
p
.getParameter<
InputTag
>(
"genParticles"
))),
48
trackingParticles_(consumes<
TrackingParticleCollection
>(
p
.getParameter<
InputTag
>(
"trackingParticles"
))),
49
throwOnMissingTPCollection_(
p
.getParameter<
bool
>(
"throwOnMissingTPCollection"
)) {
50
produces<GenParticleMatch>();
51
}
52
53
void
MCTrackMatcher::produce
(
edm::StreamID
,
Event
&evt,
const
EventSetup
&es)
const
{
54
Handle<reco::TrackToTrackingParticleAssociator>
assoc
;
55
evt.
getByToken
(
associator_
,
assoc
);
56
const
reco::TrackToTrackingParticleAssociator
*
associator
=
assoc
.product();
57
Handle<View<Track>
>
tracks
;
58
evt.
getByToken
(
tracks_
,
tracks
);
59
Handle<TrackingParticleCollection>
trackingParticles
;
60
auto
trackingParticlesFound = evt.
getByToken
(
trackingParticles_
,
trackingParticles
);
61
Handle<vector<int>
> barCodes;
62
evt.
getByToken
(
genParticleInts_
, barCodes);
63
Handle<GenParticleCollection>
genParticles
;
64
evt.
getByToken
(
genParticles_
,
genParticles
);
65
unique_ptr<GenParticleMatch>
match
(
new
GenParticleMatch
(
GenParticleRefProd
(
genParticles
)));
66
if
(not
throwOnMissingTPCollection_
and not trackingParticlesFound) {
67
evt.
put
(
std::move
(
match
));
68
return
;
69
}
70
RecoToSimCollection
associations
=
associator
->associateRecoToSim(
tracks
,
trackingParticles
);
71
GenParticleMatch::Filler
filler
(*
match
);
72
size_t
n
=
tracks
->size();
73
vector<int>
indices
(
n
, -1);
74
for
(
size_t
i
= 0;
i
<
n
; ++
i
) {
75
RefToBase<Track>
track
(
tracks
,
i
);
76
RecoToSimCollection::const_iterator
f
=
associations
.find(
track
);
77
if
(
f
!=
associations
.end()) {
78
TrackingParticleRef
tp
=
f
->val.front().first;
79
TrackingParticle::genp_iterator
j
,
b
=
tp
->genParticle_begin(),
e
=
tp
->genParticle_end();
80
for
(
j
=
b
;
j
!=
e
; ++
j
) {
81
const
reco::GenParticle
*
p
=
j
->get();
82
if
(
p
->status() == 1) {
83
indices
[
i
] =
j
->key();
84
break
;
85
}
86
}
87
}
88
}
89
filler
.insert(
tracks
,
indices
.begin(),
indices
.end());
90
filler
.fill();
91
evt.
put
(
std::move
(
match
));
92
}
93
94
#include "
FWCore/Framework/interface/MakerMacros.h
"
95
96
DEFINE_FWK_MODULE
(
MCTrackMatcher
);
reco::GenParticleCollection
std::vector< GenParticle > GenParticleCollection
collection of GenParticles
Definition:
GenParticleFwd.h:13
MCTrackMatcher::GenParticleMatch
edm::Association< reco::GenParticleCollection > GenParticleMatch
Definition:
MCTrackMatcher.cc:35
EDProducer.h
edm::Event::put
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition:
Event.h:133
mps_fire.i
i
Definition:
mps_fire.py:428
Association.h
TrackToTrackingParticleAssociator.h
dqmiolumiharvest.j
j
Definition:
dqmiolumiharvest.py:66
edm::Ref< TrackingParticleCollection >
GenParticle.h
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition:
MakerMacros.h:16
edm::AssociationMap::const_iterator
const iterator
Definition:
AssociationMap.h:78
edm::StreamID
Definition:
StreamID.h:30
Event.h
MakerMacros.h
edm::Handle< reco::TrackToTrackingParticleAssociator >
dqmdumpme.indices
indices
Definition:
dqmdumpme.py:50
genericTrackCandidates_cff.associations
associations
Definition:
genericTrackCandidates_cff.py:45
std
Definition:
JetResolutionObject.h:76
reco::GenParticleRefProd
edm::RefProd< GenParticleCollection > GenParticleRefProd
persistent reference to a GenParticle collection
Definition:
GenParticleFwd.h:23
cmsswSequenceInfo.tp
tp
Definition:
cmsswSequenceInfo.py:17
edm::Event::getByToken
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition:
Event.h:539
TrackingParticle.h
MillePedeFileConverter_cfg.e
e
Definition:
MillePedeFileConverter_cfg.py:37
reco::TrackToTrackingParticleAssociator
Definition:
TrackToTrackingParticleAssociator.h:36
edm::EDGetTokenT< reco::TrackToTrackingParticleAssociator >
edm::RefToBase
Definition:
AssociativeIterator.h:54
AlCaHLTBitMon_QueryRunRegistry.string
string string
Definition:
AlCaHLTBitMon_QueryRunRegistry.py:256
edm::Association::Filler
Definition:
Association.h:78
dqmiodumpmetadata.n
n
Definition:
dqmiodumpmetadata.py:28
MCTrackMatcher::associator_
edm::EDGetTokenT< reco::TrackToTrackingParticleAssociator > associator_
Definition:
MCTrackMatcher.cc:29
trackingPlots.assoc
assoc
Definition:
trackingPlots.py:183
ParameterSet.h
edm::Association
Definition:
Association.h:18
edm::View
Definition:
CaloClusterFwd.h:14
createfilelist.int
int
Definition:
createfilelist.py:10
EDMException.h
AJJGenJetFilter_cfi.genParticles
genParticles
Definition:
AJJGenJetFilter_cfi.py:5
MCTrackMatcher::tracks_
edm::EDGetTokenT< edm::View< reco::Track > > tracks_
Definition:
MCTrackMatcher.cc:30
edm::AssociationMap
Definition:
AssociationMap.h:48
f
double f[11][100]
Definition:
MuScleFitUtils.cc:78
edm::EventSetup
Definition:
EventSetup.h:59
edm::global::EDProducer
Definition:
EDProducer.h:32
MCTrackMatcher::genParticleInts_
edm::EDGetTokenT< std::vector< int > > genParticleInts_
Definition:
MCTrackMatcher.cc:32
HLT_2022v12_cff.track
track
Definition:
HLT_2022v12_cff.py:9251
MCTrackMatcher::throwOnMissingTPCollection_
bool throwOnMissingTPCollection_
Definition:
MCTrackMatcher.cc:34
electrons_cff.bool
bool
Definition:
electrons_cff.py:366
tracks
auto const & tracks
cannot be loose
Definition:
CAHitNtupletGeneratorKernelsImpl.h:148
b
double b
Definition:
hdecay.h:118
reco::Track
Definition:
Track.h:27
MCTrackMatcher::MCTrackMatcher
MCTrackMatcher(const edm::ParameterSet &)
constructor
Definition:
MCTrackMatcher.cc:43
LCToCPAssociation_cfi.associator
associator
Definition:
LCToCPAssociation_cfi.py:4
reco
fixed size matrix
Definition:
AlignmentAlgorithmBase.h:46
edm
HLT enums.
Definition:
AlignableModifier.h:19
edm::InputTag
Definition:
InputTag.h:15
reco::GenParticle
Definition:
GenParticle.h:21
trackerHitRTTI::vector
Definition:
trackerHitRTTI.h:21
InputTag.h
edm::RefVectorIterator
Definition:
EDProductfwd.h:33
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
MCTrackMatcher
Definition:
MCTrackMatcher.cc:22
TrackingParticleCollection
std::vector< TrackingParticle > TrackingParticleCollection
Definition:
TrackingParticleFwd.h:9
MCTrackMatcher::genParticles_
edm::EDGetTokenT< GenParticleCollection > genParticles_
Definition:
MCTrackMatcher.cc:31
edm::Event
Definition:
Event.h:73
trigObjTnPSource_cfi.filler
filler
Definition:
trigObjTnPSource_cfi.py:21
MCTrackMatcher::produce
void produce(edm::StreamID, edm::Event &evt, const edm::EventSetup &es) const override
Definition:
MCTrackMatcher.cc:53
MCTrackMatcher::trackingParticles_
edm::EDGetTokenT< TrackingParticleCollection > trackingParticles_
Definition:
MCTrackMatcher.cc:33
muonClassificationByHits_cfi.trackingParticles
trackingParticles
Definition:
muonClassificationByHits_cfi.py:28
eostools.move
def move(src, dest)
Definition:
eostools.py:511
AlCaHLTBitMon_ParallelJobs.p
def p
Definition:
AlCaHLTBitMon_ParallelJobs.py:153
Handle.h
Generated for CMSSW Reference Manual by
1.8.14