File indexing completed on 2023-03-17 11:25:53
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018 #ifndef L1_TRACK_TRIGGER_TRACK_ASSOCIATION_FORMAT_H
0019 #define L1_TRACK_TRIGGER_TRACK_ASSOCIATION_FORMAT_H
0020
0021 #include "DataFormats/Common/interface/Ref.h"
0022 #include "DataFormats/Common/interface/Ptr.h"
0023 #include "DataFormats/L1TrackTrigger/interface/TTTypes.h"
0024 #include "SimDataFormats/TrackingAnalysis/interface/TrackingParticleFwd.h"
0025 #include "DataFormats/Common/interface/DetSet.h"
0026 #include "DataFormats/Common/interface/DetSetVector.h"
0027 #include "DataFormats/Common/interface/DetSetVectorNew.h"
0028 #include "DataFormats/DetId/interface/DetId.h"
0029 #include "DataFormats/Phase2TrackerDigi/interface/Phase2TrackerDigi.h"
0030 #include "DataFormats/GeometryCommonDetAlgo/interface/MeasurementPoint.h"
0031 #include "DataFormats/GeometryVector/interface/GlobalPoint.h" /// NOTE: this is needed even if it seems not
0032 #include "SimDataFormats/TrackerDigiSimLink/interface/PixelDigiSimLink.h"
0033 #include "SimDataFormats/Track/interface/SimTrack.h"
0034 #include "SimDataFormats/Track/interface/SimTrackContainer.h"
0035 #include "SimDataFormats/EncodedEventId/interface/EncodedEventId.h"
0036 #include "SimDataFormats/TrackingAnalysis/interface/TrackingParticle.h"
0037 #include "SimTracker/TrackTriggerAssociation/interface/TTStubAssociationMap.h"
0038
0039
0040 template <typename T>
0041 using MapL1TrackToTP = std::map<TTTrackPtrT<T>, TrackingParticlePtr>;
0042 template <typename T>
0043 using MapTPToVecL1Track = std::map<TrackingParticlePtr, std::vector<TTTrackPtrT<T>>>;
0044
0045 template <typename T>
0046 class TTTrackAssociationMap {
0047 public:
0048
0049 TTTrackAssociationMap();
0050
0051
0052 ~TTTrackAssociationMap();
0053
0054
0055
0056 const MapL1TrackToTP<T>& getTTTrackToTrackingParticleMap() const { return trackToTrackingParticleMap_; }
0057 const MapTPToVecL1Track<T>& getTrackingParticleToTTTracksMap() const { return trackingParticleToTrackVectorMap_; }
0058
0059 void setTTTrackToTrackingParticleMap(const MapL1TrackToTP<T>& aMap) { trackToTrackingParticleMap_ = aMap; }
0060 void setTrackingParticleToTTTracksMap(const MapTPToVecL1Track<T>& aMap) { trackingParticleToTrackVectorMap_ = aMap; }
0061
0062
0063 void setTTStubAssociationMap(edm::RefProd<TTStubAssociationMap<T>> aStubAssoMap) {
0064 theStubAssociationMap_ = aStubAssoMap;
0065 }
0066
0067
0068
0069 const TrackingParticlePtr& findTrackingParticlePtr(TTTrackPtrT<T> aTrack) const;
0070
0071
0072
0073
0074 const std::vector<TTTrackPtrT<T>>& findTTTrackPtrs(TrackingParticlePtr aTrackingParticle) const;
0075
0076
0077
0078
0079
0080
0081
0082
0083
0084
0085
0086
0087 bool isGenuine(TTTrackPtrT<T> aTrack) const;
0088
0089
0090 bool isLooselyGenuine(TTTrackPtrT<T> aTrack) const;
0091
0092 bool isUnknown(TTTrackPtrT<T> aTrack) const;
0093
0094 bool isCombinatoric(TTTrackPtrT<T> aTrack) const;
0095
0096
0097 void setAllowOneFalse2SStub(bool allowFalse2SStub);
0098 bool getAllowOneFalse2SStub();
0099
0100 private:
0101
0102 MapL1TrackToTP<T> trackToTrackingParticleMap_;
0103 MapTPToVecL1Track<T> trackingParticleToTrackVectorMap_;
0104 edm::RefProd<TTStubAssociationMap<T>> theStubAssociationMap_;
0105
0106 bool AllowOneFalse2SStub;
0107
0108
0109 static const TrackingParticlePtr nullTrackingParticlePtr_;
0110 static const std::vector<TTTrackPtr> nullVecTTTrackPtr_;
0111
0112 };
0113
0114
0115
0116
0117
0118
0119
0120
0121
0122 template <typename T>
0123 const TrackingParticlePtr TTTrackAssociationMap<T>::nullTrackingParticlePtr_;
0124 template <typename T>
0125 const std::vector<TTTrackPtr> TTTrackAssociationMap<T>::nullVecTTTrackPtr_;
0126
0127
0128
0129 template <typename T>
0130 TTTrackAssociationMap<T>::TTTrackAssociationMap() {
0131
0132 }
0133
0134
0135 template <typename T>
0136 TTTrackAssociationMap<T>::~TTTrackAssociationMap() {}
0137
0138
0139 template <>
0140 const TrackingParticlePtr& TTTrackAssociationMap<Ref_Phase2TrackerDigi_>::findTrackingParticlePtr(
0141 TTTrackPtr aTrack) const;
0142
0143 template <>
0144 const std::vector<TTTrackPtr>& TTTrackAssociationMap<Ref_Phase2TrackerDigi_>::findTTTrackPtrs(
0145 TrackingParticlePtr aTrackingParticle) const;
0146
0147
0148 template <>
0149 bool TTTrackAssociationMap<Ref_Phase2TrackerDigi_>::isLooselyGenuine(TTTrackPtr aTrack) const;
0150
0151
0152 template <>
0153 bool TTTrackAssociationMap<Ref_Phase2TrackerDigi_>::isGenuine(TTTrackPtr aTrack) const;
0154
0155 template <>
0156 bool TTTrackAssociationMap<Ref_Phase2TrackerDigi_>::isCombinatoric(TTTrackPtr aTrack) const;
0157
0158 template <>
0159 bool TTTrackAssociationMap<Ref_Phase2TrackerDigi_>::isUnknown(TTTrackPtr aTrack) const;
0160
0161 #endif