CMS 3D CMS Logo

List of all members | Public Member Functions | Private Attributes
TTClusterAssociationMap< T > Class Template Reference

NOTE: this is needed even if it seems not. More...

#include <TTClusterAssociationMap.h>

Public Member Functions

edm::Ptr< TrackingParticlefindTrackingParticlePtr (edm::Ref< edmNew::DetSetVector< TTCluster< T > >, TTCluster< T > > aCluster) const
 
std::vector< edm::Ptr< TrackingParticle > > findTrackingParticlePtrs (edm::Ref< edmNew::DetSetVector< TTCluster< T > >, TTCluster< T > > aCluster) const
 Operations. More...
 
std::vector< edm::Ref< edmNew::DetSetVector< TTCluster< T > >, TTCluster< T > > > findTTClusterRefs (edm::Ptr< TrackingParticle > aTrackingParticle) const
 Operations. More...
 
std::map< edm::Ptr< TrackingParticle >, std::vector< edm::Ref< edmNew::DetSetVector< TTCluster< T > >, TTCluster< T > > > > getTrackingParticleToTTClustersMap () const
 
std::map< edm::Ref< edmNew::DetSetVector< TTCluster< T > >, TTCluster< T > >, std::vector< edm::Ptr< TrackingParticle > > > getTTClusterToTrackingParticlesMap () const
 Maps. More...
 
bool isCombinatoric (edm::Ref< edmNew::DetSetVector< TTCluster< T > >, TTCluster< T > > aCluster) const
 
bool isGenuine (edm::Ref< edmNew::DetSetVector< TTCluster< T > >, TTCluster< T > > aCluster) const
 MC Truth methods. More...
 
bool isUnknown (edm::Ref< edmNew::DetSetVector< TTCluster< T > >, TTCluster< T > > aCluster) const
 
void setTrackingParticleToTTClustersMap (std::map< edm::Ptr< TrackingParticle >, std::vector< edm::Ref< edmNew::DetSetVector< TTCluster< T > >, TTCluster< T > > > > aMap)
 
void setTTClusterToTrackingParticlesMap (std::map< edm::Ref< edmNew::DetSetVector< TTCluster< T > >, TTCluster< T > >, std::vector< edm::Ptr< TrackingParticle > > > aMap)
 
 TTClusterAssociationMap ()
 Constructors. More...
 
 ~TTClusterAssociationMap ()
 Destructor. More...
 

Private Attributes

std::map< edm::Ref< edmNew::DetSetVector< TTCluster< T > >, TTCluster< T > >, std::vector< edm::Ptr< TrackingParticle > > > clusterToTrackingParticleVectorMap
 Data members. More...
 
std::map< edm::Ptr< TrackingParticle >, std::vector< edm::Ref< edmNew::DetSetVector< TTCluster< T > >, TTCluster< T > > > > trackingParticleToClusterVectorMap
 

Detailed Description

template<typename T>
class TTClusterAssociationMap< T >

NOTE: this is needed even if it seems not.

Class to store the MC truth of L1 Track Trigger clusters.

After moving from SimDataFormats to DataFormats, the template structure of the class was maintained in order to accomodate any types other than PixelDigis in case there is such a need in the future.

Author
Nicola Pozzobon
Date
2013, Jul 19

Definition at line 33 of file TTClusterAssociationMap.h.

Constructor & Destructor Documentation

template<typename T >
TTClusterAssociationMap< T >::TTClusterAssociationMap ( )

Constructors.

Close class.

Implementation of methods

Here, in the header file, the methods which do not depend on the specific type <T> that can fit the template. Other methods, with type-specific features, are implemented in the source file.Default Constructor NOTE: to be used with setSomething(...) methods

Set default data members

Definition at line 83 of file TTClusterAssociationMap.h.

References TTClusterAssociationMap< T >::clusterToTrackingParticleVectorMap, and TTClusterAssociationMap< T >::trackingParticleToClusterVectorMap.

84 {
88 }
std::map< edm::Ptr< TrackingParticle >, std::vector< edm::Ref< edmNew::DetSetVector< TTCluster< T > >, TTCluster< T > > > > trackingParticleToClusterVectorMap
std::map< edm::Ref< edmNew::DetSetVector< TTCluster< T > >, TTCluster< T > >, std::vector< edm::Ptr< TrackingParticle > > > clusterToTrackingParticleVectorMap
Data members.
template<typename T >
TTClusterAssociationMap< T >::~TTClusterAssociationMap ( )

Destructor.

Definition at line 92 of file TTClusterAssociationMap.h.

92 {}

Member Function Documentation

template<typename T >
edm::Ptr< TrackingParticle > TTClusterAssociationMap< T >::findTrackingParticlePtr ( edm::Ref< edmNew::DetSetVector< TTCluster< T > >, TTCluster< T > >  aCluster) const

