File indexing completed on 2024-04-06 12:03:47
0001 #ifndef DataFormats_BTauReco_BJetTagTrackCounting_h
0002 #define DataFormats_BTauReco_BJetTagTrackCounting_h
0003
0004 #include "DataFormats/BTauReco/interface/RefMacros.h"
0005 #include "DataFormats/JetReco/interface/JetTracksAssociation.h"
0006
0007 #include "DataFormats/BTauReco/interface/JTATagInfo.h"
0008
0009 namespace reco {
0010
0011 class TrackCountingTagInfo : public JTATagInfo {
0012 public:
0013 TrackCountingTagInfo(const std::vector<double>& significance2d,
0014 const std::vector<double>& significance3d,
0015 const std::vector<int>& trackOrder2d,
0016 const std::vector<int>& trackOrder3d,
0017 const JetTracksAssociationRef& jtaRef)
0018 : JTATagInfo(jtaRef),
0019 m_significance2d(significance2d),
0020 m_significance3d(significance3d),
0021 m_trackOrder2d(trackOrder2d),
0022 m_trackOrder3d(trackOrder3d) {}
0023
0024 TrackCountingTagInfo() {}
0025
0026 ~TrackCountingTagInfo() override {}
0027
0028
0029
0030
0031
0032
0033 virtual float significance(size_t n, int ip) const {
0034 if (ip == 0) {
0035 if (n < m_significance3d.size())
0036 return m_significance3d[n];
0037 } else {
0038 if (n < m_significance2d.size())
0039 return m_significance2d[n];
0040 }
0041 return -10.;
0042 }
0043
0044 virtual int trackIndex(size_t n, int ip) const {
0045 if (ip == 0) {
0046 if (n < m_significance3d.size())
0047 return m_trackOrder3d[n];
0048 } else {
0049 if (n < m_significance2d.size())
0050 return m_trackOrder2d[n];
0051 }
0052 return 0;
0053 }
0054
0055
0056
0057
0058
0059
0060 virtual float discriminator(size_t nth, int ipType) const { return significance(nth - 1, ipType); }
0061
0062 virtual int selectedTracks(int ipType) const {
0063 if (ipType == 0)
0064 return m_significance3d.size();
0065 else
0066 return m_significance2d.size();
0067 }
0068
0069 TrackCountingTagInfo* clone() const override { return new TrackCountingTagInfo(*this); }
0070
0071 private:
0072 std::vector<double> m_significance2d;
0073 std::vector<double> m_significance3d;
0074 std::vector<int> m_trackOrder2d;
0075 std::vector<int> m_trackOrder3d;
0076 };
0077
0078
0079
0080
0081 DECLARE_EDM_REFS(TrackCountingTagInfo)
0082
0083 }
0084
0085 #endif