Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
vo005_Combinations.py
Go to the documentation of this file.
1## \file
2## \ingroup tutorial_vecops
3## \notebook -nodraw
4## In this tutorial we learn how combinations of RVecs can be built.
5##
6## \macro_code
7## \macro_output
8##
9## \date August 2018
10## \author Stefan Wunsch
11
12import ROOT
13from ROOT.VecOps import Take, Combinations
14
15# RVec can be sorted in Python with the inbuilt sorting function because
16# PyROOT implements a Python iterator
17v1 = ROOT.RVecD(3)
18v1[0], v1[1], v1[2] = 1, 2, 3
19v2 = ROOT.RVecD(2)
20v2[0], v2[1] = -4, -5
21
22# To get the indices, which result in all combinations, you can call the
23# following helper.
24# Note that you can also pass the size of the vectors directly.
25idx = Combinations(v1, v2)
26
27# Next, the respective elements can be taken via the computed indices.
28c1 = Take(v1, idx[0])
29c2 = Take(v2, idx[1])
30
31# Finally, you can perform any set of operations conveniently.
32v3 = c1 * c2
33
34print("Combinations of {} and {}:".format(v1, v2))
35for i in range(len(v3)):
36 print("{} * {} = {}".format(c1[i], c2[i], v3[i]))
37print
38
39# However, if you want to compute operations on unique combinations of a
40# single RVec, you can perform this as follows.
41
42# Get the indices of unique triples for the given vector.
43v4 = ROOT.RVecD(4)
44v4[0], v4[1], v4[2], v4[3] = 1, 2, 3, 4
45idx2 = Combinations(v4, 3)
46
47# Take the elements and compute any operation on the returned collections.
48c3 = Take(v4, idx2[0])
49c4 = Take(v4, idx2[1])
50c5 = Take(v4, idx2[2])
51
52v5 = c3 * c4 * c5
53
54print("Unique triples of {}:".format(v4))
55for i in range(len(v5)):
56 print("{} * {} * {} = {}".format(c3[i], c4[i], c5[i], v5[i]))
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 UChar_t len
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