Go to the documentation of this file.00001 #ifndef KDTreeLinkerTools_h
00002 #define KDTreeLinkerTools_h
00003
00004 #include "DataFormats/ParticleFlowReco/interface/PFRecHit.h"
00005 #include "DataFormats/ParticleFlowReco/interface/PFBlockElement.h"
00006
00007 #include <map>
00008 #include <set>
00009
00010 typedef std::set<reco::PFBlockElement*> BlockEltSet;
00011 typedef std::set<const reco::PFRecHit*> RecHitSet;
00012
00013 typedef std::map<const reco::PFRecHit*, BlockEltSet> RecHit2BlockEltMap;
00014 typedef std::map<reco::PFBlockElement*, BlockEltSet> BlockElt2BlockEltMap;
00015
00016
00017
00018
00019
00020
00021 struct KDTreeBox
00022 {
00023 double dim1min, dim1max;
00024 double dim2min, dim2max;
00025
00026 public:
00027
00028 KDTreeBox(double d1min, double d1max,
00029 double d2min, double d2max)
00030 : dim1min (d1min), dim1max(d1max)
00031 , dim2min (d2min), dim2max(d2max)
00032 {}
00033
00034 KDTreeBox()
00035 : dim1min (0), dim1max(0)
00036 , dim2min (0), dim2max(0)
00037 {}
00038 };
00039
00040
00041
00042
00043
00044 struct KDTreeNodeInfo
00045 {
00046 const reco::PFRecHit *ptr;
00047 double dim1;
00048 double dim2;
00049
00050 public:
00051 KDTreeNodeInfo()
00052 : ptr(0)
00053 {}
00054
00055 KDTreeNodeInfo(const reco::PFRecHit *rhptr,
00056 double d1,
00057 double d2)
00058 : ptr(rhptr), dim1(d1), dim2(d2)
00059 {}
00060 };
00061
00062
00063
00064 struct KDTreeNode
00065 {
00066
00067 KDTreeNodeInfo rh;
00068
00069
00070 KDTreeNode *left, *right;
00071
00072
00073 KDTreeBox region;
00074
00075 public:
00076 KDTreeNode()
00077 : left(0), right(0)
00078 {}
00079
00080 void setAttributs(const KDTreeBox& regionBox,
00081 const KDTreeNodeInfo& rhinfo)
00082 {
00083 rh = rhinfo;
00084 region = regionBox;
00085 }
00086
00087 void setAttributs(const KDTreeBox& regionBox)
00088 {
00089 region = regionBox;
00090 }
00091 };
00092
00093
00094
00095 #endif