Definition at line 260 of file TTClusterAssociationMap.h.

References TTClusterAssociationMap< T >::findTrackingParticlePtrs(), TTClusterAssociationMap< T >::isGenuine(), and groupFilesInBlocks::temp.

Referenced by TTClusterAssociationMap< T >::setTrackingParticleToTTClustersMap().

261 {
262  if ( this->isGenuine( aCluster ) )
263  {
264  return this->findTrackingParticlePtrs( aCluster ).at(0);
265  }
266 
268  return *temp;
269 }
bool isGenuine(edm::Ref< edmNew::DetSetVector< TTCluster< T > >, TTCluster< T > > aCluster) const
MC Truth methods.
std::vector< edm::Ptr< TrackingParticle > > findTrackingParticlePtrs(edm::Ref< edmNew::DetSetVector< TTCluster< T > >, TTCluster< T > > aCluster) const
Operations.
template<typename T >
std::vector< edm::Ptr< TrackingParticle > > TTClusterAssociationMap< T >::findTrackingParticlePtrs ( edm::Ref< edmNew::DetSetVector< TTCluster< T > >, TTCluster< T > >  aCluster) const

Operations.

Definition at line 109 of file TTClusterAssociationMap.h.

References TTClusterAssociationMap< T >::clusterToTrackingParticleVectorMap.

Referenced by TTClusterAssociationMap< T >::findTrackingParticlePtr(), TTClusterAssociationMap< T >::isCombinatoric(), TTClusterAssociationMap< T >::isGenuine(), TTClusterAssociationMap< T >::isUnknown(), and TTClusterAssociationMap< T >::setTrackingParticleToTTClustersMap().

110 {
112  {
113  return clusterToTrackingParticleVectorMap.find( aCluster )->second;
114  }
115 
116  std::vector< edm::Ptr< TrackingParticle > > tempVector;
117  tempVector.clear();
118  return tempVector;
119 }
std::map< edm::Ref< edmNew::DetSetVector< TTCluster< T > >, TTCluster< T > >, std::vector< edm::Ptr< TrackingParticle > > > clusterToTrackingParticleVectorMap
Data members.
template<typename T >
std::vector< edm::Ref< edmNew::DetSetVector< TTCluster< T > >, TTCluster< T > > > TTClusterAssociationMap< T >::findTTClusterRefs ( edm::Ptr< TrackingParticle aTrackingParticle) const

Operations.

Definition at line 96 of file TTClusterAssociationMap.h.

References TTClusterAssociationMap< T >::trackingParticleToClusterVectorMap.

Referenced by TTClusterAssociationMap< T >::setTrackingParticleToTTClustersMap().

97 {
98  if ( trackingParticleToClusterVectorMap.find( aTrackingParticle ) != trackingParticleToClusterVectorMap.end() )
99  {
100  return trackingParticleToClusterVectorMap.find( aTrackingParticle )->second;
101  }
102 
103  std::vector< edm::Ref< edmNew::DetSetVector< TTCluster< T > >, TTCluster< T > > > tempVector;
104  tempVector.clear();
105  return tempVector;
106 }
std::map< edm::Ptr< TrackingParticle >, std::vector< edm::Ref< edmNew::DetSetVector< TTCluster< T > >, TTCluster< T > > > > trackingParticleToClusterVectorMap
NOTE: this is needed even if it seems not.
Definition: TTCluster.h:27
template<typename T>
std::map< edm::Ptr< TrackingParticle >, std::vector< edm::Ref< edmNew::DetSetVector< TTCluster< T > >, TTCluster< T > > > > TTClusterAssociationMap< T >::getTrackingParticleToTTClustersMap ( ) const
inline

Definition at line 48 of file TTClusterAssociationMap.h.

References TTClusterAssociationMap< T >::trackingParticleToClusterVectorMap.

std::map< edm::Ptr< TrackingParticle >, std::vector< edm::Ref< edmNew::DetSetVector< TTCluster< T > >, TTCluster< T > > > > trackingParticleToClusterVectorMap
template<typename T>
std::map< edm::Ref< edmNew::DetSetVector< TTCluster< T > >, TTCluster< T > >, std::vector< edm::Ptr< TrackingParticle > > > TTClusterAssociationMap< T >::getTTClusterToTrackingParticlesMap ( ) const
inline

Maps.

Data members: getABC( ... ) Helper methods: findABC( ... )

Definition at line 46 of file TTClusterAssociationMap.h.

References TTClusterAssociationMap< T >::clusterToTrackingParticleVectorMap.

