CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Classes | Public Types | Public Member Functions | Static Public Member Functions | Private Attributes
reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX > Class Template Reference

#include <TemplatedSecondaryVertexTagInfo.h>

Inheritance diagram for reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >:
reco::BaseTagInfo

Classes

struct  IndexedVertexTrackSelector
 
struct  TrackFinder
 
struct  VertexData
 
struct  VertexTrackSelector
 

Public Types

typedef
reco::btag::IndexedTrackData 
IndexedTrackData
 
typedef IPTI::input_container input_container
 
typedef reco::btag::TrackData TrackData
 

Public Member Functions

virtual
TemplatedSecondaryVertexTagInfo
clone (void) const
 clone More...
 
unsigned int findTrack (const typename input_container::value_type &track) const
 
const GlobalVectorflightDirection (unsigned int index) const
 
Measurement1D flightDistance (unsigned int index, bool in2d=false) const
 
virtual edm::RefToBase< Jetjet (void) const
 returns a polymorphic reference to the tagged jet More...
 
unsigned int nSelectedTracks () const
 
unsigned int nVertexCandidates () const
 
unsigned int nVertexTracks () const
 
unsigned int nVertexTracks (unsigned int index) const
 
unsigned int nVertices () const
 
const VTX & secondaryVertex (unsigned int index) const
 
input_container selectedTracks () const
 
virtual TaggingVariableList taggingVariables () const
 returns a description of the extended informations in a TaggingVariableList More...
 
 TemplatedSecondaryVertexTagInfo ()
 
 TemplatedSecondaryVertexTagInfo (const std::vector< IndexedTrackData > &trackData, const std::vector< VertexData > &svData, unsigned int vertexCandidates, const edm::Ref< std::vector< IPTI > > &)
 
input_container::value_type track (unsigned int index) const
 
const TrackDatatrackData (unsigned int index) const
 
const TrackDatatrackData (const typename input_container::value_type &track) const
 
const reco::btag::TrackIPDatatrackIPData (unsigned int index) const
 
const reco::btag::TrackIPDatatrackIPData (const typename input_container::value_type &track) const
 
const edm::Ref< std::vector
< IPTI > > & 
trackIPTagInfoRef () const
 
float trackWeight (unsigned int svIndex, unsigned int trackindex) const
 
float trackWeight (unsigned int svIndex, const typename input_container::value_type &track) const
 
input_container vertexTracks () const
 
input_container vertexTracks (unsigned int index) const
 
virtual ~TemplatedSecondaryVertexTagInfo ()
 
- Public Member Functions inherited from reco::BaseTagInfo
 BaseTagInfo (void)
 
virtual bool hasTracks (void) const
 check if the algorithm is using the tracks or not More...
 
virtual TrackRefVector tracks (void) const
 returns a list of tracks associated to the jet More...
 
virtual ~BaseTagInfo (void)
 

Static Public Member Functions

static short Class_Version ()
 

Private Attributes

std::vector< VertexDatam_svData
 
std::vector< IndexedTrackDatam_trackData
 
edm::Ref< std::vector< IPTI > > m_trackIPTagInfoRef
 
unsigned int m_vertexCandidates
 

Detailed Description

template<class IPTI, class VTX>
class reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >

Definition at line 54 of file TemplatedSecondaryVertexTagInfo.h.

Member Typedef Documentation

template<class IPTI, class VTX>
typedef reco::btag::IndexedTrackData reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::IndexedTrackData

Definition at line 57 of file TemplatedSecondaryVertexTagInfo.h.

template<class IPTI, class VTX>
typedef IPTI::input_container reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::input_container

Definition at line 97 of file TemplatedSecondaryVertexTagInfo.h.

template<class IPTI, class VTX>
typedef reco::btag::TrackData reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::TrackData

Definition at line 56 of file TemplatedSecondaryVertexTagInfo.h.

Constructor & Destructor Documentation

