CMS 3D CMS Logo

VertexAssociationProducer.cc
Go to the documentation of this file.
1 
19 
24 
25 namespace pat {
26 
29 
30  public:
31  explicit PATVertexAssociationProducer(const edm::ParameterSet& iConfig);
33 
34  void produce(edm::Event& iEvent, const edm::EventSetup& iSetup) override;
35 
36  private:
37  typedef std::vector<edm::InputTag> VInputTag;
38  // configurables
39  std::vector<edm::InputTag> particles_;
40  std::vector<edm::EDGetTokenT<edm::View<reco::Candidate> > > particlesTokens_;
42  };
43 
44 } // namespace pat
45 
47 
48 PATVertexAssociationProducer::PATVertexAssociationProducer(const edm::ParameterSet& iConfig)
49  : particles_(iConfig.existsAs<VInputTag>("candidates")
50  ? // if it's a VInputTag
51  iConfig.getParameter<VInputTag>("candidates")
52  : VInputTag(1, iConfig.getParameter<edm::InputTag>("candidates"))),
53  vertexing_(iConfig, consumesCollector()) {
54  for (VInputTag::const_iterator it = particles_.begin(), end = particles_.end(); it != end; ++it) {
55  particlesTokens_.push_back(consumes<edm::View<reco::Candidate> >(*it));
56  }
57  produces<VertexAssociationMap>();
58 }
59 
61 
63  using namespace edm;
64  using namespace std;
65  // read in vertices and EventSetup
66  vertexing_.newEvent(iEvent, iSetup);
67 
68  // prepare room and tools for output
69  auto result = std::make_unique<VertexAssociationMap>();
71  vector<pat::VertexAssociation> assos;
72 
73  // loop on input tags
74  for (std::vector<edm::EDGetTokenT<edm::View<reco::Candidate> > >::const_iterator it = particlesTokens_.begin(),
75  end = particlesTokens_.end();
76  it != end;
77  ++it) {
78  // read candidates
80  iEvent.getByToken(*it, cands);
81  assos.clear();
82  assos.reserve(cands->size());
83  // loop on candidates
84  for (size_t i = 0, n = cands->size(); i < n; ++i) {
85  assos.push_back(vertexing_(cands->refAt(i)));
86  }
87  // insert into ValueMap
88  filler.insert(cands, assos.begin(), assos.end());
89  }
90 
91  // do the real filling
92  filler.fill();
93 
94  // put our produced stuff in the event
95  iEvent.put(std::move(result));
96 }
97 
99 
mps_fire.i
i
Definition: mps_fire.py:355
dqmiodumpmetadata.n
n
Definition: dqmiodumpmetadata.py:28
edm::EDGetTokenT
Definition: EDGetToken.h:33
edm
HLT enums.
Definition: AlignableModifier.h:19
pat::PATVertexAssociationProducer::vertexing_
pat::helper::VertexingHelper vertexing_
Definition: VertexAssociationProducer.cc:41
EDProducer.h
edm::Handle
Definition: AssociativeIterator.h:50
end
#define end
Definition: vmac.h:39
pat::PATVertexAssociationProducer::~PATVertexAssociationProducer
~PATVertexAssociationProducer() override
Definition: VertexAssociationProducer.cc:60
MakerMacros.h
pat::PATVertexAssociationProducer
Produces VertexAssociation and a ValueMap to the originating reco jets.
Definition: VertexAssociationProducer.cc:27
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
pat::PATVertexAssociationProducer::VertexAssociationMap
edm::ValueMap< pat::VertexAssociation > VertexAssociationMap
Definition: VertexAssociationProducer.cc:28
pat::helper::VertexingHelper
Produces and/or checks pat::VertexAssociation's.
Definition: VertexingHelper.h:50
edm::View
Definition: CaloClusterFwd.h:14
pat::helper::VertexingHelper::newEvent
void newEvent(const edm::Event &event)
To be called for each new event, reads in the vertex collection.
Definition: VertexingHelper.cc:38
HLT_2018_cff.InputTag
InputTag
Definition: HLT_2018_cff.py:79016
edm::ParameterSet
Definition: ParameterSet.h:36
Event.h
pat::PATVertexAssociationProducer::PATVertexAssociationProducer
PATVertexAssociationProducer(const edm::ParameterSet &iConfig)
Definition: VertexAssociationProducer.cc:48
trigObjTnPSource_cfi.filler
filler
Definition: trigObjTnPSource_cfi.py:21
pat::PATVertexAssociationProducer::produce
void produce(edm::Event &iEvent, const edm::EventSetup &iSetup) override
Definition: VertexAssociationProducer.cc:62
iEvent
int iEvent
Definition: GenABIO.cc:224
edm::stream::EDProducer
Definition: EDProducer.h:38
edm::EventSetup
Definition: EventSetup.h:57
pat
Definition: HeavyIon.h:7
Vertexing.h
InputTag.h
ValueMap.h
pat::PATVertexAssociationProducer::particles_
std::vector< edm::InputTag > particles_
Definition: VertexAssociationProducer.cc:39
eostools.move
def move(src, dest)
Definition: eostools.py:511
std
Definition: JetResolutionObject.h:76
VertexingHelper.h
pat::PATVertexAssociationProducer::VInputTag
std::vector< edm::InputTag > VInputTag
Definition: VertexAssociationProducer.cc:37
pat::PATVertexAssociationProducer::particlesTokens_
std::vector< edm::EDGetTokenT< edm::View< reco::Candidate > > > particlesTokens_
Definition: VertexAssociationProducer.cc:40
edm::ValueMap
Definition: ValueMap.h:107
HLT_2018_cff.cands
cands
Definition: HLT_2018_cff.py:13762
mps_fire.result
result
Definition: mps_fire.py:303
edm::helper::Filler
Definition: ValueMap.h:22
View.h
ParameterSet.h
edm::Event
Definition: Event.h:73