std::map< edm::Ref< edmNew::DetSetVector< TTCluster< T > >, TTCluster< T > >, std::vector< edm::Ptr< TrackingParticle > > > clusterToTrackingParticleVectorMap
Data members.
template<typename T >
bool TTClusterAssociationMap< T >::isCombinatoric ( edm::Ref< edmNew::DetSetVector< TTCluster< T > >, TTCluster< T > >  aCluster) const

Get the TrackingParticles

If the vector is empty, then the cluster is UNKNOWN

If we are here, it means there are some TrackingParticles

Loop over the TrackingParticles

Get the TrackingParticle

Count the NULL TrackingParticles

Store the pointers (addresses) of the TrackingParticle to be able to count how many different there are

Count how many different TrackingParticle there are

COMBINATORIC means no NULLs and more than one good TP OR, in alternative, only one good TP but non-zero NULLS

Definition at line 216 of file TTClusterAssociationMap.h.

References TTClusterAssociationMap< T >::findTrackingParticlePtrs(), edm::Ptr< T >::get(), edm::Ptr< T >::isNull(), and tier0::unique().

Referenced by TTClusterAssociationMap< T >::setTrackingParticleToTTClustersMap().

217 {
219  std::vector< edm::Ptr< TrackingParticle > > theseTrackingParticles = this->findTrackingParticlePtrs( aCluster );
220 
222  if ( theseTrackingParticles.empty() )
223  return false;
224 
226  unsigned int nullTPs = 0;
227  unsigned int goodDifferentTPs = 0;
228  std::vector< const TrackingParticle* > tpAddressVector;
229 
231  for ( unsigned int itp = 0; itp < theseTrackingParticles.size(); itp++ )
232  {
234  edm::Ptr< TrackingParticle > curTP = theseTrackingParticles.at(itp);
235 
237  if ( curTP.isNull() )
238  {
239  nullTPs++;
240  }
241  else
242  {
245  tpAddressVector.push_back( curTP.get() );
246  }
247  }
248 
250  std::sort( tpAddressVector.begin(), tpAddressVector.end() );
251  tpAddressVector.erase( std::unique( tpAddressVector.begin(), tpAddressVector.end() ), tpAddressVector.end() );
252  goodDifferentTPs = tpAddressVector.size();
253 
256  return ( ( nullTPs == 0 && goodDifferentTPs > 1 ) || ( nullTPs > 0 && goodDifferentTPs > 0 ) );
257 }
T const * get() const
Returns C++ pointer to the item.
Definition: Ptr.h:159
std::vector< edm::Ptr< TrackingParticle > > findTrackingParticlePtrs(edm::Ref< edmNew::DetSetVector< TTCluster< T > >, TTCluster< T > > aCluster) const
Operations.
def unique(seq, keepstr=True)
Definition: tier0.py:24
bool isNull() const
Checks for null.
Definition: Ptr.h:164
template<typename T >
bool TTClusterAssociationMap< T >::isGenuine ( edm::Ref< edmNew::DetSetVector< TTCluster< T > >, TTCluster< T > >  aCluster) const

MC Truth methods.

MC truth Table to define Genuine, Combinatoric and Unknown

N = number of NULL TP pointers D = number of GOOD TP pointers different from each other

N / D–> | 0 | 1 | >1

0 | U | G | C

>0 | U | C | C

Get the TrackingParticles

If the vector is empty, then the cluster is UNKNOWN

If we are here, it means there are some TrackingParticles

Loop over the TrackingParticles

Get the TrackingParticle

Count the NULL TrackingParticles

Store the pointers (addresses) of the TrackingParticle to be able to count how many different there are

Count how many different TrackingParticle there are

GENUINE means no NULLs and only one good TP

Definition at line 135 of file TTClusterAssociationMap.h.

References TTClusterAssociationMap< T >::findTrackingParticlePtrs(), edm::Ptr< T >::get(), edm::Ptr< T >::isNull(), and tier0::unique().

Referenced by TTClusterAssociationMap< T >::findTrackingParticlePtr(), and TTClusterAssociationMap< T >::setTrackingParticleToTTClustersMap().

