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 | Private Attributes
reco::TrackIPTagInfo Class Reference

#include <TrackIPTagInfo.h>

Inheritance diagram for reco::TrackIPTagInfo:
reco::JTATagInfo reco::BaseTagInfo

Classes

struct  TrackIPData
 

Public Types

enum  SortCriteria {
  IP3DSig = 0, Prob3D, IP2DSig, Prob2D,
  IP3DValue, IP2DValue
}
 

Public Member Functions

const GlobalVectoraxis () const
 
virtual TrackIPTagInfoclone (void) const
 clone More...
 
const TrackRefghostTrack () const
 
virtual bool hasProbabilities () const
 
const std::vector< TrackIPData > & impactParameterData () const
 
const edm::Ref
< VertexCollection > & 
primaryVertex () const
 
const std::vector< float > & probabilities (int ip) const
 
const edm::RefVector
< TrackCollection > & 
selectedTracks () const
 
std::vector< size_t > sortedIndexes (SortCriteria mode=IP3DSig) const
 
std::vector< size_t > sortedIndexesWithCut (float cut, SortCriteria mode=IP3DSig) const
 
reco::TrackRefVector sortedTracks (std::vector< size_t > indexes) const
 
virtual TaggingVariableList taggingVariables (void) const
 returns a description of the extended informations in a TaggingVariableList More...
 
 TrackIPTagInfo (const std::vector< TrackIPData > &ipData, const std::vector< float > &prob2d, const std::vector< float > &prob3d, const edm::RefVector< TrackCollection > &selectedTracks, const JetTracksAssociationRef &jtaRef, const edm::Ref< VertexCollection > &pv, const GlobalVector &axis, const TrackRef &ghostTrack)
 
 TrackIPTagInfo ()
 
virtual ~TrackIPTagInfo ()
 
- Public Member Functions inherited from reco::JTATagInfo
virtual bool hasTracks (void) const
 check if the algorithm is using the tracks or not More...
 
virtual edm::RefToBase< Jetjet (void) const
 returns a polymorphic reference to the tagged jet More...
 
const JetTracksAssociationRefjtaRef (void) const
 
 JTATagInfo (void)
 
 JTATagInfo (const JetTracksAssociationRef &jtaRef)
 
void setJTARef (const JetTracksAssociationRef &jtaRef)
 
virtual TrackRefVector tracks (void) const
 returns a list of tracks associated to the jet More...
 
virtual ~JTATagInfo (void)
 
- Public Member Functions inherited from reco::BaseTagInfo
 BaseTagInfo (void)
 
virtual ~BaseTagInfo (void)
 

Private Attributes

GlobalVector m_axis
 
std::vector< TrackIPDatam_data
 
TrackRef m_ghostTrack
 
std::vector< float > m_prob2d
 
std::vector< float > m_prob3d
 
edm::Ref< VertexCollectionm_pv
 
edm::RefVector< TrackCollectionm_selectedTracks
 

Additional Inherited Members

- Protected Attributes inherited from reco::JTATagInfo
JetTracksAssociationRef m_jetTracksAssociation
 

Detailed Description

Definition at line 15 of file TrackIPTagInfo.h.

Member Enumeration Documentation

Constructor & Destructor Documentation

reco::TrackIPTagInfo::TrackIPTagInfo ( const std::vector< TrackIPData > &  ipData,
const std::vector< float > &  prob2d,
const std::vector< float > &  prob3d,
const edm::RefVector< TrackCollection > &  selectedTracks,
const JetTracksAssociationRef jtaRef,
const edm::Ref< VertexCollection > &  pv,
const GlobalVector axis,
const TrackRef ghostTrack 
)
inline

Definition at line 27 of file TrackIPTagInfo.h.

35  :
36  JTATagInfo(jtaRef), m_data(ipData), m_prob2d(prob2d),
37  m_prob3d(prob3d), m_selectedTracks(selectedTracks), m_pv(pv),
38  m_axis(axis), m_ghostTrack(ghostTrack) {}
edm::RefVector< TrackCollection > m_selectedTracks
std::vector< float > m_prob2d
edm::Ref< VertexCollection > m_pv
std::vector< TrackIPData > m_data
const TrackRef & ghostTrack() const
std::vector< float > m_prob3d
const JetTracksAssociationRef & jtaRef(void) const
Definition: JTATagInfo.h:22
reco::TrackIPTagInfo::TrackIPTagInfo ( )
inline

