CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Static Private Member Functions | Private Attributes
ClusterTPAssociation Class Reference

#include <ClusterTPAssociation.h>

Public Types

using const_iterator = typename map_type::const_iterator
 
using key_type = OmniClusterRef
 
using map_type = std::vector< value_type >
 
using mapped_type = TrackingParticleRef
 
using range = std::pair< const_iterator, const_iterator >
 
using value_type = std::pair< key_type, mapped_type >
 

Public Member Functions

void addKeyID (edm::ProductID id)
 
const_iterator begin () const
 
const_iterator cbegin () const
 
const_iterator cend () const
 
void checkKeyProductID (const OmniClusterRef &key) const
 
void checkKeyProductID (const edm::ProductID &id) const
 
void checkMappedProductID (const edm::HandleBase &mappedHandle) const
 
void checkMappedProductID (const TrackingParticleRef &tp) const
 
void checkMappedProductID (const edm::ProductID &id) const
 
 ClusterTPAssociation ()
 
 ClusterTPAssociation (const edm::HandleBase &mappedHandle)
 
 ClusterTPAssociation (const edm::ProductID &mappedProductId)
 
void emplace_back (const OmniClusterRef &cluster, const TrackingParticleRef &tp)
 
bool empty () const
 
const_iterator end () const
 
range equal_range (const OmniClusterRef &key) const
 
const map_typemap () const
 
size_t size () const
 
void sortAndUnique ()
 
void swap (ClusterTPAssociation &other)
 

Static Private Member Functions

static bool compare (const value_type &i, const value_type &j)
 
static bool compareSort (const value_type &i, const value_type &j)
 

Private Attributes

edm::VecArray< edm::ProductID, 2 > keyProductIDs_
 
map_type map_
 
edm::ProductID mappedProductId_
 

Detailed Description

Maps OmniClusterRefs to TrackingParticleRefs

Assumes that the TrackingParticleRefs point to a single TrackingParticle collection.

Definition at line 21 of file ClusterTPAssociation.h.

Member Typedef Documentation

◆ const_iterator

using ClusterTPAssociation::const_iterator = typename map_type::const_iterator

Definition at line 27 of file ClusterTPAssociation.h.

◆ key_type

Definition at line 23 of file ClusterTPAssociation.h.

◆ map_type

Definition at line 26 of file ClusterTPAssociation.h.

◆ mapped_type

Definition at line 24 of file ClusterTPAssociation.h.

◆ range

Definition at line 28 of file ClusterTPAssociation.h.

◆ value_type

Definition at line 25 of file ClusterTPAssociation.h.

Constructor & Destructor Documentation

◆ ClusterTPAssociation() [1/3]

ClusterTPAssociation::ClusterTPAssociation ( )
inline

Definition at line 30 of file ClusterTPAssociation.h.

30 {}

◆ ClusterTPAssociation() [2/3]

ClusterTPAssociation::ClusterTPAssociation ( const edm::HandleBase mappedHandle)
inlineexplicit

Definition at line 31 of file ClusterTPAssociation.h.

31 : ClusterTPAssociation(mappedHandle.id()) {}
ProductID id() const
Definition: HandleBase.cc:29

◆ ClusterTPAssociation() [3/3]

ClusterTPAssociation::ClusterTPAssociation ( const edm::ProductID mappedProductId)
inlineexplicit

Definition at line 32 of file ClusterTPAssociation.h.

32 : mappedProductId_(mappedProductId) {}
edm::ProductID mappedProductId_

Member Function Documentation

◆ addKeyID()

void ClusterTPAssociation::addKeyID ( edm::ProductID  id)
inline

Definition at line 34 of file ClusterTPAssociation.h.

References edm::VecArray< T, N >::emplace_back(), spr::find(), and keyProductIDs_.

34  {
35  auto foundKeyID = std::find(std::begin(keyProductIDs_), std::end(keyProductIDs_), id);
36  if (foundKeyID == std::end(keyProductIDs_)) {
38  }
39  }
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:19
void emplace_back(Args &&... args)
Definition: VecArray.h:90
edm::VecArray< edm::ProductID, 2 > keyProductIDs_

◆ begin()

const_iterator ClusterTPAssociation::begin ( void  ) const
inline

Definition at line 60 of file ClusterTPAssociation.h.

References map_.

