File indexing completed on 2023-03-17 11:18:26
0001 #ifndef JetSignalVertexCompatibilityAlgo_h
0002 #define JetSignalVertexCompatibilityAlgo_h
0003
0004 #include <vector>
0005 #include <map>
0006
0007 #include "DataFormats/Common/interface/RefToBase.h"
0008 #include "DataFormats/TrackReco/interface/TrackFwd.h"
0009 #include "DataFormats/VertexReco/interface/VertexFwd.h"
0010
0011 #include "TrackingTools/TransientTrack/interface/TransientTrackBuilder.h"
0012
0013 namespace reco {
0014
0015 class JetSignalVertexCompatibilityAlgo {
0016 public:
0017 JetSignalVertexCompatibilityAlgo(double cut, double temperature);
0018 ~JetSignalVertexCompatibilityAlgo();
0019
0020 std::vector<float> compatibility(const reco::VertexCollection &vertices, const reco::TrackRefVector &tracks) const;
0021
0022 void resetEvent(const TransientTrackBuilder *trackBuilder);
0023
0024 private:
0025 template <typename T>
0026 struct RefToBaseLess {
0027 bool operator()(const edm::RefToBase<T> &r1, const edm::RefToBase<T> &r2) const;
0028 };
0029
0030 typedef std::map<reco::TrackBaseRef, reco::TransientTrack, RefToBaseLess<reco::Track> > TransientTrackMap;
0031
0032 const TransientTrack &convert(const reco::TrackBaseRef &track) const;
0033 double activation(double compat) const;
0034
0035 static double trackVertexCompat(const reco::Vertex &vtx, const TransientTrack &track);
0036
0037 mutable TransientTrackMap trackMap;
0038 const TransientTrackBuilder *trackBuilder;
0039
0040 const double cut;
0041 const double temperature;
0042 };
0043
0044 }
0045
0046 #endif