Definition at line 40 of file TrackIPTagInfo.h.

Referenced by clone().

40 {}
virtual reco::TrackIPTagInfo::~TrackIPTagInfo ( )
inlinevirtual

Definition at line 42 of file TrackIPTagInfo.h.

42 {}

Member Function Documentation

const GlobalVector& reco::TrackIPTagInfo::axis ( ) const
inline

Definition at line 95 of file TrackIPTagInfo.h.

References m_axis.

95 { return m_axis; }
virtual TrackIPTagInfo* reco::TrackIPTagInfo::clone ( void  ) const
inlinevirtual

clone

Reimplemented from reco::JTATagInfo.

Definition at line 45 of file TrackIPTagInfo.h.

References TrackIPTagInfo().

46  { return new TrackIPTagInfo(*this); }
const TrackRef& reco::TrackIPTagInfo::ghostTrack ( ) const
inline

Definition at line 96 of file TrackIPTagInfo.h.

References m_ghostTrack.

96 { return m_ghostTrack; }
virtual bool reco::TrackIPTagInfo::hasProbabilities ( ) const
inlinevirtual

Check if probability information is globally available impact parameters in the collection

Even if true for some tracks it is possible that a -1 probability is returned if some problem occured

Definition at line 56 of file TrackIPTagInfo.h.

References m_data, and m_prob3d.

Referenced by TrackIPTagPlotter::analyzeTag().

57  { return m_data.size() == m_prob3d.size(); }
std::vector< TrackIPData > m_data
std::vector< float > m_prob3d
const std::vector<TrackIPData>& reco::TrackIPTagInfo::impactParameterData ( ) const
inline
const edm::Ref<VertexCollection>& reco::TrackIPTagInfo::primaryVertex ( ) const
inline
const std::vector<float>& reco::TrackIPTagInfo::probabilities ( int  ip) const
inline

Definition at line 70 of file TrackIPTagInfo.h.

References m_prob2d, and m_prob3d.

Referenced by TrackIPTagPlotter::analyzeTag(), JetProbabilityComputer::discriminator(), and JetBProbabilityComputer::discriminator().

70 {return (ip==0)?m_prob3d:m_prob2d; }
std::vector< float > m_prob2d
std::vector< float > m_prob3d
const edm::RefVector<TrackCollection>& reco::TrackIPTagInfo::selectedTracks ( ) const
inline
std::vector< size_t > TrackIPTagInfo::sortedIndexes ( SortCriteria  mode = IP3DSig) const
std::vector< size_t > TrackIPTagInfo::sortedIndexesWithCut ( float  cut,
SortCriteria  mode = IP3DSig 
) const

Return the list of track index sorted by mode A cut can is specified to select only tracks with IP value or significance > cut or probability < cut (according to the specified mode)

Definition at line 85 of file TrackIPTagInfo.cc.

References i, and query::result.