60 { return map_.begin(); }

◆ cbegin()

const_iterator ClusterTPAssociation::cbegin ( ) const
inline

Definition at line 61 of file ClusterTPAssociation.h.

References map_.

61 { return map_.cbegin(); }

◆ cend()

const_iterator ClusterTPAssociation::cend ( ) const
inline

Definition at line 63 of file ClusterTPAssociation.h.

References map_.

63 { return map_.end(); }

◆ checkKeyProductID() [1/2]

void ClusterTPAssociation::checkKeyProductID ( const OmniClusterRef key) const
inline

Definition at line 72 of file ClusterTPAssociation.h.

References checkKeyProductID(), and crabWrapper::key.

Referenced by checkKeyProductID(), emplace_back(), and equal_range().

72 { checkKeyProductID(key.id()); }
void checkKeyProductID(const OmniClusterRef &key) const

◆ checkKeyProductID() [2/2]

void ClusterTPAssociation::checkKeyProductID ( const edm::ProductID id) const

Definition at line 4 of file ClusterTPAssociation.cc.

References MillePedeFileConverter_cfg::e, Exception, spr::find(), mps_fire::i, keyProductIDs_, and edm::VecArray< T, N >::size().

4  {
5  if (std::find(std::begin(keyProductIDs_), std::end(keyProductIDs_), id) == std::end(keyProductIDs_)) {
6  auto e = cms::Exception("InvalidReference");
7  e << "ClusterTPAssociation has OmniClusterRefs with ProductIDs ";
8  for (size_t i = 0; i < keyProductIDs_.size(); ++i) {
9  e << keyProductIDs_[i];
10  if (i < keyProductIDs_.size() - 1) {
11  e << ",";
12  }
13  }
14  e << " but got OmniClusterRef/ProductID with ID " << id << ". This is typically caused by a configuration error.";
15  throw e;
16  }
17 }
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:19
edm::VecArray< edm::ProductID, 2 > keyProductIDs_
constexpr size_type size() const noexcept
Definition: VecArray.h:70

◆ checkMappedProductID() [1/3]

void ClusterTPAssociation::checkMappedProductID ( const edm::HandleBase mappedHandle) const
inline

Definition at line 75 of file ClusterTPAssociation.h.

References checkMappedProductID(), and edm::HandleBase::id().

Referenced by checkMappedProductID(), and emplace_back().

75 { checkMappedProductID(mappedHandle.id()); }
ProductID id() const
Definition: HandleBase.cc:29
void checkMappedProductID(const edm::HandleBase &mappedHandle) const

◆ checkMappedProductID() [2/3]

void ClusterTPAssociation::checkMappedProductID ( const TrackingParticleRef tp) const
inline

Definition at line 76 of file ClusterTPAssociation.h.

References checkMappedProductID(), and cmsswSequenceInfo::tp.

Referenced by checkMappedProductID().

76 { checkMappedProductID(tp.id()); }
void checkMappedProductID(const edm::HandleBase &mappedHandle) const

◆ checkMappedProductID() [3/3]

void ClusterTPAssociation::checkMappedProductID ( const edm::ProductID id) const

Definition at line 19 of file ClusterTPAssociation.cc.

References Exception, and mappedProductId_.

19  {
20  if (id != mappedProductId_) {
21  throw cms::Exception("InvalidReference")
22  << "ClusterTPAssociation has TrackingParticles with ProductID " << mappedProductId_
23  << ", but got TrackingParticleRef/Handle/ProductID with ID " << id
24  << ". This is typically caused by a configuration error.";
25  }
26 }
edm::ProductID mappedProductId_

◆ compare()

static bool ClusterTPAssociation::compare ( const value_type i,
const value_type j 
)
inlinestaticprivate

Definition at line 80 of file ClusterTPAssociation.h.

References mps_fire::i, and dqmiolumiharvest::j.

Referenced by compareSort(), and equal_range().

80 { return i.first.rawIndex() > j.first.rawIndex(); }

◆ compareSort()

static bool ClusterTPAssociation::compareSort ( const value_type i,
const value_type j 
)
inlinestaticprivate

Definition at line 82 of file ClusterTPAssociation.h.

References compare(), mps_fire::i, and dqmiolumiharvest::j.

Referenced by sortAndUnique().

