CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
VertexAssociatorByTracksProducer.cc
Go to the documentation of this file.
10 
12 
15 
17 public:
20 
21  static void fillDescriptions(edm::ConfigurationDescriptions &descriptions);
22 
23 private:
24  void produce(edm::StreamID, edm::Event &, const edm::EventSetup &) const override;
25 
26  // ----------member data ---------------------------
27  const double R2SMatchedSimRatio_;
28  const double R2SMatchedRecoRatio_;
29  const double S2RMatchedSimRatio_;
30  const double S2RMatchedRecoRatio_;
31 
34 
37 };
38 
39 namespace {
40  TrackingParticleSelector makeSelector(const edm::ParameterSet &param) {
41  return TrackingParticleSelector(param.getParameter<double>("ptMinTP"),
42  param.getParameter<double>("ptMaxTP"),
43  param.getParameter<double>("minRapidityTP"),
44  param.getParameter<double>("maxRapidityTP"),
45  param.getParameter<double>("tipTP"),
46  param.getParameter<double>("lipTP"),
47  param.getParameter<int>("minHitTP"),
48  param.getParameter<bool>("signalOnlyTP"),
49  param.getParameter<bool>("intimeOnlyTP"),
50  param.getParameter<bool>("chargedOnlyTP"),
51  param.getParameter<bool>("stableOnlyTP"),
52  param.getParameter<std::vector<int>>("pdgIdTP"));
53  }
54 } // namespace
55 
57  : R2SMatchedSimRatio_(config.getParameter<double>("R2SMatchedSimRatio")),
58  R2SMatchedRecoRatio_(config.getParameter<double>("R2SMatchedRecoRatio")),
59  S2RMatchedSimRatio_(config.getParameter<double>("S2RMatchedSimRatio")),
60  S2RMatchedRecoRatio_(config.getParameter<double>("S2RMatchedRecoRatio")),
61  selector_(makeSelector(config.getParameter<edm::ParameterSet>("trackingParticleSelector"))),
62  trackQuality_(reco::TrackBase::qualityByName(config.getParameter<std::string>("trackQuality"))),
63  trackRecoToSimAssociationToken_(
64  consumes<reco::RecoToSimCollection>(config.getParameter<edm::InputTag>("trackAssociation"))),
65  trackSimToRecoAssociationToken_(
66  consumes<reco::SimToRecoCollection>(config.getParameter<edm::InputTag>("trackAssociation"))) {
67  produces<reco::VertexToTrackingVertexAssociator>();
68 }
69 
71 
74 
75  // Matching conditions
76  desc.add<double>("R2SMatchedSimRatio", 0.3);
77  desc.add<double>("R2SMatchedRecoRatio", 0.0);
78  desc.add<double>("S2RMatchedSimRatio", 0.0);
79  desc.add<double>("S2RMatchedRecoRatio", 0.3);
80 
81  // RecoTrack selection
82  desc.add<std::string>("trackQuality", "highPurity");
83 
84  // TrackingParticle selection
86 
87  descTp.add<double>("lipTP", 30.0);
88  descTp.add<bool>("chargedOnlyTP", true);
89  descTp.add<std::vector<int>>("pdgIdTP", std::vector<int>());
90  descTp.add<bool>("signalOnlyTP", true);
91  descTp.add<double>("minRapidityTP", -2.4);
92  descTp.add<int>("minHitTP", 0);
93  descTp.add<double>("ptMinTP", 0.9);
94  descTp.add<double>("ptMaxTP", 1e100);
95  descTp.add<double>("maxRapidityTP", 2.4);
96  descTp.add<double>("tipTP", 3.5);
97  desc.add<edm::ParameterSetDescription>("trackingParticleSelector", descTp);
98 
99  // Track-TrackingParticle association
100  desc.add<edm::InputTag>("trackAssociation", edm::InputTag("trackingParticleRecoTrackAsssociation"));
101 
102  descriptions.add("VertexAssociatorByTracks", desc);
103 }
104 
106  edm::Handle<reco::RecoToSimCollection> recotosimCollectionH;
107  iEvent.getByToken(trackRecoToSimAssociationToken_, recotosimCollectionH);
108 
109  edm::Handle<reco::SimToRecoCollection> simtorecoCollectionH;
110  iEvent.getByToken(trackSimToRecoAssociationToken_, simtorecoCollectionH);
111 
112  auto impl = std::make_unique<VertexAssociatorByTracks>(&(iEvent.productGetter()),
117  &selector_,
119  recotosimCollectionH.product(),
120  simtorecoCollectionH.product());
121 
122  auto toPut = std::make_unique<reco::VertexToTrackingVertexAssociator>(std::move(impl));
123  iEvent.put(std::move(toPut));
124 }
125 
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:133
Quality qualityByName(std::string const &name)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:539
TrackQuality
track quality
Definition: TrackBase.h:150
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
EDProductGetter const & productGetter() const
Definition: Event.cc:106
const reco::TrackBase::TrackQuality trackQuality_
edm::AssociationMap< edm::OneToManyWithQualityGeneric< CaloParticleCollection, reco::CaloClusterCollection, std::pair< float, float > > > SimToRecoCollection
int iEvent
Definition: GenABIO.cc:224
VertexAssociatorByTracksProducer(const edm::ParameterSet &)
def move
Definition: eostools.py:511
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void produce(edm::StreamID, edm::Event &, const edm::EventSetup &) const override
T const * product() const
Definition: Handle.h:70
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
void add(std::string const &label, ParameterSetDescription const &psetDescription)
tuple config
parse the configuration file
edm::EDGetTokenT< reco::SimToRecoCollection > trackSimToRecoAssociationToken_
SingleObjectSelector< TrackingParticleCollection,::TrackingParticleSelector > TrackingParticleSelector
edm::EDGetTokenT< reco::RecoToSimCollection > trackRecoToSimAssociationToken_
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
edm::AssociationMap< edm::OneToManyWithQualityGeneric< reco::CaloClusterCollection, CaloParticleCollection, float > > RecoToSimCollection