CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions
ClusterClusterMapping Class Reference

#include <ClusterClusterMapping.h>

Public Member Functions

 ClusterClusterMapping ()
 
 ~ClusterClusterMapping ()
 

Static Public Member Functions

static int checkOverlap (const reco::PFCluster &pfc, const std::vector< const reco::SuperCluster *> &sc, float minfrac=0.01, bool debug=false)
 
static int checkOverlap (const reco::PFCluster &pfc, const std::vector< reco::SuperClusterRef > &sc, float minfrac=0.01, bool debug=false)
 
static int checkOverlap (const reco::PFClusterRef &pfc, const std::vector< reco::SuperClusterRef > &sc, const edm::ValueMap< reco::CaloClusterPtr > &pfclusassoc)
 
static bool overlap (const reco::CaloCluster &sc1, const reco::CaloCluster &sc, float minfrac=0.01, bool debug=false)
 
static bool overlap (const reco::PFClusterRef &pfclustest, const reco::SuperCluster &sc, const edm::ValueMap< reco::CaloClusterPtr > &pfclusassoc)
 

Detailed Description

Definition at line 12 of file ClusterClusterMapping.h.

Constructor & Destructor Documentation

◆ ClusterClusterMapping()

ClusterClusterMapping::ClusterClusterMapping ( )
inline

Definition at line 14 of file ClusterClusterMapping.h.

14 { ; }

◆ ~ClusterClusterMapping()

ClusterClusterMapping::~ClusterClusterMapping ( )
inline

Definition at line 15 of file ClusterClusterMapping.h.

15 { ; }

Member Function Documentation

◆ checkOverlap() [1/3]

int ClusterClusterMapping::checkOverlap ( const reco::PFCluster pfc,
const std::vector< const reco::SuperCluster *> &  sc,
float  minfrac = 0.01,
bool  debug = false 
)
static

Definition at line 54 of file ClusterClusterMapping.cc.

References debug, overlap(), and mps_fire::result.

57  {
58  int result = -1;
59  unsigned nsc = sc.size();
60 
61  for (unsigned isc = 0; isc < nsc; ++isc) {
62  if (overlap(pfc, *(sc[isc]), minfrac, debug))
63  return isc;
64  }
65  return result;
66 }
static bool overlap(const reco::CaloCluster &sc1, const reco::CaloCluster &sc, float minfrac=0.01, bool debug=false)
#define debug
Definition: HDRShower.cc:19

◆ checkOverlap() [2/3]

int ClusterClusterMapping::checkOverlap ( const reco::PFCluster pfc,
const std::vector< reco::SuperClusterRef > &  sc,
float  minfrac = 0.01,
bool  debug = false 
)
static

Definition at line 68 of file ClusterClusterMapping.cc.

References debug, overlap(), and mps_fire::result.

71  {
72  int result = -1;
73  unsigned nsc = sc.size();
74 
75  for (unsigned isc = 0; isc < nsc; ++isc) {
76  if (overlap(pfc, *sc[isc], minfrac, debug))
77  return isc;
78  }
79  return result;
80 }
static bool overlap(const reco::CaloCluster &sc1, const reco::CaloCluster &sc, float minfrac=0.01, bool debug=false)
#define debug
Definition: HDRShower.cc:19

◆ checkOverlap() [3/3]

int ClusterClusterMapping::checkOverlap ( const reco::PFClusterRef pfc,
const std::vector< reco::SuperClusterRef > &  sc,
const edm::ValueMap< reco::CaloClusterPtr > &  pfclusassoc 
)
static

Definition at line 82 of file ClusterClusterMapping.cc.

References overlap(), and mps_fire::result.

84  {
85  int result = -1;
86  unsigned nsc = sc.size();
87 
88  for (unsigned isc = 0; isc < nsc; ++isc) {
89  if (overlap(pfc, *sc[isc], pfclusassoc))
90  return isc;
91  }
92  return result;
93 }
static bool overlap(const reco::CaloCluster &sc1, const reco::CaloCluster &sc, float minfrac=0.01, bool debug=false)

◆ overlap() [1/2]

bool ClusterClusterMapping::overlap ( const reco::CaloCluster sc1,
const reco::CaloCluster sc,
float  minfrac = 0.01,
bool  debug = false 
)
static

