CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
SecondaryVertexTagInfo.h
Go to the documentation of this file.
1 #ifndef DataFormats_BTauReco_SecondaryVertexTagInfo_h
2 #define DataFormats_BTauReco_SecondaryVertexTagInfo_h
3 
4 #include <utility>
5 #include <vector>
6 
16 
17 namespace reco {
18 
20  public:
21  struct TrackData {
22  enum Status {
26  };
27 
28  inline bool usedForVertexFit() const
29  { return (int)svStatus >= (int)trackUsedForVertexFit; }
30  inline bool associatedToVertex() const
31  { return (int)svStatus >= (int)trackAssociatedToVertex; }
32  inline bool associatedToVertex(unsigned int index) const
33  { return (int)svStatus == (int)trackAssociatedToVertex + (int)index; }
34 
36  };
37 
38  struct VertexData {
42  };
43 
44  typedef std::pair<unsigned int, TrackData> IndexedTrackData;
45 
48 
50  const std::vector<IndexedTrackData> &trackData,
51  const std::vector<VertexData> &svData,
52  unsigned int vertexCandidates,
54 
56  virtual SecondaryVertexTagInfo * clone(void) const {
57  return new SecondaryVertexTagInfo(*this);
58  }
59 
61  { return m_trackIPTagInfoRef; }
62 
63  virtual edm::RefToBase<Jet> jet(void) const
64  { return m_trackIPTagInfoRef->jet(); }
65 
66  virtual TrackRefVector tracks(void) const
67  { return m_trackIPTagInfoRef->tracks(); }
68 
69  const JetTracksAssociationRef &jtaRef(void) const
70  { return m_trackIPTagInfoRef->jtaRef(); }
71 
72  const Vertex &secondaryVertex(unsigned int index) const
73  { return m_svData[index].vertex; }
74 
75  unsigned int nSelectedTracks() const { return m_trackData.size(); }
76  unsigned int nVertexTracks() const;
77  unsigned int nVertexTracks(unsigned int index) const;
78  unsigned int nVertices() const { return m_svData.size(); }
79  unsigned int nVertexCandidates() const { return m_vertexCandidates; }
80 
83  TrackRefVector vertexTracks(unsigned int index) const;
84 
85  TrackRef track(unsigned int index) const;
86  unsigned int findTrack(const TrackRef &track) const;
87 
88  const TrackData &trackData(unsigned int index) const;
89  const TrackData &trackData(const TrackRef &track) const;
90 
91  const TrackIPTagInfo::TrackIPData &trackIPData(unsigned int index) const;
93 
94  float trackWeight(unsigned int svIndex, unsigned int trackindex) const;
95  float trackWeight(unsigned int svIndex, const TrackRef &track) const;
96 
98  flightDistance(unsigned int index, bool in2d = false) const
99  { return in2d ? m_svData[index].dist2d : m_svData[index].dist3d; }
100  const GlobalVector &flightDirection(unsigned int index) const
101  { return m_svData[index].direction; }
102 
103  virtual TaggingVariableList taggingVariables() const;
104 
105  private:
106  std::vector<IndexedTrackData> m_trackData;
107  std::vector<VertexData> m_svData;
108  unsigned int m_vertexCandidates;
109 
111 };
112 
114 
115 }
116 
117 #endif // DataFormats_BTauReco_SecondaryVertexTagInfo_h
virtual TrackRefVector tracks(void) const
returns a list of tracks associated to the jet
const TrackData & trackData(unsigned int index) const
unsigned int findTrack(const TrackRef &track) const
Measurement1D flightDistance(unsigned int index, bool in2d=false) const
const JetTracksAssociationRef & jtaRef(void) const
std::vector< VertexData > m_svData
virtual TaggingVariableList taggingVariables() const
returns a description of the extended informations in a TaggingVariableList
virtual edm::RefToBase< Jet > jet(void) const
returns a polymorphic reference to the tagged jet
TrackRef track(unsigned int index) const
const GlobalVector & flightDirection(unsigned int index) const
const Vertex & secondaryVertex(unsigned int index) const
const TrackIPTagInfo::TrackIPData & trackIPData(unsigned int index) const
TrackRefVector selectedTracks() const
unsigned int nVertexCandidates() const
float trackWeight(unsigned int svIndex, unsigned int trackindex) const
#define DECLARE_EDM_REFS(class_name)
Definition: RefMacros.h:10
TrackRefVector vertexTracks() const
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< float >, ROOT::Math::GlobalCoordinateSystemTag > GlobalVector
vector in glovbal coordinate system
Definition: Vector3D.h:28
std::pair< unsigned int, TrackData > IndexedTrackData
virtual SecondaryVertexTagInfo * clone(void) const
clone
std::vector< IndexedTrackData > m_trackData
bool associatedToVertex(unsigned int index) const
const TrackIPTagInfoRef & trackIPTagInfoRef() const
unsigned int nSelectedTracks() const