template<class IPTI, class VTX>
reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::TemplatedSecondaryVertexTagInfo ( )
inline
template<class IPTI, class VTX>
virtual reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::~TemplatedSecondaryVertexTagInfo ( )
inlinevirtual

Definition at line 100 of file TemplatedSecondaryVertexTagInfo.h.

100 {}
template<class IPTI, class VTX >
reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::TemplatedSecondaryVertexTagInfo ( const std::vector< IndexedTrackData > &  trackData,
const std::vector< VertexData > &  svData,
unsigned int  vertexCandidates,
const edm::Ref< std::vector< IPTI > > &  trackIPTagInfoRef 
)

Definition at line 171 of file TemplatedSecondaryVertexTagInfo.h.

175  :
177  m_svData(svData),
178  m_vertexCandidates(vertexCandidates),
179  m_trackIPTagInfoRef(trackIPTagInfoRef)
180 {
181 }
const TrackData & trackData(unsigned int index) const

Member Function Documentation

template<class IPTI, class VTX>
static short reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::Class_Version ( )
inlinestatic

Definition at line 160 of file TemplatedSecondaryVertexTagInfo.h.

162 :
163  std::vector<IndexedTrackData> m_trackData;
template<class IPTI, class VTX>
virtual TemplatedSecondaryVertexTagInfo* reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::clone ( void  ) const
inlinevirtual

clone

Reimplemented from reco::BaseTagInfo.

Definition at line 109 of file TemplatedSecondaryVertexTagInfo.h.

template<class IPTI , class VTX >
unsigned int reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::findTrack ( const typename input_container::value_type &  track) const

Definition at line 247 of file TemplatedSecondaryVertexTagInfo.h.

References edm::errors::InvalidReference, reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::m_trackData, reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::m_trackIPTagInfoRef, and reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::track().

Referenced by reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::trackData(), and reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::trackIPData().

248 {
250  std::find_if(m_trackData.begin(), m_trackData.end(),
251  TrackFinder(m_trackIPTagInfoRef->selectedTracks(),
252  track));
253 
254  if (pos == m_trackData.end())
256  << "Track not found in "
257  " TemplatedSecondaryVertexTagInfo<IPTI,VTX>::findTrack." << std::endl;
258 
259  return pos - m_trackData.begin();
260 }
input_container::value_type track(unsigned int index) const
std::pair< unsigned int, TrackData > IndexedTrackData
template<class IPTI, class VTX>
const GlobalVector& reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::flightDirection ( unsigned int  index) const
inline
template<class IPTI, class VTX>
Measurement1D reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::flightDistance ( unsigned int  index,
bool  in2d = false 
) const
inline
template<class IPTI, class VTX>
virtual edm::RefToBase<Jet> reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::jet ( void  ) const
inlinevirtual

returns a polymorphic reference to the tagged jet

Reimplemented from reco::BaseTagInfo.

Definition at line 116 of file TemplatedSecondaryVertexTagInfo.h.

Referenced by reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::taggingVariables().

117  { return m_trackIPTagInfoRef->jet(); }
template<class IPTI, class VTX>
unsigned int reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::nSelectedTracks ( ) const
inline

Definition at line 129 of file TemplatedSecondaryVertexTagInfo.h.

129 { return m_trackData.size(); }
template<class IPTI, class VTX>
unsigned int reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::nVertexCandidates ( ) const
inline
template<class IPTI , class VTX >
unsigned int reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::nVertexTracks ( ) const
template<class IPTI , class VTX >
unsigned int reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::nVertexTracks ( unsigned int  index) const

Definition at line 189 of file TemplatedSecondaryVertexTagInfo.h.

References reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::m_trackData.

190 {
191  return std::count_if(m_trackData.begin(), m_trackData.end(),
192  IndexedVertexTrackSelector(index));
193 }
template<class IPTI, class VTX>
unsigned int reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::nVertices ( ) const
inline
template<class IPTI, class VTX>
const VTX& reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::secondaryVertex ( unsigned int  index) const
inline
template<class IPTI , class VTX >
reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::input_container reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::selectedTracks ( ) const

