CMS 3D CMS Logo

KDTreeLinkerTrackHcal.h
Go to the documentation of this file.
1 #ifndef KDTreeLinkerTrackHcal_h
2 #define KDTreeLinkerTrackHcal_h
3 
7 
8 
9 // This class is used to find all links between Tracks and HCAL clusters
10 // using a KDTree algorithm.
11 // It is used in PFBlockAlgo.cc in the function links().
13 {
14  public:
16  ~KDTreeLinkerTrackHcal() override;
17 
18  // With this method, we create the list of psCluster that we want to link.
20 
21  // Here, we create the list of hcalCluster that we want to link. From hcalCluster
22  // and fraction, we will create a second list of rechits that will be used to
23  // build the KDTree.
24  void insertFieldClusterElt(reco::PFBlockElement *hcalCluster) override;
25 
26  // The KDTree building from rechits list.
27  void buildTree() override;
28 
29  // Here we will iterate over all tracks. For each track intersection point with HCAL,
30  // we will search the closest rechits in the KDTree, from rechits we will find the
31  // hcalClusters and after that we will check the links between the track and
32  // all closest hcalClusters.
33  void searchLinks() override;
34 
35  // Here, we will store all PS/HCAL founded links in the PFBlockElement class
36  // of each psCluster in the PFmultilinks field.
37  void updatePFBlockEltWithLinks() override;
38 
39  // Here we free all allocated structures.
40  void clear() override;
41 
42  private:
43  // Data used by the KDTree algorithm : sets of Tracks and HCAL clusters.
46 
47  // Sets of rechits that compose the HCAL clusters.
49 
50  // Map of linked Track/HCAL clusters.
52 
53  // Map of the HCAL clusters associated to a rechit.
55 
56  // KD trees
58 
59 };
60 
61 #endif /* !KDTreeLinkerTrackHcal_h */
std::set< reco::PFBlockElement * > BlockEltSet
Abstract base class for a PFBlock element (track, cluster...)
std::map< const reco::PFRecHit *, BlockEltSet > RecHit2BlockEltMap
std::map< reco::PFBlockElement *, BlockEltSet > BlockElt2BlockEltMap
KDTreeLinkerAlgo< reco::PFRecHit const * > tree_
RecHit2BlockEltMap rechit2ClusterLinks_
void updatePFBlockEltWithLinks() override
BlockElt2BlockEltMap cluster2TargetLinks_
std::set< const reco::PFRecHit * > RecHitSet
void insertTargetElt(reco::PFBlockElement *track) override
void insertFieldClusterElt(reco::PFBlockElement *hcalCluster) override