In this tutorial we learn how elements of an RVec can be easily sorted and selected.
import ROOT
from ROOT.VecOps import RVec, Argsort, Take, Sort, Reverse
v1 = RVec("double")(3)
v1[0], v1[1], v1[2] = 6, 4, 5
v2 = sorted(v1)
print("Sort vector {}: {}".format(v1, v2))
print("Sort vector {}: {}".format(v1, v2))
print("Reverse vector {}: {}".format(v1, v2))
print("Indices that sort the vector {}: {}".format(v1, v2))
v3 = RVec("double")(3)
v3[0], v3[1], v3[2] = 9, 7, 8
print("Sort vector {} respective to the previously determined indices: {}".format(v3, v4))
print("Take the two first and last elements of vector {}: {}, {}".format(v1, v2, v3))
print("Sort the vector {}, take the two last elements and reverse the selection: {}".format(v1, v2))
RVec< T > Reverse(const RVec< T > &v)
Return copy of reversed vector.
RVec< T > Take(const RVec< T > &v, const RVec< typename RVec< T >::size_type > &i)
Return elements of a vector at given indices.
RVec< typename RVec< T >::size_type > Argsort(const RVec< T > &v)
Return an RVec of indices that sort the input RVec.
void Sort(Index n, const Element *a, Index *index, Bool_t down=kTRUE)
Sort vector { 6.0000000, 4.0000000, 5.0000000 }: [4.0, 5.0, 6.0]
Sort vector { 6.0000000, 4.0000000, 5.0000000 }: { 4.0000000, 5.0000000, 6.0000000 }
Reverse vector { 6.0000000, 4.0000000, 5.0000000 }: { 5.0000000, 4.0000000, 6.0000000 }
Indices that sort the vector { 6.0000000, 4.0000000, 5.0000000 }: { 1, 2, 0 }
Sort vector { 9.0000000, 7.0000000, 8.0000000 } respective to the previously determined indices: { 7.0000000, 8.0000000, 9.0000000 }
Take the two first and last elements of vector { 6.0000000, 4.0000000, 5.0000000 }: { 6.0000000, 4.0000000 }, { 4.0000000, 5.0000000 }
Sort the vector { 6.0000000, 4.0000000, 5.0000000 }, take the two last elements and reverse the selection: { 6.0000000, 5.0000000 }
- Date
- August 2018
- Author
- Stefan Wunsch
Definition in file vo004_SortAndSelect.py.