Definition at line 196 of file TemplatedSecondaryVertexTagInfo.h.

References reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::m_trackData, and reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::m_trackIPTagInfoRef.

197 {
198  input_container trackRefs;
199  const input_container &trackIPTrackRefs =
200  m_trackIPTagInfoRef->selectedTracks();
201 
202  for(typename std::vector<typename reco::TemplatedSecondaryVertexTagInfo<IPTI,VTX>::IndexedTrackData>::const_iterator iter =
203  m_trackData.begin(); iter != m_trackData.end(); iter++)
204 
205  trackRefs.push_back(trackIPTrackRefs[iter->first]);
206 
207  return trackRefs;
208 }
template<class IPTI , class VTX >
TaggingVariableList reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::taggingVariables ( void  ) const
virtual

returns a description of the extended informations in a TaggingVariableList

Reimplemented from reco::BaseTagInfo.

Definition at line 299 of file TemplatedSecondaryVertexTagInfo.h.

References deltaR(), reco::TaggingVariableList::finalize(), reco::btau::flightDistance2dSig, reco::btau::flightDistance2dVal, reco::btau::flightDistance3dSig, reco::btau::flightDistance3dVal, reco::TaggingVariableList::insert(), reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::jet(), reco::btau::jetNSecondaryVertices, reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::m_svData, reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::m_vertexCandidates, reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::nVertexTracks(), reco::btau::vertexJetDeltaR, and reco::btau::vertexNTracks.

300 {
301  TaggingVariableList vars;
302 
303  for(typename std::vector<typename TemplatedSecondaryVertexTagInfo<IPTI,VTX>::VertexData>::const_iterator iter = m_svData.begin();
304  iter != m_svData.end(); iter++) {
305  vars.insert(btau::flightDistance2dVal,
306  iter->dist2d.value(), true);
307  vars.insert(btau::flightDistance2dSig,
308  iter->dist2d.significance(), true);
309  vars.insert(btau::flightDistance3dVal,
310  iter->dist3d.value(), true);
311  vars.insert(btau::flightDistance3dSig,
312  iter->dist3d.significance(), true);
313 
314  vars.insert(btau::vertexJetDeltaR,
315  Geom::deltaR(iter->direction, jet()->momentum()), true);
316  }
317 
319  vars.insert(btau::vertexNTracks, nVertexTracks(), true);
320 
321  vars.finalize();
322  return vars;
323 }
double deltaR(double eta1, double eta2, double phi1, double phi2)
Definition: TreeUtility.cc:17
virtual edm::RefToBase< Jet > jet(void) const
returns a polymorphic reference to the tagged jet
template<class IPTI , class VTX >
TemplatedSecondaryVertexTagInfo< IPTI, VTX >::input_container::value_type reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::track ( unsigned int  index) const
template<class IPTI , class VTX >
const TemplatedSecondaryVertexTagInfo< IPTI, VTX >::TrackData & reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::trackData ( unsigned int  index) const
template<class IPTI , class VTX >
const TemplatedSecondaryVertexTagInfo< IPTI, VTX >::TrackData & reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::trackData ( const typename input_container::value_type &  track) const

Definition at line 269 of file TemplatedSecondaryVertexTagInfo.h.

References reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::findTrack(), and reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::m_trackData.

270 {
271  return m_trackData[findTrack(track)].second;
272 }
unsigned int findTrack(const typename input_container::value_type &track) const
input_container::value_type track(unsigned int index) const
template<class IPTI , class VTX >
const reco::btag::TrackIPData & reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::trackIPData ( unsigned int  index) const
template<class IPTI , class VTX >
const reco::btag::TrackIPData & reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::trackIPData ( const typename input_container::value_type &  track) const