86 {
87  multimap<float,size_t> sortedIdx;
88  size_t nSelectedTracks = m_selectedTracks.size();
89  std::vector<size_t> result;
90 
91 //check if probabilities are available
92  if((mode == Prob3D || mode == Prob2D) && ! hasProbabilities())
93  {
94  return result;
95  }
96 
97  for(size_t i=0;i<nSelectedTracks;i++)
98  {
99  float sortingKey;
100  switch(mode)
101  {
102  case IP3DSig:
103  sortingKey=m_data[i].ip3d.significance();
104  break;
105  case IP2DSig:
106  sortingKey=m_data[i].ip2d.significance();
107  break;
108  case IP3DValue:
109  sortingKey=m_data[i].ip3d.value();
110  break;
111  case IP2DValue:
112  sortingKey=m_data[i].ip2d.value();
113  break;
114  case Prob3D:
115  sortingKey=m_prob3d[i];
116  break;
117  case Prob2D:
118  sortingKey=m_prob2d[i];
119  break;
120 
121  default:
122  sortingKey=i;
123  }
124  sortedIdx.insert(std::pair<float,size_t>(sortingKey,i));
125  }
126 
127 //Descending:
128 if(mode == IP3DSig || mode == IP2DSig ||mode == IP3DValue || mode == IP2DValue)
129  {
130  for(std::multimap<float,size_t>::reverse_iterator it = sortedIdx.rbegin(); it!=sortedIdx.rend(); it++)
131  if(it->first >= cut) result.push_back(it->second);
132  } else
133 //Ascending:
134  {
135  for(std::multimap<float,size_t>::iterator it = sortedIdx.begin(); it!=sortedIdx.end(); it++)
136  if(it->first <= cut) result.push_back(it->second);
137  }
138  return result;
139 }
int i
Definition: DBlmapReader.cc:9
edm::RefVector< TrackCollection > m_selectedTracks
std::vector< float > m_prob2d
tuple result
Definition: query.py:137
std::vector< TrackIPData > m_data
std::vector< float > m_prob3d
virtual bool hasProbabilities() const
size_type size() const
Size of the RefVector.
Definition: RefVector.h:89
TrackRefVector TrackIPTagInfo::sortedTracks ( std::vector< size_t >  indexes) const

Definition at line 71 of file TrackIPTagInfo.cc.

References i, and edm::RefVector< C, T, F >::push_back().

Referenced by TrackIPTagPlotter::analyzeTag().

72 {
73  TrackRefVector tr;
74  for(size_t i =0 ; i < indexes.size(); i++) tr.push_back(m_selectedTracks[indexes[i]]);
75  return tr;
76 }
int i
Definition: DBlmapReader.cc:9
edm::RefVector< TrackCollection > m_selectedTracks
void push_back(value_type const &ref)
Add a Ref&lt;C, T&gt; to the RefVector.
Definition: RefVector.h:64
TaggingVariableList TrackIPTagInfo::taggingVariables ( void  ) const
virtual

returns a description of the extended informations in a TaggingVariableList

Reimplemented from reco::BaseTagInfo.

Definition at line 24 of file TrackIPTagInfo.cc.

References data, etaRel(), reco::TaggingVariableList::finalize(), reco::TaggingVariableList::insert(), metsig::jet, mathSSE::sqrt(), reco::btau::trackChi2, reco::btau::trackDecayLenVal, reco::btau::trackDeltaR, reco::btau::trackEta, reco::btau::trackEtaRel, reco::btau::trackGhostTrackDistSig, reco::btau::trackGhostTrackDistVal, reco::btau::trackGhostTrackWeight, reco::btau::trackJetDistSig, reco::btau::trackJetDistVal, reco::btau::trackMomentum, reco::btau::trackNPixelHits, reco::btau::trackNTotalHits, reco::btau::trackPPar, reco::btau::trackPParRatio, reco::btau::trackPtRatio, reco::btau::trackPtRel, reco::btau::trackSip2dSig, reco::btau::trackSip2dVal, reco::btau::trackSip3dSig, reco::btau::trackSip3dVal, vdt::x, detailsBasic3DVector::y, and detailsBasic3DVector::z.

