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...
 
int nclus
 
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 85 of file TTClusterAssociationMap.h.

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

86 {
90  nclus=0;
91 }
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 95 of file TTClusterAssociationMap.h.

95 {}

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 310 of file TTClusterAssociationMap.h.

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

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

311 {
312  if ( this->isGenuine( aCluster ) )
313  {
314  return this->findTrackingParticlePtrs( aCluster ).at(0);
315  }
316 
318  return *temp;
319 }
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 112 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().

113 {
115  {
116  return clusterToTrackingParticleVectorMap.find( aCluster )->second;
117  }
118 
119  std::vector< edm::Ptr< TrackingParticle > > tempVector;
120  tempVector.clear();
121  return tempVector;
122 }
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 99 of file TTClusterAssociationMap.h.

References TTClusterAssociationMap< T >::trackingParticleToClusterVectorMap.

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

100 {
101  if ( trackingParticleToClusterVectorMap.find( aTrackingParticle ) != trackingParticleToClusterVectorMap.end() )
102  {
103  return trackingParticleToClusterVectorMap.find( aTrackingParticle )->second;
104  }
105 
106  std::vector< edm::Ref< edmNew::DetSetVector< TTCluster< T > >, TTCluster< T > > > tempVector;
107  tempVector.clear();
108  return tempVector;
109 }
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 257 of file TTClusterAssociationMap.h.

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

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

258 {
260  std::vector< edm::Ptr< TrackingParticle > > theseTrackingParticles = this->findTrackingParticlePtrs( aCluster );
261 
263  if ( theseTrackingParticles.empty())
264  return false;
265 
266 
267  bool genuineClu = this->isGenuine( aCluster );
268  bool unknownClu = this->isUnknown( aCluster );
269 
270  if (genuineClu || unknownClu) return false;
271 
272  return true;
273 
275  unsigned int nullTPs = 0;
276  unsigned int goodDifferentTPs = 0;
277  std::vector< const TrackingParticle* > tpAddressVector;
278 
280  for ( unsigned int itp = 0; itp < theseTrackingParticles.size(); itp++ )
281  {
283  edm::Ptr< TrackingParticle > curTP = theseTrackingParticles.at(itp);
284 
286  if ( curTP.isNull() )
287  {
288  nullTPs++;
289  }
290  else
291  {
294  tpAddressVector.push_back( curTP.get() );
295  }
296  }
297 
299  std::sort( tpAddressVector.begin(), tpAddressVector.end() );
300  tpAddressVector.erase( std::unique( tpAddressVector.begin(), tpAddressVector.end() ), tpAddressVector.end() );
301  goodDifferentTPs = tpAddressVector.size();
302 
305  //return ( ( nullTPs == 0 && goodDifferentTPs > 1 ) || ( nullTPs > 0 && goodDifferentTPs > 0 ) );
306  return (goodDifferentTPs > 1);
307 }
T const * get() const
Returns C++ pointer to the item.
Definition: Ptr.h:159
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.
def unique(seq, keepstr=True)
Definition: tier0.py:25
bool isNull() const
Checks for null.
Definition: Ptr.h:164
bool isUnknown(edm::Ref< edmNew::DetSetVector< TTCluster< T > >, TTCluster< T > > aCluster) const
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 | CNEW SV 060617

N / D–> | 0 | 1 | >1 (with 1 TP getting >99 of the total pT) | >1

0 | U | G | G | C

>0 | U | G | G | 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

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

Definition at line 148 of file TTClusterAssociationMap.h.

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

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

149 {
150 
151 
153  std::vector< edm::Ptr< TrackingParticle > > theseTrackingParticles = this->findTrackingParticlePtrs( aCluster );
154 
155 
156 
158  if ( theseTrackingParticles.empty() )
159  return false;
160 
162  unsigned int nullTPs = 0;
163  unsigned int goodDifferentTPs = 0;
164  std::vector< const TrackingParticle* > tpAddressVector;
165 
166  std::vector<float> tp_mom;
167 
168  float tp_tot=0;
169 
171  for ( const auto& tp : theseTrackingParticles )
172  {
174  edm::Ptr< TrackingParticle > curTP = tp;
175 
177  if ( curTP.isNull() )
178  {
179  // nullTPs++;
180  tp_mom.push_back(0);
181  }
182  else
183  {
184  tp_mom.push_back(curTP.get()->p4().pt());
185  tp_tot+=curTP.get()->p4().pt();
186  }
187  }
188 
189  if (tp_tot==0) return false;
190 
191  for ( unsigned int itp = 0; itp < theseTrackingParticles.size(); itp++ )
192  {
194  edm::Ptr< TrackingParticle > curTP = theseTrackingParticles.at(itp);
195 
197  if ( tp_mom.at(itp) <= 0.01*tp_tot)
198  {
199  nullTPs++;
200  }
201  else
202  {
205  tpAddressVector.push_back( curTP.get() );
206  }
207  }
208 
209 
211  std::sort( tpAddressVector.begin(), tpAddressVector.end() );
212  tpAddressVector.erase( std::unique( tpAddressVector.begin(), tpAddressVector.end() ), tpAddressVector.end() );
213  goodDifferentTPs = tpAddressVector.size();
214 
215  return ( goodDifferentTPs == 1 );
216 }
const LorentzVector & p4() const
Four-momentum Lorentz vector. Note this is taken from the first SimTrack only.
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:25
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 219 of file TTClusterAssociationMap.h.

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

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

220 {
222  std::vector< edm::Ptr< TrackingParticle > > theseTrackingParticles = this->findTrackingParticlePtrs( aCluster );
223 
225  if ( theseTrackingParticles.empty() )
226  return true;
227 
229  unsigned int goodDifferentTPs = 0;
230  std::vector< const TrackingParticle* > tpAddressVector;
231 
233  for ( unsigned int itp = 0; itp < theseTrackingParticles.size(); itp++ )
234  {
236  edm::Ptr< TrackingParticle > curTP = theseTrackingParticles.at(itp);
237 
239  if ( !curTP.isNull() )
240  {
243  tpAddressVector.push_back( curTP.get() );
244  }
245  }
246 
248  std::sort( tpAddressVector.begin(), tpAddressVector.end() );
249  tpAddressVector.erase( std::unique( tpAddressVector.begin(), tpAddressVector.end() ), tpAddressVector.end() );
250  goodDifferentTPs = tpAddressVector.size();
251 
253  return ( goodDifferentTPs == 0 );
254 }
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:25
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>
int TTClusterAssociationMap< T >::nclus
private
template<typename T>
std::map< edm::Ptr< TrackingParticle >, std::vector< edm::Ref< edmNew::DetSetVector< TTCluster< T > >, TTCluster< T > > > > TTClusterAssociationMap< T >::trackingParticleToClusterVectorMap
private