Definition at line 4 of file ClusterClusterMapping.cc.

References gather_cfg::cout, debug, dqmdumpme::first, reco::CaloCluster::hitsAndFractions(), testProducerWithPsetDescEmpty_cfi::i1, testProducerWithPsetDescEmpty_cfi::i2, and edm::second().

Referenced by checkOverlap(), SpecialClusterImporter< T >::importToBlock(), PFElecTkProducer::isSharingEcalEnergyWithEgSC(), SCAndECALLinker::testLink(), and SCAndHGCalLinker::testLink().

7  {
8  const std::vector<std::pair<DetId, float> > &hits1 = sc1.hitsAndFractions();
9  const std::vector<std::pair<DetId, float> > &hits2 = sc2.hitsAndFractions();
10  unsigned nhits1 = hits1.size();
11  unsigned nhits2 = hits2.size();
12 
13  for (unsigned i1 = 0; i1 < nhits1; ++i1) {
14  // consider only with a minimum fraction of minfrac (default 1%) of the RecHit
15  if (hits1[i1].second < minfrac) {
16  if (debug)
17  std::cout << " Discarding " << hits1[i1].first.rawId() << " with " << hits1[i1].second << std::endl;
18  continue;
19  }
20  for (unsigned i2 = 0; i2 < nhits2; ++i2) {
21  // consider only with a minimum fraction of minfract (default 1%) of the RecHit
22  if (hits2[i2].second < minfrac) {
23  if (debug)
24  std::cout << " Discarding " << hits2[i2].first.rawId() << " with " << hits2[i2].second << std::endl;
25  continue;
26  }
27  if (hits1[i1].first == hits2[i2].first) {
28  if (debug) {
29  std::cout << " Matching hits " << hits1[i1].first.rawId() << " with " << hits1[i1].second << " and "
30  << hits2[i2].first.rawId();
31  std::cout << " with " << hits2[i2].second << std::endl;
32  }
33  return true;
34  }
35  }
36  }
37  return false;
38 }
const std::vector< std::pair< DetId, float > > & hitsAndFractions() const
Definition: CaloCluster.h:210
U second(std::pair< T, U > const &p)
#define debug
Definition: HDRShower.cc:19

◆ overlap() [2/2]

bool ClusterClusterMapping::overlap ( const reco::PFClusterRef pfclustest,
const reco::SuperCluster sc,
const edm::ValueMap< reco::CaloClusterPtr > &  pfclusassoc 
)
static

Definition at line 40 of file ClusterClusterMapping.cc.

References reco::SuperCluster::clustersBegin(), reco::SuperCluster::clustersEnd(), edm::ValueMap< T >::contains(), edm::Ptr< T >::id(), edm::Ref< C, T, F >::id(), edm::Ptr< T >::key(), and edm::Ref< C, T, F >::key().

42  {
43  for (reco::CaloCluster_iterator caloclus = sc.clustersBegin(); caloclus != sc.clustersEnd(); ++caloclus) {
44  if (pfclusassoc.contains(caloclus->id())) {
45  const reco::CaloClusterPtr &pfclus = pfclusassoc[*caloclus];
46  //printf("pfclus prodidx = %i, key = %i, pfclustest prodidx = %i, key = %i\n",pfclus.id().productIndex(),int(pfclus.key()),pfclustest.id().productIndex(),int(pfclustest.key()));
47  if (pfclus.id() == pfclustest.id() && pfclus.key() == pfclustest.key())
48  return true;
49  }
50  }
51  return false;
52 }
ProductID id() const
Accessor for product ID.
Definition: Ref.h:244
ProductID id() const
Accessor for product ID.
Definition: Ptr.h:162
CaloCluster_iterator clustersBegin() const
fist iterator over BasicCluster constituents
Definition: SuperCluster.h:88
key_type key() const
Accessor for product key.
Definition: Ref.h:250
CaloCluster_iterator clustersEnd() const
last iterator over BasicCluster constituents
Definition: SuperCluster.h:91
key_type key() const
Definition: Ptr.h:167
bool contains(ProductID id) const
Definition: ValueMap.h:149