Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
vo004_SortAndSelect.py File Reference

Detailed Description

View in nbviewer Open in SWAN
In this tutorial we learn how elements of an RVec can be easily sorted and selected.

import ROOT
from ROOT.VecOps import Argsort, Take, Sort, Reverse
# RVec can be sorted in Python with the inbuilt sorting function because
# PyROOT implements a Python iterator
v1 = ROOT.RVecD(3)
v1[0], v1[1], v1[2] = 6, 4, 5
v2 = sorted(v1)
print("Sort vector {}: {}".format(v1, v2))
# For convenience, ROOT implements helpers, e.g., to get a sorted copy of
# an RVec ...
v2 = Sort(v1);
print("Sort vector {}: {}".format(v1, v2))
# ... or a reversed copy of an RVec.
v2 = Reverse(v1);
print("Reverse vector {}: {}".format(v1, v2))
# Helpers are provided to get the indices that sort the vector and to
# select these indices from an RVec.
v2 = Argsort(v1)
print("Indices that sort the vector {}: {}".format(v1, v2))
v3 = ROOT.RVecD(3)
v3[0], v3[1], v3[2] = 9, 7, 8
v4 = Take(v3, v2)
print("Sort vector {} respective to the previously determined indices: {}".format(v3, v4))
# Take can also be used to get the first or last elements of an RVec.
v2 = Take(v1, 2)
v3 = Take(v1, -2)
print("Take the two first and last elements of vector {}: {}, {}".format(v1, v2, v3))
# Because the VecOps helpers return a copy of the input, you can chain the operations
# conveniently.
v2 = Reverse(Take(Sort(v1), -2))
print("Sort the vector {}, take the two last elements and reverse the selection: {}".format(v1, v2))
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t format
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.