4 #include <Math/VectorUtil.h>
19 double momPar = dir.Dot(track);
20 double energy =
sqrt(track.Mag2() + ROOT::Math::Square(0.13957));
21 return 0.5 *
log((energy + momPar) / (energy - momPar));
28 bool havePv = primaryVertex().isNonnull();
33 primaryVertex()->
z());
35 std::vector<size_t> indexes = sortedIndexes();
36 for(std::vector<size_t>::const_iterator it = indexes.begin();
37 it != indexes.end(); ++it)
39 using namespace ROOT::Math;
40 TrackRef track = m_selectedTracks[*it];
43 double trackMag =
std::sqrt(trackMom.Mag2());
74 for(
size_t i =0 ;
i < indexes.size();
i++) tr.
push_back(m_selectedTracks[indexes[
i]]);
81 if((mode == Prob3D || mode == Prob2D)) cut=1e99;
82 return sortedIndexesWithCut(cut,mode);
87 multimap<float,size_t> sortedIdx;
88 size_t nSelectedTracks = m_selectedTracks.size();
89 std::vector<size_t>
result;
92 if((mode == Prob3D || mode == Prob2D) && ! hasProbabilities())
97 for(
size_t i=0;
i<nSelectedTracks;
i++)
103 sortingKey=m_data[
i].ip3d.significance();
106 sortingKey=m_data[
i].ip2d.significance();
109 sortingKey=m_data[
i].ip3d.value();
112 sortingKey=m_data[
i].ip2d.value();
115 sortingKey=m_prob3d[
i];
118 sortingKey=m_prob2d[
i];
124 sortedIdx.insert(std::pair<float,size_t>(sortingKey,
i));
128 if(mode == IP3DSig || mode == IP2DSig ||mode == IP3DValue || mode == IP2DValue)
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);
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);
virtual TaggingVariableList taggingVariables(void) const
returns a description of the extended informations in a TaggingVariableList
std::vector< size_t > sortedIndexesWithCut(float cut, SortCriteria mode=IP3DSig) const
Global3DPoint GlobalPoint
std::vector< size_t > sortedIndexes(SortCriteria mode=IP3DSig) const
XYZVectorD XYZVector
spatial vector with cartesian internal representation
static double etaRel(const math::XYZVector &dir, const math::XYZVector &track)
reco::TrackRefVector sortedTracks(std::vector< size_t > indexes) const
ROOT::Math::PositionVector3D< ROOT::Math::Cartesian3D< float >, ROOT::Math::GlobalCoordinateSystemTag > GlobalPoint
point in global coordinate system
char data[epos_bytes_allocation]
void push_back(value_type const &ref)
Add a Ref<C, T> to the RefVector.
void insert(const TaggingVariable &variable, bool delayed=false)