File indexing completed on 2024-04-06 12:22:46
0001 #ifndef MuonAnalysis_MuonAssociators_src_MatcherByPullsAlgorithm_h
0002 #define MuonAnalysis_MuonAssociators_src_MatcherByPullsAlgorithm_h
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021 #include <string>
0022 #include <algorithm>
0023 #include <vector>
0024 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0025
0026 #include "DataFormats/TrackReco/interface/Track.h"
0027 #include "DataFormats/RecoCandidate/interface/RecoCandidate.h"
0028 #include "DataFormats/HepMCCandidate/interface/GenParticle.h"
0029 #include "DataFormats/CLHEP/interface/AlgebraicObjects.h"
0030
0031
0032
0033
0034 class MatcherByPullsAlgorithm {
0035 public:
0036 explicit MatcherByPullsAlgorithm(const edm::ParameterSet &);
0037 ~MatcherByPullsAlgorithm();
0038
0039
0040
0041 std::pair<bool, float> match(const reco::Track &tk,
0042 const reco::Candidate &mc,
0043 const AlgebraicSymMatrix55 &invertedCovariance) const;
0044
0045
0046
0047 std::pair<int, float> match(const reco::RecoCandidate &src,
0048 const std::vector<reco::GenParticle> &cands,
0049 const std::vector<uint8_t> &good) const;
0050
0051
0052
0053
0054
0055 void matchMany(const reco::RecoCandidate &src,
0056 const std::vector<reco::GenParticle> &cands,
0057 const std::vector<uint8_t> &good,
0058 std::vector<std::pair<double, int> > &matchesToFill) const;
0059
0060
0061
0062 std::pair<int, float> match(const reco::Track &src,
0063 const std::vector<reco::GenParticle> &cands,
0064 const std::vector<uint8_t> &good) const;
0065
0066
0067
0068
0069
0070 void matchMany(const reco::Track &src,
0071 const std::vector<reco::GenParticle> &cands,
0072 const std::vector<uint8_t> &good,
0073 std::vector<std::pair<double, int> > &matchesToFill) const;
0074
0075
0076 void fillInvCov(const reco::Track &tk, AlgebraicSymMatrix55 &invCov) const;
0077
0078 private:
0079
0080 const reco::Track *track(const reco::RecoCandidate &src) const;
0081
0082
0083 enum TrackChoice { StaTrack, TrkTrack, GlbTrack };
0084
0085
0086 TrackChoice track_;
0087
0088
0089 double dr2_;
0090
0091
0092 double cut_;
0093
0094
0095 bool diagOnly_;
0096
0097
0098 bool useVertex_;
0099 };
0100
0101 #endif