TrackToTrackingParticleAssociator that associates by hits a bit quicker than the normal TrackAssociatorByHitsImpl class. More...
#include <QuickTrackAssociatorByHitsImpl.h>
Public Types | |
enum | SimToRecoDenomType { denomnone, denomsim, denomreco } |
Private Types | |
typedef std::pair< uint32_t, EncodedEventId > | SimTrackIdentifiers |
This is enough information to uniquely identify a sim track. More... | |
typedef edm::IndexSet | TrackingParticleRefKeySet |
Set for TrackingParticleRef keys. More... | |
Private Member Functions | |
template<class T_TrackCollection , class T_TrackingParticleCollection , class T_hitOrClusterAssociator > | |
reco::RecoToSimCollection | associateRecoToSimImplementation (const T_TrackCollection &trackCollection, const T_TrackingParticleCollection &trackingParticleCollection, const TrackingParticleRefKeySet *trackingParticleKeys, T_hitOrClusterAssociator hitOrClusterAssociator) const |
The method that does the work for both overloads of associateRecoToSim. More... | |
template<class T_TrackCollection , class T_TrackingParticleCollection , class T_hitOrClusterAssociator > | |
reco::SimToRecoCollection | associateSimToRecoImplementation (const T_TrackCollection &trackCollection, const T_TrackingParticleCollection &trackingParticleCollection, const TrackingParticleRefKeySet *trackingParticleKeys, T_hitOrClusterAssociator hitOrClusterAssociator) const |
The method that does the work for both overloads of associateSimToReco. More... | |
template<typename T_TPCollection , typename iter > | |
std::vector< std::pair< edm::Ref< TrackingParticleCollection >, double > > | associateTrack (const ClusterTPAssociation &clusterToTPMap, const T_TPCollection &trackingParticles, const TrackingParticleRefKeySet *trackingParticleKeys, iter begin, iter end) const |
Returns the TrackingParticle that has the most associated hits to the given track. More... | |
template<typename T_TPCollection , typename iter > | |
std::vector< std::pair< edm::Ref< TrackingParticleCollection >, double > > | associateTrack (const TrackerHitAssociator &hitAssociator, const T_TPCollection &trackingParticles, const TrackingParticleRefKeySet *trackingParticleKeys, iter begin, iter end) const |
Returns the TrackingParticle that has the most associated hits to the given track. More... | |
template<typename iter > | |
std::vector< std::pair< SimTrackIdentifiers, double > > | getAllSimTrackIdentifiers (const TrackerHitAssociator &hitAssociator, iter begin, iter end) const |
Returns a vector of pairs where first is a SimTrackIdentifiers (see typedef above) and second is the number of hits that came from that sim track. More... | |
template<typename iter > | |
double | getDoubleCount (const ClusterTPAssociation &clusterToTPList, iter begin, iter end, TrackingParticleRef associatedTrackingParticle) const |
Overload for when using cluster to TrackingParticle association list. More... | |
template<typename iter > | |
double | getDoubleCount (const TrackerHitAssociator &hitAssociator, iter begin, iter end, TrackingParticleRef associatedTrackingParticle) const |
This method was copied almost verbatim from the standard TrackAssociatorByHits. More... | |
bool | trackingParticleContainsIdentifier (const TrackingParticle *pTrackingParticle, const SimTrackIdentifiers &identifier) const |
Returns true if the supplied TrackingParticle has the supplied g4 track identifiers. More... | |
double | weightedNumberOfTrackClusters (const reco::Track &track, const ClusterTPAssociation &) const |
double | weightedNumberOfTrackClusters (const reco::Track &track, const TrackerHitAssociator &) const |
double | weightedNumberOfTrackClusters (const TrajectorySeed &seed, const ClusterTPAssociation &) const |
double | weightedNumberOfTrackClusters (const TrajectorySeed &seed, const TrackerHitAssociator &) const |
template<typename iter > | |
double | weightedNumberOfTrackClusters (iter begin, iter end) const |
Static Private Member Functions | |
static bool | tpIntPairGreater (std::pair< edm::Ref< TrackingParticleCollection >, size_t > i, std::pair< edm::Ref< TrackingParticleCollection >, size_t > j) |
Private Attributes | |
bool | absoluteNumberOfHits_ |
const ClusterTPAssociation * | clusterToTPMap_ |
double | cutRecoToSim_ |
std::unique_ptr< const TrackerHitAssociator > | hitAssociator_ |
double | pixelHitWeight_ |
edm::EDProductGetter const * | productGetter_ |
creates either a ClusterTPAssociation OR a TrackerHitAssociator and stores it in the provided unique_ptr. The other will be null. More... | |
double | puritySimToReco_ |
double | qualitySimToReco_ |
SimToRecoDenomType | simToRecoDenominator_ |
bool | threeHitTracksAreSpecial_ |
TrackToTrackingParticleAssociator that associates by hits a bit quicker than the normal TrackAssociatorByHitsImpl class.
NOTE - Doesn't implement the TrackCandidate association methods (from TrackAssociatorBase) so will always return empty associations for those.
This track associator (mostly) does the same as TrackAssociatorByHitsImpl, but faster. I've tested it a fair bit and can't find any differences between the results of this and the standard TrackAssociatorByHitsImpl.
Configuration parameters:
AbsoluteNumberOfHits - bool - if true, Quality_SimToReco and Cut_RecoToSim are the absolute number of shared hits required for association, not the percentage.
Quality_SimToReco - double - The minimum amount of shared hits required, as a percentage of either the reconstructed hits or simulated hits (see SimToRecoDenominator), for the track to be considered associated during a call to associateSimToReco. See also AbsoluteNumberOfHits.
Purity_SimToReco - double - The minimum amount of shared hits required, as a percentage of the reconstructed hits, for the track to be considered associated during a call to associateSimToReco. Has no effect if AbsoluteNumberOfHits is true.
Cut_RecoToSim - double - The minimum amount of shared hits required, as a percentage of the reconstructed hits, for the track to be considered associated during a call to associateRecoToSim. See also AbsoluteNumberOfHits.
ThreeHitTracksAreSpecial - bool - If true, tracks with 3 hits must have all their hits associated.
SimToRecoDenominator - string - Must be either "sim" or "reco". If "sim" Quality_SimToReco is the percentage of simulated hits that need to be shared. If "reco" then it's the percentage of reconstructed hits (i.e. same as Purity_SimToReco).
associatePixel - bool - Passed on to the hit associator.
associateStrip - bool - Passed on to the hit associator.
requireStoredHits - bool - Whether or not to insist all TrackingParticles have at least one PSimHit. The PSimHits are not required for the association, but the old TrackAssociatorByHitsImpl still had this requirement. Storing PSimHits in the TrackingParticle is now optional (see TrackingTruthAccumulator which replaces TrackingTruthProducer). Having requireStoredHits set to true will mean no TrackingParticles will be associated if you have chosen not to store the hits. The flag is only kept in order to retain the old behaviour which can give very slightly different results.
Note that the TrackAssociatorByHitsImpl parameters UseGrouped and UseSplitting are not used.
Definition at line 66 of file QuickTrackAssociatorByHitsImpl.h.
|
private |
This is enough information to uniquely identify a sim track.
Definition at line 104 of file QuickTrackAssociatorByHitsImpl.h.
Set for TrackingParticleRef keys.
Definition at line 106 of file QuickTrackAssociatorByHitsImpl.h.
Enumerator | |
---|---|
denomnone | |
denomsim | |
denomreco |
Definition at line 68 of file QuickTrackAssociatorByHitsImpl.h.
QuickTrackAssociatorByHitsImpl::QuickTrackAssociatorByHitsImpl | ( | edm::EDProductGetter const & | productGetter, |
std::unique_ptr< const TrackerHitAssociator > | hitAssoc, | ||
const ClusterTPAssociation * | clusterToTPMap, | ||
bool | absoluteNumberOfHits, | ||
double | qualitySimToReco, | ||
double | puritySimToReco, | ||
double | cutRecoToSim, | ||
double | pixelHitWeight, | ||
bool | threeHitTracksAreSpecial, | ||
SimToRecoDenomType | simToRecoDenominator | ||
) |
Definition at line 93 of file QuickTrackAssociatorByHitsImpl.cc.
|
override |
Definition at line 115 of file QuickTrackAssociatorByHitsImpl.cc.
References associateRecoToSimImplementation(), clusterToTPMap_, and hitAssociator_.
|
override |
Definition at line 591 of file QuickTrackAssociatorByHitsImpl.cc.
References funct::abs(), absoluteNumberOfHits_, associateTrack(), clusterToTPMap_, cutRecoToSim_, getDoubleCount(), hitAssociator_, mps_fire::i, edm::AssociationMap< Tag >::insert(), LogTrace, TrajectorySeed::nHits(), edm::AssociationMap< Tag >::post_insert(), productGetter_, qcdUeDQM_cfi::quality, TrajectorySeed::recHits(), edm::AssociationMap< Tag >::size(), threeHitTracksAreSpecial_, and weightedNumberOfTrackClusters().
|
overridevirtual |
Association Reco To Sim with Collections.
Implements reco::TrackToTrackingParticleAssociatorBaseImpl.
Definition at line 139 of file QuickTrackAssociatorByHitsImpl.cc.
References associateRecoToSimImplementation(), clusterToTPMap_, hitAssociator_, duplicaterechits_cfi::trackCollection, and PrimaryVertexAnalyzer4PUSlimmed_cfi::trackingParticleCollection.
|
private |
The method that does the work for both overloads of associateRecoToSim.
Parts that actually rely on the type of the collections are delegated out to overloaded functions in the unnamed namespace of the .cc file. Parts that rely on the type of T_hitOrClusterAssociator are delegated out to overloaded methods.
Definition at line 166 of file QuickTrackAssociatorByHitsImpl.cc.
References funct::abs(), absoluteNumberOfHits_, associateTrack(), cutRecoToSim_, getDoubleCount(), mps_fire::i, edm::AssociationMap< Tag >::insert(), reco::TrackBase::numberOfValidHits(), edm::AssociationMap< Tag >::post_insert(), productGetter_, qcdUeDQM_cfi::quality, reco::Track::recHitsBegin(), reco::Track::recHitsEnd(), threeHitTracksAreSpecial_, duplicaterechits_cfi::trackCollection, PrimaryVertexAnalyzer4PUSlimmed_cfi::trackingParticleCollection, and weightedNumberOfTrackClusters().
Referenced by associateRecoToSim().
|
override |
Definition at line 127 of file QuickTrackAssociatorByHitsImpl.cc.
References associateSimToRecoImplementation(), clusterToTPMap_, and hitAssociator_.
|
override |
Definition at line 661 of file QuickTrackAssociatorByHitsImpl.cc.
References funct::abs(), absoluteNumberOfHits_, associateTrack(), clusterToTPMap_, denomreco, denomsim, getDoubleCount(), hitAssociator_, mps_fire::i, edm::AssociationMap< Tag >::insert(), LogTrace, edm::AssociationMap< Tag >::post_insert(), productGetter_, puritySimToReco_, qcdUeDQM_cfi::quality, qualitySimToReco_, TrajectorySeed::recHits(), simToRecoDenominator_, edm::AssociationMap< Tag >::size(), threeHitTracksAreSpecial_, and weightedNumberOfTrackClusters().
|
overridevirtual |
Association Sim To Reco with Collections.
Implements reco::TrackToTrackingParticleAssociatorBaseImpl.
Definition at line 152 of file QuickTrackAssociatorByHitsImpl.cc.
References associateSimToRecoImplementation(), clusterToTPMap_, hitAssociator_, duplicaterechits_cfi::trackCollection, and PrimaryVertexAnalyzer4PUSlimmed_cfi::trackingParticleCollection.
|
private |
The method that does the work for both overloads of associateSimToReco.
Parts that actually rely on the type of the collections are delegated out to overloaded functions in the unnamed namespace of the .cc file. Parts that rely on the type of T_hitOrClusterAssociator are delegated out to overloaded methods.
Definition at line 228 of file QuickTrackAssociatorByHitsImpl.cc.
References funct::abs(), absoluteNumberOfHits_, associateTrack(), denomreco, denomsim, getDoubleCount(), mps_fire::i, edm::AssociationMap< Tag >::insert(), edm::AssociationMap< Tag >::post_insert(), productGetter_, puritySimToReco_, qcdUeDQM_cfi::quality, qualitySimToReco_, reco::Track::recHitsBegin(), reco::Track::recHitsEnd(), simToRecoDenominator_, threeHitTracksAreSpecial_, duplicaterechits_cfi::trackCollection, PrimaryVertexAnalyzer4PUSlimmed_cfi::trackingParticleCollection, and weightedNumberOfTrackClusters().
Referenced by associateSimToReco().
|
private |
Returns the TrackingParticle that has the most associated hits to the given track.
See the notes for the other overload for the return type.
Note that the trackingParticles parameter is not actually required since all the information is in clusterToTPMap, but the method signature has to match the other overload because it is called from a templated method.
Definition at line 352 of file QuickTrackAssociatorByHitsImpl.cc.
References begin, ClusterTPAssociation::empty(), end, ClusterTPAssociation::equal_range(), edm::IndexSet::has(), track_associator::hitsToClusterRefs(), edm::Ref< C, T, F >::key(), pixelHitWeight_, and FastTimerService_cff::range.
|
private |
Returns the TrackingParticle that has the most associated hits to the given track.
Return value is a vector of pairs, where first is an edm::Ref to the associated TrackingParticle, and second is the number of associated hits.
Definition at line 307 of file QuickTrackAssociatorByHitsImpl.cc.
References begin, end, getAllSimTrackIdentifiers(), TrackQuality_cff::hitAssociator, mps_fire::i, trackingParticleContainsIdentifier(), and muonClassificationByHits_cfi::trackingParticles.
Referenced by associateRecoToSim(), associateRecoToSimImplementation(), associateSimToReco(), and associateSimToRecoImplementation().
|
private |
Returns a vector of pairs where first is a SimTrackIdentifiers (see typedef above) and second is the number of hits that came from that sim track.
This is used so that the TrackingParticle collection only has to be looped over once to search for each sim track, rather than once per hit. E.g. If all the hits in the reco track come from the same sim track, then there will only be one entry with second as the number of hits in the track.
Definition at line 430 of file QuickTrackAssociatorByHitsImpl.cc.
References begin, end, TrackingRecHit::geographicalId(), track_associator::getHitFromIter(), TrackQuality_cff::hitAssociator, PixelSubdetector::PixelBarrel, PixelSubdetector::PixelEndcap, pixelHitWeight_, DetId::subdetId(), and mps_merge::weight.
Referenced by associateTrack().
|
private |
Overload for when using cluster to TrackingParticle association list.
Definition at line 539 of file QuickTrackAssociatorByHitsImpl.cc.
References ClusterTPAssociation::equal_range(), TrackingRecHit::geographicalId(), track_associator::getHitFromIter(), track_associator::hitsToClusterRefs(), PixelSubdetector::PixelBarrel, PixelSubdetector::PixelEndcap, pixelHitWeight_, FastTimerService_cff::range, and DetId::subdetId().
|
private |
This method was copied almost verbatim from the standard TrackAssociatorByHits.
Modified 01/May/2014 to take the TrackerHitAssociator as a parameter rather than using a member.
Definition at line 494 of file QuickTrackAssociatorByHitsImpl.cc.
References spr::find(), TrackingRecHit::geographicalId(), track_associator::getHitFromIter(), TrackQuality_cff::hitAssociator, PixelSubdetector::PixelBarrel, PixelSubdetector::PixelEndcap, pixelHitWeight_, and DetId::subdetId().
Referenced by associateRecoToSim(), associateRecoToSimImplementation(), associateSimToReco(), and associateSimToRecoImplementation().
|
inlinestaticprivate |
Definition at line 109 of file QuickTrackAssociatorByHitsImpl.h.
References mps_fire::i, and dqmiolumiharvest::j.
|
private |
Returns true if the supplied TrackingParticle has the supplied g4 track identifiers.
Definition at line 476 of file QuickTrackAssociatorByHitsImpl.cc.
References TrackingParticle::g4Track_begin(), and TrackingParticle::g4Track_end().
Referenced by associateTrack().
|
private |
Definition at line 776 of file QuickTrackAssociatorByHitsImpl.cc.
References HLT_2018_cff::track, and weightedNumberOfTrackClusters().
|
private |
Definition at line 754 of file QuickTrackAssociatorByHitsImpl.cc.
References AlCaHLTBitMon_ParallelJobs::p, pixelHitWeight_, and HLT_2018_cff::track.
Referenced by associateRecoToSim(), associateRecoToSimImplementation(), associateSimToReco(), associateSimToRecoImplementation(), and weightedNumberOfTrackClusters().
|
private |
Definition at line 780 of file QuickTrackAssociatorByHitsImpl.cc.
References SurveyInfoScenario_cff::seed, and weightedNumberOfTrackClusters().
|
private |
Definition at line 762 of file QuickTrackAssociatorByHitsImpl.cc.
References TrackingRecHit::geographicalId(), track_associator::getHitFromIter(), PixelSubdetector::PixelBarrel, PixelSubdetector::PixelEndcap, pixelHitWeight_, SurveyInfoScenario_cff::seed, DetId::subdetId(), and mps_merge::weight.
|
private |
Definition at line 787 of file QuickTrackAssociatorByHitsImpl.cc.
References begin, end, TrackingRecHit::geographicalId(), track_associator::getHitFromIter(), track_associator::hitsToClusterRefs(), LogTrace, PixelSubdetector::PixelBarrel, PixelSubdetector::PixelEndcap, pixelHitWeight_, DetId::rawId(), DetId::subdetId(), and mps_merge::weight.
|
private |
Definition at line 233 of file QuickTrackAssociatorByHitsImpl.h.
Referenced by associateRecoToSim(), associateRecoToSimImplementation(), associateSimToReco(), and associateSimToRecoImplementation().
|
private |
Definition at line 225 of file QuickTrackAssociatorByHitsImpl.h.
Referenced by associateRecoToSim(), and associateSimToReco().
|
private |
Definition at line 230 of file QuickTrackAssociatorByHitsImpl.h.
Referenced by associateRecoToSim(), and associateRecoToSimImplementation().
|
private |
Definition at line 224 of file QuickTrackAssociatorByHitsImpl.h.
Referenced by associateRecoToSim(), and associateSimToReco().
|
private |
Definition at line 229 of file QuickTrackAssociatorByHitsImpl.h.
Referenced by associateTrack(), getAllSimTrackIdentifiers(), getDoubleCount(), and weightedNumberOfTrackClusters().
|
private |
creates either a ClusterTPAssociation OR a TrackerHitAssociator and stores it in the provided unique_ptr. The other will be null.
A decision is made whether to create a ClusterTPAssociation or a TrackerHitAssociator depending on how this track associator was configured. If the ClusterTPAssociation couldn't be fetched from the event then it falls back to creating a TrackerHitAssociator.
Only one type will be created, never both. The other unique_ptr reference will be null so check for that and decide which to use.
N.B. The value of useClusterTPAssociation_ should not be used to decide which of the two pointers to use. If the cluster to TrackingParticle couldn't be retrieved from the event then pClusterToTPMap will be null but useClusterTPAssociation_ is no longer changed to false.
Definition at line 223 of file QuickTrackAssociatorByHitsImpl.h.
Referenced by associateRecoToSim(), associateRecoToSimImplementation(), associateSimToReco(), and associateSimToRecoImplementation().
|
private |
Definition at line 228 of file QuickTrackAssociatorByHitsImpl.h.
Referenced by associateSimToReco(), and associateSimToRecoImplementation().
|
private |
Definition at line 227 of file QuickTrackAssociatorByHitsImpl.h.
Referenced by associateSimToReco(), and associateSimToRecoImplementation().
|
private |
Definition at line 231 of file QuickTrackAssociatorByHitsImpl.h.
Referenced by associateSimToReco(), and associateSimToRecoImplementation().
|
private |
Definition at line 232 of file QuickTrackAssociatorByHitsImpl.h.
Referenced by associateRecoToSim(), associateRecoToSimImplementation(), associateSimToReco(), and associateSimToRecoImplementation().