CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
ClusterClusterMapping.cc
Go to the documentation of this file.
2 
3 // returns true as soon as the two clusters have one hit in common
4 bool ClusterClusterMapping::overlap(const reco::CaloCluster & sc1, const reco::CaloCluster & sc2, float minfrac,bool debug) {
5  const std::vector< std::pair<DetId, float> > & hits1 = sc1.hitsAndFractions();
6  const std::vector< std::pair<DetId, float> > & hits2 = sc2.hitsAndFractions();
7  unsigned nhits1=hits1.size();
8  unsigned nhits2=hits2.size();
9 
10  for(unsigned i1=0;i1<nhits1;++i1)
11  {
12  // consider only with a minimum fraction of minfrac (default 1%) of the RecHit
13  if(hits1[i1].second<minfrac) {
14  if(debug) std::cout << " Discarding " << hits1[i1].first << " with " << hits1[i1].second << std::endl;
15  continue;
16  }
17  for(unsigned i2=0;i2<nhits2;++i2)
18  {
19  // consider only with a minimum fraction of minfract (default 1%) of the RecHit
20  if(hits2[i2].second<minfrac ) {
21  if(debug) std::cout << " Discarding " << hits2[i2].first << " with " << hits2[i2].second << std::endl;
22  continue;
23  }
24  if(hits1[i1].first==hits2[i2].first)
25  {
26  if(debug)
27  {
28  std::cout << " Matching hits " << hits1[i1].first << " with " << hits1[i1].second << " and " << hits2[i2].first;
29  std::cout << " with " << hits2[i2].second << std::endl;
30  }
31  return true;
32  }
33  }
34  }
35  return false;
36 }
37 
39 
40  for (reco::CaloCluster_iterator caloclus = sc.clustersBegin(); caloclus!=sc.clustersEnd(); ++caloclus) {
41  const reco::CaloClusterPtr &pfclus = pfclusassoc[*caloclus];
42  //printf("pfclus prodidx = %i, key = %i, pfclustest prodidx = %i, key = %i\n",pfclus.id().productIndex(),int(pfclus.key()),pfclustest.id().productIndex(),int(pfclustest.key()));
43  if (pfclus.id()==pfclustest.id() && pfclus.key()==pfclustest.key()) return true;
44  }
45  return false;
46 }
47 
48 int ClusterClusterMapping::checkOverlap(const reco::PFCluster & pfc, const std::vector<const reco::SuperCluster *>& sc,float minfrac,bool debug) {
49  int result=-1;
50  unsigned nsc=sc.size();
51 
52  for(unsigned isc=0;isc<nsc;++isc) {
53  if(overlap(pfc,*(sc[isc]),minfrac,debug))
54  return isc;
55  }
56  return result;
57 }
58 
59 int ClusterClusterMapping::checkOverlap(const reco::PFCluster & pfc, const std::vector<reco::SuperClusterRef >& sc,float minfrac,bool debug) {
60  int result=-1;
61  unsigned nsc=sc.size();
62 
63  for(unsigned isc=0;isc<nsc;++isc) {
64  if(overlap(pfc,*sc[isc],minfrac,debug))
65  return isc;
66  }
67  return result;
68 }
69 
70 int ClusterClusterMapping::checkOverlap(const reco::PFClusterRef & pfc, const std::vector<reco::SuperClusterRef >& sc,const edm::ValueMap<reco::CaloClusterPtr> &pfclusassoc) {
71  int result=-1;
72  unsigned nsc=sc.size();
73 
74  for(unsigned isc=0;isc<nsc;++isc) {
75  if(overlap(pfc,*sc[isc],pfclusassoc))
76  return isc;
77  }
78  return result;
79 }
static bool overlap(const reco::CaloCluster &sc1, const reco::CaloCluster &sc, float minfrac=0.01, bool debug=false)
key_type key() const
Definition: Ptr.h:186
Particle flow cluster, see clustering algorithm in PFClusterAlgo.
Definition: PFCluster.h:47
const std::vector< std::pair< DetId, float > > & hitsAndFractions() const
Definition: CaloCluster.h:192
key_type key() const
Accessor for product key.
Definition: Ref.h:264
ProductID id() const
Accessor for product ID.
Definition: Ref.h:258
U second(std::pair< T, U > const &p)
tuple result
Definition: query.py:137
#define debug
Definition: HDRShower.cc:19
ProductID id() const
Accessor for product ID.
Definition: Ptr.h:181
static int checkOverlap(const reco::PFCluster &pfc, const std::vector< const reco::SuperCluster * > &sc, float minfrac=0.01, bool debug=false)
CaloCluster_iterator clustersBegin() const
fist iterator over BasicCluster constituents
Definition: SuperCluster.h:75
tuple cout
Definition: gather_cfg.py:121
CaloCluster_iterator clustersEnd() const
last iterator over BasicCluster constituents
Definition: SuperCluster.h:78