CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
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 
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;
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
edm::EDProductGetter const * productGetter_
std::unique_ptr< TrackerHitAssociator > associate
EDProductGetter const * productGetter(std::atomic< void const * > const &iCache)
SimHitTPAssociationList const * simHitsTPAssoc
int getShared(std::vector< SimHitIdpr > &, std::vector< SimHitIdpr > &, TrackingParticle const &) const
void getMatchedIds(std::vector< SimHitIdpr > &, std::vector< SimHitIdpr > &, int &, iter, iter, TrackerHitAssociator *) const
int getDoubleCount(iter, iter, TrackerHitAssociator *, TrackingParticle const &) const
std::pair< TrackingParticleRef, TrackPSimHitRef > SimHitTPPair
virtual reco::SimToRecoCollection associateSimToReco(const edm::RefToBaseVector< reco::Track > &, const edm::RefVector< TrackingParticleCollection > &) const override
Association Sim To Reco with Collections.
std::vector< SimHitTPPair > SimHitTPAssociationList
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
const TrackingRecHit * getHitPtr(edm::OwnVector< TrackingRecHit >::const_iterator iter) const
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
virtual reco::RecoToSimCollection associateRecoToSim(const edm::RefToBaseVector< reco::Track > &, const edm::RefVector< TrackingParticleCollection > &) const override
Association Reco To Sim with Collections.
TrackAssociatorByHitsImpl(edm::EDProductGetter const &productGetter, std::unique_ptr< TrackerHitAssociator > iAssociate, TrackerTopology const *iTopo, SimHitTPAssociationList const *iSimHitsTPAssoc, SimToRecoDenomType iSimToRecoDenominator, double iQuality_SimToReco, double iPurity_SimToReco, double iCut_RecoToSim, bool iUsePixels, bool iUseGrouped, bool iUseSplitting, bool ThreeHitTracksAreSpecial, bool AbsoluteNumberOfHits)
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