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

using ClusterTPAssociation::const_iterator = typename map_type::const_iterator

Definition at line 27 of file ClusterTPAssociation.h.

Definition at line 23 of file ClusterTPAssociation.h.

Definition at line 26 of file ClusterTPAssociation.h.

Definition at line 24 of file ClusterTPAssociation.h.

Definition at line 28 of file ClusterTPAssociation.h.

Definition at line 25 of file ClusterTPAssociation.h.

Constructor & Destructor Documentation

ClusterTPAssociation::ClusterTPAssociation ( )
inline

Definition at line 30 of file ClusterTPAssociation.h.

30 {}
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:15
ClusterTPAssociation::ClusterTPAssociation ( const edm::ProductID mappedProductId)
inlineexplicit

Definition at line 32 of file ClusterTPAssociation.h.

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

Member Function Documentation

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

Definition at line 34 of file ClusterTPAssociation.h.

References begin, edm::VecArray< T, N >::emplace_back(), end, 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:20
void emplace_back(Args &&...args)
Definition: VecArray.h:90
#define end
Definition: vmac.h:39
#define begin
Definition: vmac.h:32
edm::VecArray< edm::ProductID, 2 > keyProductIDs_
const_iterator ClusterTPAssociation::begin ( void  ) const
inline

Definition at line 60 of file ClusterTPAssociation.h.

References map_.

60 { return map_.begin(); }
const_iterator ClusterTPAssociation::cbegin ( ) const
inline

Definition at line 61 of file ClusterTPAssociation.h.

References map_.

61 { return map_.cbegin(); }
const_iterator ClusterTPAssociation::cend ( ) const
inline

Definition at line 63 of file ClusterTPAssociation.h.

References map_.

63 { return map_.end(); }
void ClusterTPAssociation::checkKeyProductID ( const OmniClusterRef key) const
inline

Definition at line 72 of file ClusterTPAssociation.h.

References checkKeyProductID(), and OmniClusterRef::id().

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

72 { checkKeyProductID(key.id()); }
void checkKeyProductID(const OmniClusterRef &key) const
edm::ProductID id() const
void ClusterTPAssociation::checkKeyProductID ( const edm::ProductID id) const

Definition at line 4 of file ClusterTPAssociation.cc.

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

4  {
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:20
#define end
Definition: vmac.h:39
constexpr size_type size() const noexcept
Definition: VecArray.h:70
#define begin
Definition: vmac.h:32
edm::VecArray< edm::ProductID, 2 > keyProductIDs_
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:15
void checkMappedProductID(const edm::HandleBase &mappedHandle) const
void ClusterTPAssociation::checkMappedProductID ( const TrackingParticleRef tp) const
inline

Definition at line 76 of file ClusterTPAssociation.h.

References checkMappedProductID(), and edm::Ref< C, T, F >::id().

Referenced by checkMappedProductID().

76 { checkMappedProductID(tp.id()); }
ProductID id() const
Accessor for product ID.
Definition: Ref.h:257
void checkMappedProductID(const edm::HandleBase &mappedHandle) const
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") << "ClusterTPAssociation has TrackingParticles with ProductID " << mappedProductId_ << ", but got TrackingParticleRef/Handle/ProductID with ID " << id << ". This is typically caused by a configuration error.";
22  }
23 }
edm::ProductID mappedProductId_
static bool ClusterTPAssociation::compare ( const value_type i,
const value_type j 
)
inlinestaticprivate

Definition at line 80 of file ClusterTPAssociation.h.

Referenced by compareSort(), and equal_range().

80  {
81  return i.first.rawIndex() > j.first.rawIndex();
82  }
static bool ClusterTPAssociation::compareSort ( const value_type i,
const value_type j 
)
inlinestaticprivate

Definition at line 84 of file ClusterTPAssociation.h.

References compare().

Referenced by sortAndUnique().

84  {
85  // For sorting compare also TrackingParticle keys in order to
86  // remove duplicate matches
87  return compare(i, j) || (i.first.rawIndex() == j.first.rawIndex() && i.second.key() > j.second.key());
88  }
static bool compare(const value_type &i, const value_type &j)
void ClusterTPAssociation::emplace_back ( const OmniClusterRef cluster,
const TrackingParticleRef tp 
)
inline

Definition at line 41 of file ClusterTPAssociation.h.

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

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

Definition at line 57 of file ClusterTPAssociation.h.

References map_.

Referenced by QuickTrackAssociatorByHitsImpl::associateTrack().

57 { return map_.empty(); }
const_iterator ClusterTPAssociation::end ( void  ) const
inline

Definition at line 62 of file ClusterTPAssociation.h.

References map_.

62 { return map_.end(); }
range ClusterTPAssociation::equal_range ( const OmniClusterRef key) const
inline

Definition at line 65 of file ClusterTPAssociation.h.

References checkKeyProductID(), compare(), and map_.

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

65  {
66  checkKeyProductID(key);
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
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_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(); }
void ClusterTPAssociation::sortAndUnique ( )
inline

Definition at line 46 of file ClusterTPAssociation.h.

References compareSort(), plotBeamSpotDB::last, map_, 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:25
static bool compareSort(const value_type &i, const value_type &j)
void ClusterTPAssociation::swap ( ClusterTPAssociation other)
inline

Definition at line 52 of file ClusterTPAssociation.h.

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

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

Member Data Documentation

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

Definition at line 91 of file ClusterTPAssociation.h.

Referenced by addKeyID(), and checkKeyProductID().

map_type ClusterTPAssociation::map_
private
edm::ProductID ClusterTPAssociation::mappedProductId_
private

Definition at line 92 of file ClusterTPAssociation.h.

Referenced by checkMappedProductID(), and swap().