136 {
138  std::vector< edm::Ptr< TrackingParticle > > theseTrackingParticles = this->findTrackingParticlePtrs( aCluster );
139 
141  if ( theseTrackingParticles.empty() )
142  return false;
143 
145  unsigned int nullTPs = 0;
146  unsigned int goodDifferentTPs = 0;
147  std::vector< const TrackingParticle* > tpAddressVector;
148 
150  for ( unsigned int itp = 0; itp < theseTrackingParticles.size(); itp++ )
151  {
153  edm::Ptr< TrackingParticle > curTP = theseTrackingParticles.at(itp);
154 
156  if ( curTP.isNull() )
157  {
158  nullTPs++;
159  }
160  else
161  {
164  tpAddressVector.push_back( curTP.get() );
165  }
166  }
167 
169  std::sort( tpAddressVector.begin(), tpAddressVector.end() );
170  tpAddressVector.erase( std::unique( tpAddressVector.begin(), tpAddressVector.end() ), tpAddressVector.end() );
171  goodDifferentTPs = tpAddressVector.size();
172 
174  return ( nullTPs == 0 && goodDifferentTPs == 1 );
175 }
T const * get() const
Returns C++ pointer to the item.
Definition: Ptr.h:159
std::vector< edm::Ptr< TrackingParticle > > findTrackingParticlePtrs(edm::Ref< edmNew::DetSetVector< TTCluster< T > >, TTCluster< T > > aCluster) const
Operations.
def unique(seq, keepstr=True)
Definition: tier0.py:24
bool isNull() const
Checks for null.
Definition: Ptr.h:164
template<typename T >
bool TTClusterAssociationMap< T >::isUnknown ( edm::Ref< edmNew::DetSetVector< TTCluster< T > >, TTCluster< T > >  aCluster) const

Get the TrackingParticles

If the vector is empty, then the cluster is UNKNOWN

If we are here, it means there are some TrackingParticles

Loop over the TrackingParticles

Get the TrackingParticle

Count the non-NULL TrackingParticles

Store the pointers (addresses) of the TrackingParticle to be able to count how many different there are

Count how many different TrackingParticle there are

UNKNOWN means no good TP is found

Definition at line 178 of file TTClusterAssociationMap.h.

References TTClusterAssociationMap< T >::findTrackingParticlePtrs(), edm::Ptr< T >::get(), edm::Ptr< T >::isNull(), and tier0::unique().

Referenced by TTStubAssociationMap< T >::isUnknown(), and TTClusterAssociationMap< T >::setTrackingParticleToTTClustersMap().

179 {
181  std::vector< edm::Ptr< TrackingParticle > > theseTrackingParticles = this->findTrackingParticlePtrs( aCluster );
182 
184  if ( theseTrackingParticles.empty() )
185  return true;
186 
188  unsigned int goodDifferentTPs = 0;
189  std::vector< const TrackingParticle* > tpAddressVector;
190 
192  for ( unsigned int itp = 0; itp < theseTrackingParticles.size(); itp++ )
193  {
195  edm::Ptr< TrackingParticle > curTP = theseTrackingParticles.at(itp);
196 
198  if ( !curTP.isNull() )
199  {
202  tpAddressVector.push_back( curTP.get() );
203  }
204  }
205 
207  std::sort( tpAddressVector.begin(), tpAddressVector.end() );
208  tpAddressVector.erase( std::unique( tpAddressVector.begin(), tpAddressVector.end() ), tpAddressVector.end() );
209  goodDifferentTPs = tpAddressVector.size();
210 
212  return ( goodDifferentTPs == 0 );
213 }
T const * get() const
Returns C++ pointer to the item.
Definition: Ptr.h:159
std::vector< edm::Ptr< TrackingParticle > > findTrackingParticlePtrs(edm::Ref< edmNew::DetSetVector< TTCluster< T > >, TTCluster< T > > aCluster) const
Operations.
def unique(seq, keepstr=True)
Definition: tier0.py:24
bool isNull() const
Checks for null.
Definition: Ptr.h:164
template<typename T>
void TTClusterAssociationMap< T >::setTrackingParticleToTTClustersMap ( std::map< edm::Ptr< TrackingParticle >, std::vector< edm::Ref< edmNew::DetSetVector< TTCluster< T > >, TTCluster< T > > > >  aMap)
inline
template<typename T>
void TTClusterAssociationMap< T >::setTTClusterToTrackingParticlesMap ( std::map< edm::Ref< edmNew::DetSetVector< TTCluster< T > >, TTCluster< T > >, std::vector< edm::Ptr< TrackingParticle > > >  aMap)
inline

Definition at line 51 of file TTClusterAssociationMap.h.

References TTClusterAssociationMap< T >::clusterToTrackingParticleVectorMap.

std::map< edm::Ref< edmNew::DetSetVector< TTCluster< T > >, TTCluster< T > >, std::vector< edm::Ptr< TrackingParticle > > > clusterToTrackingParticleVectorMap
Data members.

Member Data Documentation

template<typename T>
std::map< edm::Ref< edmNew::DetSetVector< TTCluster< T > >, TTCluster< T > >, std::vector< edm::Ptr< TrackingParticle > > > TTClusterAssociationMap< T >::clusterToTrackingParticleVectorMap
private
template<typename T>
std::map< edm::Ptr< TrackingParticle >, std::vector< edm::Ref< edmNew::DetSetVector< TTCluster< T > >, TTCluster< T > > > > TTClusterAssociationMap< T >::trackingParticleToClusterVectorMap
private