Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:25:28

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 }  // namespace reco
0045 
0046 #endif  // JetSignalVertexCompatibilityAlgo_h