24  {
26 
27  math::XYZVector jetDir = jet()->momentum().Unit();
28  bool havePv = primaryVertex().isNonnull();
29  GlobalPoint pv;
30  if (havePv)
31  pv = GlobalPoint(primaryVertex()->x(),
32  primaryVertex()->y(),
33  primaryVertex()->z());
34 
35  std::vector<size_t> indexes = sortedIndexes(); // use default criterium
36  for(std::vector<size_t>::const_iterator it = indexes.begin();
37  it != indexes.end(); ++it)
38  {
39  using namespace ROOT::Math;
40  TrackRef track = m_selectedTracks[*it];
41  const TrackIPData *data = &m_data[*it];
42  math::XYZVector trackMom = track->momentum();
43  double trackMag = std::sqrt(trackMom.Mag2());
44 
45  vars.insert(btau::trackMomentum, trackMag, true);
46  vars.insert(btau::trackEta, trackMom.Eta(), true);
47  vars.insert(btau::trackEtaRel, etaRel(jetDir, trackMom), true);
48  vars.insert(btau::trackPtRel, VectorUtil::Perp(trackMom, jetDir), true);
49  vars.insert(btau::trackPPar, jetDir.Dot(trackMom), true);
50  vars.insert(btau::trackDeltaR, VectorUtil::DeltaR(trackMom, jetDir), true);
51  vars.insert(btau::trackPtRatio, VectorUtil::Perp(trackMom, jetDir) / trackMag, true);
52  vars.insert(btau::trackPParRatio, jetDir.Dot(trackMom) / trackMag, true);
53  vars.insert(btau::trackSip3dVal, data->ip3d.value(), true);
54  vars.insert(btau::trackSip3dSig, data->ip3d.significance(), true);
55  vars.insert(btau::trackSip2dVal, data->ip2d.value(), true);
56  vars.insert(btau::trackSip2dSig, data->ip2d.significance(), true);
57  vars.insert(btau::trackDecayLenVal, havePv ? (data->closestToJetAxis - pv).mag() : -1.0, true);
58  vars.insert(btau::trackJetDistVal, data->distanceToJetAxis.value(), true);
59  vars.insert(btau::trackJetDistSig, data->distanceToJetAxis.significance(), true);
60  vars.insert(btau::trackGhostTrackDistVal, data->distanceToGhostTrack.value(), true);
61  vars.insert(btau::trackGhostTrackDistSig, data->distanceToGhostTrack.significance(), true);
62  vars.insert(btau::trackGhostTrackWeight, data->ghostTrackWeight, true);
63  vars.insert(btau::trackChi2, track->normalizedChi2(), true);
64  vars.insert(btau::trackNTotalHits, track->hitPattern().numberOfValidHits(), true);
65  vars.insert(btau::trackNPixelHits, track->hitPattern().numberOfValidPixelHits(), true);
66  }
67  vars.finalize();
68  return vars;
69 }
const edm::Ref< VertexCollection > & primaryVertex() const
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
virtual Vector momentum() const
spatial momentum vector
edm::RefVector< TrackCollection > m_selectedTracks
double double double z
bool isNonnull() const
Checks for non-null.
Definition: Ref.h:250
T sqrt(T t)
Definition: SSEVec.h:46
std::vector< TrackIPData > m_data
virtual edm::RefToBase< Jet > jet(void) const
returns a polymorphic reference to the tagged jet
Definition: JTATagInfo.h:20
std::vector< size_t > sortedIndexes(SortCriteria mode=IP3DSig) const
XYZVectorD XYZVector
spatial vector with cartesian internal representation
Definition: Vector3D.h:31
static double etaRel(const math::XYZVector &dir, const math::XYZVector &track)
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82
x
Definition: VDTMath.h:216
void insert(const TaggingVariable &variable, bool delayed=false)

Member Data Documentation

GlobalVector reco::TrackIPTagInfo::m_axis
private

Definition at line 104 of file TrackIPTagInfo.h.

Referenced by axis().

std::vector<TrackIPData> reco::TrackIPTagInfo::m_data
private

Definition at line 99 of file TrackIPTagInfo.h.

Referenced by hasProbabilities(), and impactParameterData().

TrackRef reco::TrackIPTagInfo::m_ghostTrack
private

Definition at line 105 of file TrackIPTagInfo.h.

Referenced by ghostTrack().

std::vector<float> reco::TrackIPTagInfo::m_prob2d
private

Definition at line 100 of file TrackIPTagInfo.h.

Referenced by probabilities().

std::vector<float> reco::TrackIPTagInfo::m_prob3d
private

Definition at line 101 of file TrackIPTagInfo.h.

Referenced by hasProbabilities(), and probabilities().

edm::Ref<VertexCollection> reco::TrackIPTagInfo::m_pv
private

Definition at line 103 of file TrackIPTagInfo.h.

Referenced by primaryVertex().

edm::RefVector<TrackCollection> reco::TrackIPTagInfo::m_selectedTracks
private

Definition at line 102 of file TrackIPTagInfo.h.

Referenced by selectedTracks().