CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros 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_(consumes<reco::RecoToSimCollection>(config.getParameter<edm::InputTag>("trackAssociation"))),
50  trackSimToRecoAssociationToken_(consumes<reco::SimToRecoCollection>(config.getParameter<edm::InputTag>("trackAssociation")))
51 {
52  produces<reco::VertexToTrackingVertexAssociator>();
53 }
54 
56 
59 
60  // Matching conditions
61  desc.add<double>("absZ", 0.1);
62  desc.add<double>("sigmaZ", 3.0);
63  desc.add<double>("maxRecoZ", 1000.0);
64  desc.add<double>("absT", -1.0);
65  desc.add<double>("sigmaT", -1.0);
66  desc.add<double>("maxRecoT", -1.0);
67  desc.add<double>("sharedTrackFraction", -1.0);
68 
69  // Track-TrackingParticle association
70  desc.add<edm::InputTag>("trackAssociation", edm::InputTag("trackingParticleRecoTrackAsssociation"));
71 
72  descriptions.add("VertexAssociatorByPositionAndTracks", desc);
73 }
74 
76  edm::Handle<reco::RecoToSimCollection > recotosimCollectionH;
77  iEvent.getByToken(trackRecoToSimAssociationToken_, recotosimCollectionH);
78 
79  edm::Handle<reco::SimToRecoCollection > simtorecoCollectionH;
80  iEvent.getByToken(trackSimToRecoAssociationToken_, simtorecoCollectionH);
81 
82  std::unique_ptr<VertexAssociatorByPositionAndTracks> impl;
83 
84  if (!recotosimCollectionH.isValid() || !simtorecoCollectionH.isValid()) {
85  if (!recotosimCollectionH.isValid())
86  edm::LogWarning("PrimaryVertexAnalyzer4PUSlimmed")
87  << "trackRecoToSimAssociation is not available in the event";
88  if (!simtorecoCollectionH.isValid())
89  edm::LogWarning("PrimaryVertexAnalyzer4PUSlimmed")
90  << "trackSimToRecoAssociation is not available in the event";
91  return;
92  }
93  if( sigmaT_ < 0.0 ) {
94  impl = std::make_unique<VertexAssociatorByPositionAndTracks>(&(iEvent.productGetter()),
95  absZ_,
96  sigmaZ_,
97  maxRecoZ_,
99  recotosimCollectionH.product(),
100  simtorecoCollectionH.product());
101  } else {
102  impl = std::make_unique<VertexAssociatorByPositionAndTracks>(&(iEvent.productGetter()),
103  absZ_,
104  sigmaZ_,
105  maxRecoZ_,
106  absT_,
107  sigmaT_,
108  maxRecoT_,
110  recotosimCollectionH.product(),
111  simtorecoCollectionH.product());
112  }
113 
114  auto toPut = std::make_unique<reco::VertexToTrackingVertexAssociator>(std::move(impl));
115  iEvent.put(std::move(toPut));
116 }
117 
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:137
edm::EDGetTokenT< reco::RecoToSimCollection > trackRecoToSimAssociationToken_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:579
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:17
EDProductGetter const & productGetter() const
Definition: Event.cc:104
Definition: config.py:1
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
int iEvent
Definition: GenABIO.cc:230
ParameterDescriptionBase * add(U const &iLabel, T const &value)
bool isValid() const
Definition: HandleBase.h:74
edm::EDGetTokenT< reco::SimToRecoCollection > trackSimToRecoAssociationToken_
T const * product() const
Definition: Handle.h:81
edm::AssociationMap< edm::OneToManyWithQualityGeneric< edm::View< reco::Track >, TrackingParticleCollection, double > > RecoToSimCollection
void add(std::string const &label, ParameterSetDescription const &psetDescription)
fixed size matrix
HLT enums.
void produce(edm::StreamID, edm::Event &, const edm::EventSetup &) const override
edm::AssociationMap< edm::OneToManyWithQualityGeneric< TrackingParticleCollection, edm::View< reco::Track >, double > > SimToRecoCollection
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
def move(src, dest)
Definition: eostools.py:510