82  {
83  // For sorting compare also TrackingParticle keys in order to
84  // remove duplicate matches
85  return compare(i, j) || (i.first.rawIndex() == j.first.rawIndex() && i.second.key() > j.second.key());
86  }
static bool compare(const value_type &i, const value_type &j)

◆ emplace_back()

void ClusterTPAssociation::emplace_back ( const OmniClusterRef cluster,
const TrackingParticleRef tp 
)
inline

Definition at line 41 of file ClusterTPAssociation.h.

References checkKeyProductID(), checkMappedProductID(), OmniClusterRef::id(), map_, and cmsswSequenceInfo::tp.

41  {
43  checkKeyProductID(cluster.id());
44  map_.emplace_back(cluster, tp);
45  }
void checkKeyProductID(const OmniClusterRef &key) const
edm::ProductID id() const
void checkMappedProductID(const edm::HandleBase &mappedHandle) const

◆ empty()

bool ClusterTPAssociation::empty ( void  ) const
inline

Definition at line 57 of file ClusterTPAssociation.h.

References map_.

Referenced by QuickTrackAssociatorByHitsImpl::associateTrack().

57 { return map_.empty(); }

◆ end()

const_iterator ClusterTPAssociation::end ( void  ) const
inline

Definition at line 62 of file ClusterTPAssociation.h.

References map_.

62 { return map_.end(); }

◆ equal_range()

range ClusterTPAssociation::equal_range ( const OmniClusterRef key) const
inline

Definition at line 65 of file ClusterTPAssociation.h.

References checkKeyProductID(), compare(), crabWrapper::key, and map_.

Referenced by QuickTrackAssociatorByHitsImpl::associateTrack(), QuickTrackAssociatorByHitsImpl::getDoubleCount(), and TrackingNtuple::matchCluster().

65  {
67  return std::equal_range(map_.begin(), map_.end(), value_type(key, TrackingParticleRef()), compare);
68  }
void checkKeyProductID(const OmniClusterRef &key) const
static bool compare(const value_type &i, const value_type &j)
std::pair< key_type, mapped_type > value_type
edm::Ref< TrackingParticleCollection > TrackingParticleRef

◆ map()

const map_type& ClusterTPAssociation::map ( ) const
inline

Definition at line 70 of file ClusterTPAssociation.h.

References map_.

Referenced by BDHadronTrackMonitoringAnalyzer::analyze().

70 { return map_; }

◆ size()

size_t ClusterTPAssociation::size ( void  ) const
inline

Definition at line 58 of file ClusterTPAssociation.h.

References map_.

Referenced by ntupleDataFormat._Collection::__iter__(), and ntupleDataFormat._Collection::__len__().

58 { return map_.size(); }

◆ sortAndUnique()

void ClusterTPAssociation::sortAndUnique ( )
inline

Definition at line 46 of file ClusterTPAssociation.h.

References compareSort(), dqmdumpme::last, map_, jetUpdater_cfi::sort, and tier0::unique().

46  {
47  std::sort(map_.begin(), map_.end(), compareSort);
48  auto last = std::unique(map_.begin(), map_.end());
49  map_.erase(last, map_.end());
50  map_.shrink_to_fit();
51  }
def unique(seq, keepstr=True)
Definition: tier0.py:24
static bool compareSort(const value_type &i, const value_type &j)

◆ swap()

void ClusterTPAssociation::swap ( ClusterTPAssociation other)
inline

Definition at line 52 of file ClusterTPAssociation.h.

References map_, mappedProductId_, trackingPlots::other, and edm::ProductID::swap().

52  {
53  map_.swap(other.map_);
54  mappedProductId_.swap(other.mappedProductId_);
55  }
void swap(ProductID &other)
Definition: ProductID.cc:16
edm::ProductID mappedProductId_

Member Data Documentation

◆ keyProductIDs_

edm::VecArray<edm::ProductID, 2> ClusterTPAssociation::keyProductIDs_
private

Definition at line 89 of file ClusterTPAssociation.h.

Referenced by addKeyID(), and checkKeyProductID().

◆ map_

map_type ClusterTPAssociation::map_
private

◆ mappedProductId_

edm::ProductID ClusterTPAssociation::mappedProductId_
private

Definition at line 90 of file ClusterTPAssociation.h.

Referenced by checkMappedProductID(), and swap().