CMS 3D CMS Logo

TrackAssociatorByHitsImpl.h
Go to the documentation of this file.
1 #ifndef SimTracker_TrackAssociatorProducers_TrackAssociatorByHitsImpl_h
2 #define SimTracker_TrackAssociatorProducers_TrackAssociatorByHitsImpl_h
3 
7 
8 //reco track
12 //TrackingParticle
16 
17 class TrackerTopology;
18 
19 namespace edm {
20  class EDProductGetter;
21 }
22 
24 
25  public:
26 
27  enum SimToRecoDenomType {denomnone,denomsim,denomreco};
28 
29  typedef std::pair<TrackingParticleRef, TrackPSimHitRef> SimHitTPPair;
30  typedef std::vector<SimHitTPPair> SimHitTPAssociationList;
31 
32 
34  std::unique_ptr<TrackerHitAssociator> iAssociate,
35  TrackerTopology const* iTopo,
36  SimHitTPAssociationList const* iSimHitsTPAssoc,
37  SimToRecoDenomType iSimToRecoDenominator,
38  double iQuality_SimToReco,
39  double iPurity_SimToReco,
40  double iCut_RecoToSim,
41  bool iUsePixels,
42  bool iUseGrouped,
43  bool iUseSplitting,
46 
47 
48  /* Associate SimTracks to RecoTracks By Hits */
49 
51  virtual
53  const edm::RefVector<TrackingParticleCollection>&) const override;
55  virtual
57  const edm::RefVector<TrackingParticleCollection>&) const override;
58 
60  virtual
62  const edm::Handle<TrackingParticleCollection>& tPCH) const override {
63  return TrackToTrackingParticleAssociatorBaseImpl::associateRecoToSim(tCH,tPCH);
64  }
65 
67  virtual
69  const edm::Handle<TrackingParticleCollection>& tPCH) const override {
70  return TrackToTrackingParticleAssociatorBaseImpl::associateSimToReco(tCH,tPCH);
71  }
72 
73  //seed
74  virtual
76  const edm::Handle<TrackingParticleCollection>&) const override;
77 
78  virtual
80  const edm::Handle<TrackingParticleCollection>& ) const override;
81 
82  private:
83  template<typename iter>
84  void getMatchedIds(std::vector<SimHitIdpr>&,
85  std::vector<SimHitIdpr>&,
86  int&,
87  iter,
88  iter,
89  TrackerHitAssociator*) const;
90 
91  int getShared(std::vector<SimHitIdpr>&,
92  std::vector<SimHitIdpr>&,
93  TrackingParticle const&) const;
94 
95  template<typename iter>
96  int getDoubleCount(iter,iter,TrackerHitAssociator*,TrackingParticle const&) const;
97 
98 
99  // ----- member data
101  std::unique_ptr<TrackerHitAssociator> associate;
103  SimHitTPAssociationList const* simHitsTPAssoc;
104 
106  const double quality_SimToReco;
107  const double purity_SimToReco;
108  const double cut_RecoToSim;
109  const bool UsePixels;
110  const bool UseGrouped;
111  const bool UseSplitting;
114 
116  const TrackingRecHit* getHitPtr(trackingRecHit_iterator iter) const {return &**iter;}
117 
118  //edm::InputTag _simHitTpMapTag;
119 };
120 
121 #endif
virtual reco::RecoToSimCollection associateRecoToSim(const edm::Handle< edm::View< reco::Track > > &tCH, const edm::Handle< TrackingParticleCollection > &tPCH) const override
compare reco to sim the handle of reco::Track and TrackingParticle collections
edm::EDProductGetter const * productGetter_
std::unique_ptr< TrackerHitAssociator > associate
EDProductGetter const * productGetter(std::atomic< void const * > const &iCache)
SimHitTPAssociationList const * simHitsTPAssoc
virtual reco::SimToRecoCollection associateSimToReco(const edm::Handle< edm::View< reco::Track > > &tCH, const edm::Handle< TrackingParticleCollection > &tPCH) const override
compare reco to sim the handle of reco::Track and TrackingParticle collections
std::pair< TrackingParticleRef, TrackPSimHitRef > SimHitTPPair
std::vector< SimHitTPPair > SimHitTPAssociationList
const TrackingRecHit * getHitPtr(edm::OwnVector< TrackingRecHit >::const_iterator iter) const
HLT enums.
Monte Carlo truth information used for tracking validation.
const TrackingRecHit * getHitPtr(trackingRecHit_iterator iter) const
TrackingRecHitCollection::base::const_iterator trackingRecHit_iterator
iterator over a vector of reference to TrackingRecHit in the same collection