Definition at line 282 of file TemplatedSecondaryVertexTagInfo.h.

References reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::findTrack(), and reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::trackIPData().

283 {
284  return trackIPData(findTrack(track));
285 }
unsigned int findTrack(const typename input_container::value_type &track) const
const reco::btag::TrackIPData & trackIPData(unsigned int index) const
input_container::value_type track(unsigned int index) const
template<class IPTI, class VTX>
const edm::Ref<std::vector<IPTI> >& reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::trackIPTagInfoRef ( ) const
inline

Definition at line 113 of file TemplatedSecondaryVertexTagInfo.h.

114  { return m_trackIPTagInfoRef; }
template<class IPTI , class VTX >
float reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::trackWeight ( unsigned int  svIndex,
unsigned int  trackindex 
) const

Definition at line 293 of file TemplatedSecondaryVertexTagInfo.h.

References reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::track().

Referenced by GhostTrackComputer::operator()().

295 {
296  return trackWeight(svIndex, track(trackIndex));
297 }
float trackWeight(unsigned int svIndex, unsigned int trackindex) const
input_container::value_type track(unsigned int index) const
template<class IPTI , class VTX >
float reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::trackWeight ( unsigned int  svIndex,
const typename input_container::value_type &  track 
) const

Definition at line 287 of file TemplatedSecondaryVertexTagInfo.h.

References reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::m_svData, and reco::btag::weight().

289 {
290  return reco::btag::weight(track,m_svData[svIndex].vertex);
291 }
float weight(const reco::TrackRef &t, const reco::Vertex &v)
input_container::value_type track(unsigned int index) const
template<class IPTI , class VTX >
TemplatedSecondaryVertexTagInfo< IPTI, VTX >::input_container reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::vertexTracks ( ) const

Definition at line 211 of file TemplatedSecondaryVertexTagInfo.h.

References reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::m_trackData, and reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::m_trackIPTagInfoRef.

Referenced by GhostTrackComputer::operator()().

212 {
213  input_container trackRefs;
214  const input_container &trackIPTrackRefs =
215  m_trackIPTagInfoRef->selectedTracks();
216 
217  for(typename std::vector<typename reco::TemplatedSecondaryVertexTagInfo<IPTI,VTX>::IndexedTrackData>::const_iterator iter =
218  m_trackData.begin(); iter != m_trackData.end(); iter++)
219 
220  if (iter->second.associatedToVertex())
221  trackRefs.push_back(trackIPTrackRefs[iter->first]);
222 
223  return trackRefs;
224 }
template<class IPTI , class VTX >
TemplatedSecondaryVertexTagInfo< IPTI, VTX >::input_container reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::vertexTracks ( unsigned int  index) const

Definition at line 227 of file TemplatedSecondaryVertexTagInfo.h.

References reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::m_trackData, and reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::m_trackIPTagInfoRef.

228 {
229  input_container trackRefs;
230  const input_container &trackIPTrackRefs =
231  m_trackIPTagInfoRef->selectedTracks();
232 
233  for(typename std::vector<typename reco::TemplatedSecondaryVertexTagInfo<IPTI,VTX>::IndexedTrackData>::const_iterator iter =
234  m_trackData.begin(); iter != m_trackData.end(); iter++)
235 
236  if (iter->second.associatedToVertex(index))
237  trackRefs.push_back(trackIPTrackRefs[iter->first]);
238 
239  return trackRefs;
240 }

Member Data Documentation

template<class IPTI, class VTX>
std::vector<VertexData> reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::m_svData
private
template<class IPTI, class VTX>
std::vector<IndexedTrackData> reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::m_trackData
private
template<class IPTI, class VTX>
edm::Ref<std::vector<IPTI> > reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::m_trackIPTagInfoRef
private
template<class IPTI, class VTX>
unsigned int reco::TemplatedSecondaryVertexTagInfo< IPTI, VTX >::m_vertexCandidates
private