CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
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:
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);
25 
26  // The KDTree building from rechits list.
27  void buildTree();
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();
34 
35  // Here, we will store all PS/HCAL founded links in the PFBlockElement class
36  // of each psCluster in the PFmultilinks field.
38 
39  // Here we free all allocated structures.
40  void clear();
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 
62 #endif /* !KDTreeLinkerTrackHcal_h */
void insertFieldClusterElt(reco::PFBlockElement *hcalCluster)
Abstract base class for a PFBlock element (track, cluster...)
RecHit2BlockEltMap rechit2ClusterLinks_
std::map< const reco::PFRecHit *, BlockEltSet > RecHit2BlockEltMap
BlockElt2BlockEltMap cluster2TargetLinks_
void insertTargetElt(reco::PFBlockElement *track)
std::map< reco::PFBlockElement *, BlockEltSet > BlockElt2BlockEltMap
std::set< const reco::PFRecHit * > RecHitSet
std::set< reco::PFBlockElement * > BlockEltSet