File indexing completed on 2024-08-09 23:47:42
0001
0002
0003
0004
0005
0006
0007
0008 #include "SimDataFormats/Associations/interface/TTTrackAssociationMap.h"
0009
0010
0011 template <>
0012 const TrackingParticlePtr& TTTrackAssociationMap<Ref_Phase2TrackerDigi_>::findTrackingParticlePtr(
0013 TTTrackPtr aTrack) const {
0014 if (trackToTrackingParticleMap_.find(aTrack) != trackToTrackingParticleMap_.end()) {
0015 return trackToTrackingParticleMap_.find(aTrack)->second;
0016 } else {
0017 return nullTrackingParticlePtr_;
0018 }
0019 }
0020
0021 template <>
0022 const std::vector<TTTrackPtr>& TTTrackAssociationMap<Ref_Phase2TrackerDigi_>::findTTTrackPtrs(
0023 TrackingParticlePtr aTrackingParticle) const {
0024 if (trackingParticleToTrackVectorMap_.find(aTrackingParticle) != trackingParticleToTrackVectorMap_.end()) {
0025 return trackingParticleToTrackVectorMap_.find(aTrackingParticle)->second;
0026 } else {
0027 return nullVecTTTrackPtr_;
0028 }
0029 }
0030
0031
0032 template <>
0033 bool TTTrackAssociationMap<Ref_Phase2TrackerDigi_>::isLooselyGenuine(TTTrackPtr aTrack) const {
0034
0035 if ((this->findTrackingParticlePtr(aTrack)).isNull())
0036 return false;
0037
0038 return true;
0039 }
0040
0041
0042 template <>
0043 bool TTTrackAssociationMap<Ref_Phase2TrackerDigi_>::isGenuine(TTTrackPtr aTrack) const {
0044
0045 if ((this->findTrackingParticlePtr(aTrack)).isNull())
0046 return false;
0047
0048
0049 const std::vector<TTStubRef>& TRK_Stubs = aTrack->getStubRefs();
0050 const std::vector<TTStubRef>& TP_Stubs =
0051 theStubAssociationMap_->findTTStubRefs(this->findTrackingParticlePtr(aTrack));
0052
0053 bool one2SStub = false;
0054 for (unsigned int js = 0; js < TRK_Stubs.size(); js++) {
0055
0056
0057
0058
0059
0060 if (std::find(TP_Stubs.begin(), TP_Stubs.end(), TRK_Stubs.at(js)) == TP_Stubs.end()) {
0061 if (!AllowOneFalse2SStub || TRK_Stubs.at(js)->moduleTypePS() || one2SStub)
0062 {
0063 return false;
0064 } else {
0065 one2SStub = true;
0066 }
0067 }
0068 }
0069
0070 return true;
0071 }
0072
0073 template <>
0074 bool TTTrackAssociationMap<Ref_Phase2TrackerDigi_>::isCombinatoric(TTTrackPtr aTrack) const {
0075
0076 if (this->isLooselyGenuine(aTrack))
0077 return false;
0078
0079 if (this->isUnknown(aTrack))
0080 return false;
0081
0082 return true;
0083 }
0084
0085 template <>
0086 bool TTTrackAssociationMap<Ref_Phase2TrackerDigi_>::isUnknown(TTTrackPtr aTrack) const {
0087
0088 int unknownstubs = 0;
0089
0090 const std::vector<TTStubRef>& theseStubs = aTrack->getStubRefs();
0091 for (unsigned int i = 0; i < theseStubs.size(); i++) {
0092 if (theStubAssociationMap_->isUnknown(theseStubs.at(i)) == false) {
0093 ++unknownstubs;
0094 if (unknownstubs >= 2)
0095 return false;
0096 }
0097 }
0098
0099 return true;
0100 }
0101
0102 template <>
0103 void TTTrackAssociationMap<Ref_Phase2TrackerDigi_>::setAllowOneFalse2SStub(bool allowFalse2SStub) {
0104 AllowOneFalse2SStub = allowFalse2SStub;
0105 }
0106
0107 template <>
0108 bool TTTrackAssociationMap<Ref_Phase2TrackerDigi_>::getAllowOneFalse2SStub() {
0109 return AllowOneFalse2SStub;
0110 }