CMS 3D CMS Logo

KDTreeLinkerTrackEcal.h
Go to the documentation of this file.
1 #ifndef KDTreeLinkerTrackEcal_h
2 #define KDTreeLinkerTrackEcal_h
3 
7 
8 
9 // This class is used to find all links between Tracks and ECAL clusters
10 // using a KDTree algorithm.
11 // It is used in PFBlockAlgo.cc in the function links().
13 {
14  public:
16  ~KDTreeLinkerTrackEcal() 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 ecalCluster that we want to link. From ecalCluster
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 *ecalCluster) 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 ECAL,
30  // we will search the closest rechits in the KDTree, from rechits we will find the
31  // ecalClusters and after that we will check the links between the track and
32  // all closest ecalClusters.
33  void searchLinks() override;
34 
35  // Here, we will store all PS/ECAL 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 ECAL clusters.
46 
47  // Sets of rechits that compose the ECAL clusters.
49 
50  // Map of linked Track/ECAL clusters.
52 
53  // Map of the ECAL clusters associated to a rechit.
55 
56  // KD trees
58 
59 };
60 
61 #endif /* !KDTreeLinkerTrackEcal_h */
void insertTargetElt(reco::PFBlockElement *track) override
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
void insertFieldClusterElt(reco::PFBlockElement *ecalCluster) override
void updatePFBlockEltWithLinks() override
std::set< const reco::PFRecHit * > RecHitSet
RecHit2BlockEltMap rechit2ClusterLinks_
BlockElt2BlockEltMap target2ClusterLinks_
KDTreeLinkerAlgo< reco::PFRecHit const * > tree_