In this tutorial we learn how combinations of RVecs can be built.

**Author:** Stefan Wunsch

*This notebook tutorial was automatically generated with ROOTBOOK-izer from the macro found in the ROOT repository on Tuesday, March 28, 2023 at 10:03 AM.*

In [1]:

```
import ROOT
from ROOT.VecOps import Take, Combinations
```

Welcome to JupyROOT 6.29/01

In [2]:

```
v1 = ROOT.RVecD(3)
v1[0], v1[1], v1[2] = 1, 2, 3
v2 = ROOT.RVecD(2)
v2[0], v2[1] = -4, -5
```

In [3]:

```
idx = Combinations(v1, v2)
```

Next, the respective elements can be taken via the computed indices.

In [4]:

```
c1 = Take(v1, idx[0])
c2 = Take(v2, idx[1])
```

Finally, you can perform any set of operations conveniently.

In [5]:

```
v3 = c1 * c2
print("Combinations of {} and {}:".format(v1, v2))
for i in range(len(v3)):
print("{} * {} = {}".format(c1[i], c2[i], v3[i]))
print
```

Combinations of { 1.0000000, 2.0000000, 3.0000000 } and { -4.0000000, -5.0000000 }: 1.0 * -4.0 = -4.0 1.0 * -5.0 = -5.0 2.0 * -4.0 = -8.0 2.0 * -5.0 = -10.0 3.0 * -4.0 = -12.0 3.0 * -5.0 = -15.0

Out[5]:

<function print>

Get the indices of unique triples for the given vector.

In [6]:

```
v4 = ROOT.RVecD(4)
v4[0], v4[1], v4[2], v4[3] = 1, 2, 3, 4
idx2 = Combinations(v4, 3)
```

Take the elements and compute any operation on the returned collections.

In [7]:

```
c3 = Take(v4, idx2[0])
c4 = Take(v4, idx2[1])
c5 = Take(v4, idx2[2])
v5 = c3 * c4 * c5
print("Unique triples of {}:".format(v4))
for i in range(len(v5)):
print("{} * {} * {} = {}".format(c3[i], c4[i], c5[i], v5[i]))
```