CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
VertexAssociatorByPositionAndTracksProducer.cc
Go to the documentation of this file.
10 
12 
15 
17 
19 public:
22 
23  static void fillDescriptions(edm::ConfigurationDescriptions &descriptions);
24 
25 private:
26  void produce(edm::StreamID, edm::Event &, const edm::EventSetup &) const override;
27 
28  // ----------member data ---------------------------
29  const double absZ_;
30  const double sigmaZ_;
31  const double maxRecoZ_;
32  const double absT_;
33  const double sigmaT_;
34  const double maxRecoT_;
35  const double sharedTrackFraction_;
36 
39 };
40 
42  : absZ_(config.getParameter<double>("absZ")),
43  sigmaZ_(config.getParameter<double>("sigmaZ")),
44  maxRecoZ_(config.getParameter<double>("maxRecoZ")),
45  absT_(config.getParameter<double>("absT")),
46  sigmaT_(config.getParameter<double>("sigmaT")),
47  maxRecoT_(config.getParameter<double>("maxRecoT")),
48  sharedTrackFraction_(config.getParameter<double>("sharedTrackFraction")),
49  trackRecoToSimAssociationToken_(
50  consumes<reco::RecoToSimCollection>(config.getParameter<edm::InputTag>("trackAssociation"))),
51  trackSimToRecoAssociationToken_(
52  consumes<reco::SimToRecoCollection>(config.getParameter<edm::InputTag>("trackAssociation"))) {
53  produces<reco::VertexToTrackingVertexAssociator>();
54 }
55 
57 
60 
61  // Matching conditions
62  desc.add<double>("absZ", 0.1);
63  desc.add<double>("sigmaZ", 3.0);
64  desc.add<double>("maxRecoZ", 1000.0);
65  desc.add<double>("absT", -1.0);
66  desc.add<double>("sigmaT", -1.0);
67  desc.add<double>("maxRecoT", -1.0);
68  desc.add<double>("sharedTrackFraction", -1.0);
69 
70  // Track-TrackingParticle association
71  desc.add<edm::InputTag>("trackAssociation", edm::InputTag("trackingParticleRecoTrackAsssociation"));
72 
73  descriptions.add("VertexAssociatorByPositionAndTracks", desc);
74 }
75 
78  const edm::EventSetup &) const {
79  edm::Handle<reco::RecoToSimCollection> recotosimCollectionH;
80  iEvent.getByToken(trackRecoToSimAssociationToken_, recotosimCollectionH);
81 
82  edm::Handle<reco::SimToRecoCollection> simtorecoCollectionH;
83  iEvent.getByToken(trackSimToRecoAssociationToken_, simtorecoCollectionH);
84 
85  std::unique_ptr<VertexAssociatorByPositionAndTracks> impl;
86 
87  if (!recotosimCollectionH.isValid() || !simtorecoCollectionH.isValid()) {
88  if (!recotosimCollectionH.isValid())
89  edm::LogWarning("PrimaryVertexAnalyzer4PUSlimmed") << "trackRecoToSimAssociation is not available in the event";
90  if (!simtorecoCollectionH.isValid())
91  edm::LogWarning("PrimaryVertexAnalyzer4PUSlimmed") << "trackSimToRecoAssociation is not available in the event";
92  return;
93  }
94  if (sigmaT_ < 0.0) {
95  impl = std::make_unique<VertexAssociatorByPositionAndTracks>(&(iEvent.productGetter()),
96  absZ_,
97  sigmaZ_,
98  maxRecoZ_,
100  recotosimCollectionH.product(),
101  simtorecoCollectionH.product());
102  } else {
103  impl = std::make_unique<VertexAssociatorByPositionAndTracks>(&(iEvent.productGetter()),
104  absZ_,
105  sigmaZ_,
106  maxRecoZ_,
107  absT_,
108  sigmaT_,
109  maxRecoT_,
111  recotosimCollectionH.product(),
112  simtorecoCollectionH.product());
113  }
114 
115  auto toPut = std::make_unique<reco::VertexToTrackingVertexAssociator>(std::move(impl));
116  iEvent.put(std::move(toPut));
117 }
118 
edm::EDGetTokenT< reco::RecoToSimCollection > trackRecoToSimAssociationToken_
T const * product() const
Definition: Handle.h:70
edm::AssociationMap< edm::OneToManyWithQualityGeneric< CaloParticleCollection, reco::CaloClusterCollection, std::pair< float, float > > > SimToRecoCollection
Definition: config.py:1
int iEvent
Definition: GenABIO.cc:224
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
edm::EDGetTokenT< reco::SimToRecoCollection > trackSimToRecoAssociationToken_
void add(std::string const &label, ParameterSetDescription const &psetDescription)
bool isValid() const
Definition: HandleBase.h:70
fixed size matrix
HLT enums.
void produce(edm::StreamID, edm::Event &, const edm::EventSetup &) const override
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
def move(src, dest)
Definition: eostools.py:511
edm::AssociationMap< edm::OneToManyWithQualityGeneric< reco::CaloClusterCollection, CaloParticleCollection, float > > RecoToSimCollection