{
"cells": [
{
"cell_type": "markdown",
"id": "b1cf071a",
"metadata": {},
"source": [
"# vo007_PhysicsHelpers\n",
"In this tutorial we demonstrate RVec helpers for physics computations such\n",
"as angle differences $\\Delta \\phi$, the distance in the $\\eta$-$\\phi$\n",
"plane $\\Delta R$ and the invariant mass.\n",
"\n",
"\n",
"\n",
"\n",
"**Author:** Stefan Wunsch \n",
"This notebook tutorial was automatically generated with ROOTBOOK-izer from the macro found in the ROOT repository on Tuesday, March 19, 2024 at 07:22 PM."
]
},
{
"cell_type": "markdown",
"id": "1bc1b8a6",
"metadata": {},
"source": [
"The DeltaPhi helper computes the closest angle between angles.\n",
"This means that the resulting value is in the range [-pi, pi]."
]
},
{
"cell_type": "markdown",
"id": "97ea6a27",
"metadata": {},
"source": [
"Note that the helper also supports to compute the angle difference of an\n",
"RVec and a scalar and two scalars. In addition, the computation of the\n",
"difference and the behaviour at the boundary can be adjusted to radian and\n",
"degrees."
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "f6b1f859",
"metadata": {
"collapsed": false,
"execution": {
"iopub.execute_input": "2024-03-19T19:22:56.528356Z",
"iopub.status.busy": "2024-03-19T19:22:56.527973Z",
"iopub.status.idle": "2024-03-19T19:22:57.237372Z",
"shell.execute_reply": "2024-03-19T19:22:57.236153Z"
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"input_line_43:3:1: error: Syntax error\n",
"auto idx = Combinations(phis, 2);\n",
"^\n",
"FunctionDecl 0x85cdcd0 line:1:6 __cling_Un1Qu318 'void (void *)'\n",
"|-ParmVarDecl 0x85cdc18 col:29 vpClingValue 'void *'\n",
"|-CompoundStmt 0x7f1598062058 \n",
"| |-DeclStmt 0x85dade0 \n",
"| | `-VarDecl 0x85ce2d0 col:14 used phis 'ROOT::RVecF':'ROOT::VecOps::RVec' cinit destroyed\n",
"| | `-ExprWithCleanups 0x85da1e0 'ROOT::RVecF':'ROOT::VecOps::RVec'\n",
"| | `-CXXConstructExpr 0x85da1b0 'ROOT::RVecF':'ROOT::VecOps::RVec' 'void (std::initializer_list)' list std::initializer_list\n",
"| | `-CXXStdInitializerListExpr 0x85d52f0 'std::initializer_list':'std::initializer_list'\n",
"| | `-MaterializeTemporaryExpr 0x85d52d8 'const float[4]' xvalue\n",
"| | `-InitListExpr 0x85d5218 'const float[4]'\n",
"| | |-ImplicitCastExpr 0x85d5278 'const float' \n",
"| | | `-FloatingLiteral 0x85ce338 'double' 0.000000e+00\n",
"| | |-ImplicitCastExpr 0x85d5290 'const float' \n",
"| | | `-FloatingLiteral 0x85ce358 'double' 1.000000e+00\n",
"| | |-ImplicitCastExpr 0x85d52a8 'const float' \n",
"| | | `-UnaryOperator 0x85ce398 'double' prefix '-'\n",
"| | | `-FloatingLiteral 0x85ce378 'double' 5.000000e-01\n",
"| | `-ImplicitCastExpr 0x85d52c0 'const float' \n",
"| | `-BinaryOperator 0x85ce3f0 'double' '+'\n",
"| | |-FloatingLiteral 0x85ce3b0 'double' 3.141593e+00\n",
"| | `-FloatingLiteral 0x85ce3d0 'double' 1.000000e+00\n",
"| |-DeclStmt 0x85db140 \n",
"| | `-VarDecl 0x85dae40 col:6 used idx 'auto' cinit\n",
"| | `-CallExpr 0x85db110 ''\n",
"| | |-DeclRefExpr 0x85db090 '' lvalue Var 0x85dafb8 'Combinations' ''\n",
"| | |-DeclRefExpr 0x85db0d0 'ROOT::RVecF':'ROOT::VecOps::RVec' lvalue Var 0x85ce2d0 'phis' 'ROOT::RVecF':'ROOT::VecOps::RVec'\n",
"| | `-IntegerLiteral 0x85db0f0 'int' 2\n",
"| |-DeclStmt 0x85db4d0 \n",
"| | `-VarDecl 0x85db1a0 col:6 used phi1 'auto' cinit\n",
"| | `-CallExpr 0x85db4a0 ''\n",
"| | |-DeclRefExpr 0x85db3c0 '' lvalue Var 0x85db2e8 'Take' ''\n",
"| | |-DeclRefExpr 0x85db400 'ROOT::RVecF':'ROOT::VecOps::RVec' lvalue Var 0x85ce2d0 'phis' 'ROOT::RVecF':'ROOT::VecOps::RVec'\n",
"| | `-ArraySubscriptExpr 0x85db480 '' lvalue\n",
"| | |-DeclRefExpr 0x85db420 'auto' lvalue Var 0x85dae40 'idx' 'auto'\n",
"| | `-IntegerLiteral 0x85db460 'int' 0\n",
"| |-DeclStmt 0x85db840 \n",
"| | `-VarDecl 0x85db530 col:6 used phi2 'auto' cinit\n",
"| | `-CallExpr 0x85db810 ''\n",
"| | |-DeclRefExpr 0x85db750 '' lvalue Var 0x85db678 'Take' ''\n",
"| | |-DeclRefExpr 0x85db790 'ROOT::RVecF':'ROOT::VecOps::RVec' lvalue Var 0x85ce2d0 'phis' 'ROOT::RVecF':'ROOT::VecOps::RVec'\n",
"| | `-ArraySubscriptExpr 0x85db7f0 '' lvalue\n",
"| | |-DeclRefExpr 0x85db7b0 'auto' lvalue Var 0x85dae40 'idx' 'auto'\n",
"| | `-IntegerLiteral 0x85db7d0 'int' 1\n",
"| |-DeclStmt 0x85dbbb0 \n",
"| | `-VarDecl 0x85db8a0 col:6 used dphi 'auto' cinit\n",
"| | `-CallExpr 0x85dbb80 ''\n",
"| | |-DeclRefExpr 0x85dbac0 '' lvalue Var 0x85db9e8 'DeltaPhi' ''\n",
"| | |-DeclRefExpr 0x85dbb00 'auto' lvalue Var 0x85db1a0 'phi1' 'auto'\n",
"| | `-DeclRefExpr 0x85dbb40 'auto' lvalue Var 0x85db530 'phi2' 'auto'\n",
"| |-CXXOperatorCallExpr 0x7f1598062018 '' '<<'\n",
"| | |-UnresolvedLookupExpr 0x7f1598061cd8 '' lvalue (ADL) = 'operator<<' 0x45d2538 0x4582f78 0x45828d8 0x45cfaf8 0x45cfd80 0x45d0010 0x45d02a0 0x45d0530 0x45d07c0 0x45d0a50 0x45d0ce0 0x45d0f70 0x45d1200 0x45d1490 0x45d1720 0x45d19b0 0x45d1c40 0x45d1f08 0x5ac0468 0x5ac2ad8 0x5ac9d78 0x5acac68 0x5ad80e8 0x5ad8408 0x5aea898 0x5aeb998 0x5aeccd8 0x5aee0a8 0x5aef3e8 0x5af0728 0x5af27d0 0x5d4bcf8 0x5d4d6d8 0x5f304e8 0x4ab5e30 0x4ad51e8 0x4f05c78 0x4faf910 0x4ffe5c8 0x4ffec68 0x4fff308 0x4fff998 0x4ffffa0 0x50005b0 0x5007820 0x5001330 0x5001940 0x5001f80 0x5006408 0x50502b0 0x4d08b00 0x5178808 0x521c688 0x5272fe8 0x5274088 0x5275108 0x5276678 0x5277788 0x5278808 0x527a720 0x527b800 0x536f548 0x53a8948 0x537bbd8 0x537cb38 0x537da98 0x537ea08 0x53cbd98 0x537f0f8 0x53e1b38 0x5380058 0x5380fb8 0x5381f18 0x5389188 0x53b27d8 0x53b4e00 0x53b74d8 0x53c2298 0x53c4f68 0x53c8758 0x53d5838 0x53d8390 0x53dc6b8 0x53df078 0x53eec68 0x53f39d8 0x53f8678 0x584a300 0x557a208 0x557aea0 0x557b908 0x557c368 0x557ce58 0x561e980 0x561f3e0 0x561fde0\n",
"| | |-CXXOperatorCallExpr 0x7f1598061c80 '' '<<'\n",
"| | | |-UnresolvedLookupExpr 0x7f1598061940 '' lvalue (ADL) = 'operator<<' 0x45d2538 0x4582f78 0x45828d8 0x45cfaf8 0x45cfd80 0x45d0010 0x45d02a0 0x45d0530 0x45d07c0 0x45d0a50 0x45d0ce0 0x45d0f70 0x45d1200 0x45d1490 0x45d1720 0x45d19b0 0x45d1c40 0x45d1f08 0x5ac0468 0x5ac2ad8 0x5ac9d78 0x5acac68 0x5ad80e8 0x5ad8408 0x5aea898 0x5aeb998 0x5aeccd8 0x5aee0a8 0x5aef3e8 0x5af0728 0x5af27d0 0x5d4bcf8 0x5d4d6d8 0x5f304e8 0x4ab5e30 0x4ad51e8 0x4f05c78 0x4faf910 0x4ffe5c8 0x4ffec68 0x4fff308 0x4fff998 0x4ffffa0 0x50005b0 0x5007820 0x5001330 0x5001940 0x5001f80 0x5006408 0x50502b0 0x4d08b00 0x5178808 0x521c688 0x5272fe8 0x5274088 0x5275108 0x5276678 0x5277788 0x5278808 0x527a720 0x527b800 0x536f548 0x53a8948 0x537bbd8 0x537cb38 0x537da98 0x537ea08 0x53cbd98 0x537f0f8 0x53e1b38 0x5380058 0x5380fb8 0x5381f18 0x5389188 0x53b27d8 0x53b4e00 0x53b74d8 0x53c2298 0x53c4f68 0x53c8758 0x53d5838 0x53d8390 0x53dc6b8 0x53df078 0x53eec68 0x53f39d8 0x53f8678 0x584a300 0x557a208 0x557aea0 0x557b908 0x557c368 0x557ce58 0x561e980 0x561f3e0 0x561fde0\n",
"| | | |-CXXOperatorCallExpr 0x7f15980618c8 '' '<<'\n",
"| | | | |-UnresolvedLookupExpr 0x7f1598061588 '' lvalue (ADL) = 'operator<<' 0x45d2538 0x4582f78 0x45828d8 0x45cfaf8 0x45cfd80 0x45d0010 0x45d02a0 0x45d0530 0x45d07c0 0x45d0a50 0x45d0ce0 0x45d0f70 0x45d1200 0x45d1490 0x45d1720 0x45d19b0 0x45d1c40 0x45d1f08 0x5ac0468 0x5ac2ad8 0x5ac9d78 0x5acac68 0x5ad80e8 0x5ad8408 0x5aea898 0x5aeb998 0x5aeccd8 0x5aee0a8 0x5aef3e8 0x5af0728 0x5af27d0 0x5d4bcf8 0x5d4d6d8 0x5f304e8 0x4ab5e30 0x4ad51e8 0x4f05c78 0x4faf910 0x4ffe5c8 0x4ffec68 0x4fff308 0x4fff998 0x4ffffa0 0x50005b0 0x5007820 0x5001330 0x5001940 0x5001f80 0x5006408 0x50502b0 0x4d08b00 0x5178808 0x521c688 0x5272fe8 0x5274088 0x5275108 0x5276678 0x5277788 0x5278808 0x527a720 0x527b800 0x536f548 0x53a8948 0x537bbd8 0x537cb38 0x537da98 0x537ea08 0x53cbd98 0x537f0f8 0x53e1b38 0x5380058 0x5380fb8 0x5381f18 0x5389188 0x53b27d8 0x53b4e00 0x53b74d8 0x53c2298 0x53c4f68 0x53c8758 0x53d5838 0x53d8390 0x53dc6b8 0x53df078 0x53eec68 0x53f39d8 0x53f8678 0x584a300 0x557a208 0x557aea0 0x557b908 0x557c368 0x557ce58 0x561e980 0x561f3e0 0x561fde0\n",
"| | | | |-CXXOperatorCallExpr 0x7f1598061530 '' '<<'\n",
"| | | | | |-UnresolvedLookupExpr 0x7f15980611f0 '' lvalue (ADL) = 'operator<<' 0x45d2538 0x4582f78 0x45828d8 0x45cfaf8 0x45cfd80 0x45d0010 0x45d02a0 0x45d0530 0x45d07c0 0x45d0a50 0x45d0ce0 0x45d0f70 0x45d1200 0x45d1490 0x45d1720 0x45d19b0 0x45d1c40 0x45d1f08 0x5ac0468 0x5ac2ad8 0x5ac9d78 0x5acac68 0x5ad80e8 0x5ad8408 0x5aea898 0x5aeb998 0x5aeccd8 0x5aee0a8 0x5aef3e8 0x5af0728 0x5af27d0 0x5d4bcf8 0x5d4d6d8 0x5f304e8 0x4ab5e30 0x4ad51e8 0x4f05c78 0x4faf910 0x4ffe5c8 0x4ffec68 0x4fff308 0x4fff998 0x4ffffa0 0x50005b0 0x5007820 0x5001330 0x5001940 0x5001f80 0x5006408 0x50502b0 0x4d08b00 0x5178808 0x521c688 0x5272fe8 0x5274088 0x5275108 0x5276678 0x5277788 0x5278808 0x527a720 0x527b800 0x536f548 0x53a8948 0x537bbd8 0x537cb38 0x537da98 0x537ea08 0x53cbd98 0x537f0f8 0x53e1b38 0x5380058 0x5380fb8 0x5381f18 0x5389188 0x53b27d8 0x53b4e00 0x53b74d8 0x53c2298 0x53c4f68 0x53c8758 0x53d5838 0x53d8390 0x53dc6b8 0x53df078 0x53eec68 0x53f39d8 0x53f8678 0x584a300 0x557a208 0x557aea0 0x557b908 0x557c368 0x557ce58 0x561e980 0x561f3e0 0x561fde0\n",
"| | | | | |-CXXOperatorCallExpr 0x7f1598061198 '' '<<'\n",
"| | | | | | |-UnresolvedLookupExpr 0x7f1598060e58 '' lvalue (ADL) = 'operator<<' 0x45d2538 0x4582f78 0x45828d8 0x45cfaf8 0x45cfd80 0x45d0010 0x45d02a0 0x45d0530 0x45d07c0 0x45d0a50 0x45d0ce0 0x45d0f70 0x45d1200 0x45d1490 0x45d1720 0x45d19b0 0x45d1c40 0x45d1f08 0x5ac0468 0x5ac2ad8 0x5ac9d78 0x5acac68 0x5ad80e8 0x5ad8408 0x5aea898 0x5aeb998 0x5aeccd8 0x5aee0a8 0x5aef3e8 0x5af0728 0x5af27d0 0x5d4bcf8 0x5d4d6d8 0x5f304e8 0x4ab5e30 0x4ad51e8 0x4f05c78 0x4faf910 0x4ffe5c8 0x4ffec68 0x4fff308 0x4fff998 0x4ffffa0 0x50005b0 0x5007820 0x5001330 0x5001940 0x5001f80 0x5006408 0x50502b0 0x4d08b00 0x5178808 0x521c688 0x5272fe8 0x5274088 0x5275108 0x5276678 0x5277788 0x5278808 0x527a720 0x527b800 0x536f548 0x53a8948 0x537bbd8 0x537cb38 0x537da98 0x537ea08 0x53cbd98 0x537f0f8 0x53e1b38 0x5380058 0x5380fb8 0x5381f18 0x5389188 0x53b27d8 0x53b4e00 0x53b74d8 0x53c2298 0x53c4f68 0x53c8758 0x53d5838 0x53d8390 0x53dc6b8 0x53df078 0x53eec68 0x53f39d8 0x53f8678 0x584a300 0x557a208 0x557aea0 0x557b908 0x557c368 0x557ce58 0x561e980 0x561f3e0 0x561fde0\n",
"| | | | | | |-CXXOperatorCallExpr 0x7f1598060e00 '' '<<'\n",
"| | | | | | | |-UnresolvedLookupExpr 0x7f1598060ac0 '' lvalue (ADL) = 'operator<<' 0x45d2538 0x4582f78 0x45828d8 0x45cfaf8 0x45cfd80 0x45d0010 0x45d02a0 0x45d0530 0x45d07c0 0x45d0a50 0x45d0ce0 0x45d0f70 0x45d1200 0x45d1490 0x45d1720 0x45d19b0 0x45d1c40 0x45d1f08 0x5ac0468 0x5ac2ad8 0x5ac9d78 0x5acac68 0x5ad80e8 0x5ad8408 0x5aea898 0x5aeb998 0x5aeccd8 0x5aee0a8 0x5aef3e8 0x5af0728 0x5af27d0 0x5d4bcf8 0x5d4d6d8 0x5f304e8 0x4ab5e30 0x4ad51e8 0x4f05c78 0x4faf910 0x4ffe5c8 0x4ffec68 0x4fff308 0x4fff998 0x4ffffa0 0x50005b0 0x5007820 0x5001330 0x5001940 0x5001f80 0x5006408 0x50502b0 0x4d08b00 0x5178808 0x521c688 0x5272fe8 0x5274088 0x5275108 0x5276678 0x5277788 0x5278808 0x527a720 0x527b800 0x536f548 0x53a8948 0x537bbd8 0x537cb38 0x537da98 0x537ea08 0x53cbd98 0x537f0f8 0x53e1b38 0x5380058 0x5380fb8 0x5381f18 0x5389188 0x53b27d8 0x53b4e00 0x53b74d8 0x53c2298 0x53c4f68 0x53c8758 0x53d5838 0x53d8390 0x53dc6b8 0x53df078 0x53eec68 0x53f39d8 0x53f8678 0x584a300 0x557a208 0x557aea0 0x557b908 0x557c368 0x557ce58 0x561e980 0x561f3e0 0x561fde0\n",
"| | | | | | | |-CXXOperatorCallExpr 0x7f1598060a60 '' '<<'\n",
"| | | | | | | | |-UnresolvedLookupExpr 0x7f1598060720 '' lvalue (ADL) = 'operator<<' 0x45d2538 0x4582f78 0x45828d8 0x45cfaf8 0x45cfd80 0x45d0010 0x45d02a0 0x45d0530 0x45d07c0 0x45d0a50 0x45d0ce0 0x45d0f70 0x45d1200 0x45d1490 0x45d1720 0x45d19b0 0x45d1c40 0x45d1f08 0x5ac0468 0x5ac2ad8 0x5ac9d78 0x5acac68 0x5ad80e8 0x5ad8408 0x5aea898 0x5aeb998 0x5aeccd8 0x5aee0a8 0x5aef3e8 0x5af0728 0x5af27d0 0x5d4bcf8 0x5d4d6d8 0x5f304e8 0x4ab5e30 0x4ad51e8 0x4f05c78 0x4faf910 0x4ffe5c8 0x4ffec68 0x4fff308 0x4fff998 0x4ffffa0 0x50005b0 0x5007820 0x5001330 0x5001940 0x5001f80 0x5006408 0x50502b0 0x4d08b00 0x5178808 0x521c688 0x5272fe8 0x5274088 0x5275108 0x5276678 0x5277788 0x5278808 0x527a720 0x527b800 0x536f548 0x53a8948 0x537bbd8 0x537cb38 0x537da98 0x537ea08 0x53cbd98 0x537f0f8 0x53e1b38 0x5380058 0x5380fb8 0x5381f18 0x5389188 0x53b27d8 0x53b4e00 0x53b74d8 0x53c2298 0x53c4f68 0x53c8758 0x53d5838 0x53d8390 0x53dc6b8 0x53df078 0x53eec68 0x53f39d8 0x53f8678 0x584a300 0x557a208 0x557aea0 0x557b908 0x557c368 0x557ce58 0x561e980 0x561f3e0 0x561fde0\n",
"| | | | | | | | |-CXXOperatorCallExpr 0x7f15980606c8 '' '<<'\n",
"| | | | | | | | | |-UnresolvedLookupExpr 0x7f1598060388 '' lvalue (ADL) = 'operator<<' 0x45d2538 0x4582f78 0x45828d8 0x45cfaf8 0x45cfd80 0x45d0010 0x45d02a0 0x45d0530 0x45d07c0 0x45d0a50 0x45d0ce0 0x45d0f70 0x45d1200 0x45d1490 0x45d1720 0x45d19b0 0x45d1c40 0x45d1f08 0x5ac0468 0x5ac2ad8 0x5ac9d78 0x5acac68 0x5ad80e8 0x5ad8408 0x5aea898 0x5aeb998 0x5aeccd8 0x5aee0a8 0x5aef3e8 0x5af0728 0x5af27d0 0x5d4bcf8 0x5d4d6d8 0x5f304e8 0x4ab5e30 0x4ad51e8 0x4f05c78 0x4faf910 0x4ffe5c8 0x4ffec68 0x4fff308 0x4fff998 0x4ffffa0 0x50005b0 0x5007820 0x5001330 0x5001940 0x5001f80 0x5006408 0x50502b0 0x4d08b00 0x5178808 0x521c688 0x5272fe8 0x5274088 0x5275108 0x5276678 0x5277788 0x5278808 0x527a720 0x527b800 0x536f548 0x53a8948 0x537bbd8 0x537cb38 0x537da98 0x537ea08 0x53cbd98 0x537f0f8 0x53e1b38 0x5380058 0x5380fb8 0x5381f18 0x5389188 0x53b27d8 0x53b4e00 0x53b74d8 0x53c2298 0x53c4f68 0x53c8758 0x53d5838 0x53d8390 0x53dc6b8 0x53df078 0x53eec68 0x53f39d8 0x53f8678 0x584a300 0x557a208 0x557aea0 0x557b908 0x557c368 0x557ce58 0x561e980 0x561f3e0 0x561fde0\n",
"| | | | | | | | | |-CXXOperatorCallExpr 0x7f1598060330 'basic_ostream >':'std::basic_ostream' lvalue '<<'\n",
"| | | | | | | | | | |-ImplicitCastExpr 0x7f1598060318 'basic_ostream > &(*)(basic_ostream > &, const char *)' \n",
"| | | | | | | | | | | `-DeclRefExpr 0x7f159805f730 'basic_ostream > &(basic_ostream > &, const char *)' lvalue Function 0x85e1718 'operator<<' 'basic_ostream > &(basic_ostream > &, const char *)'\n",
"| | | | | | | | | | |-DeclRefExpr 0x85dbc18 'ostream':'std::basic_ostream' lvalue Var 0x5293918 'cout' 'ostream':'std::basic_ostream'\n",
"| | | | | | | | | | `-ImplicitCastExpr 0x7f159805f718 'const char *' \n",
"| | | | | | | | | | `-StringLiteral 0x85dbc48 'const char[17]' lvalue \"DeltaPhi(phi1 = \"\n",
"| | | | | | | | | `-DeclRefExpr 0x7f1598060368 'auto' lvalue Var 0x85db1a0 'phi1' 'auto'\n",
"| | | | | | | | `-StringLiteral 0x7f1598060700 'const char[3]' lvalue \",\\n\"\n",
"| | | | | | | `-StringLiteral 0x7f1598060a98 'const char[17]' lvalue \" phi2 = \"\n",
"| | | | | | `-DeclRefExpr 0x7f1598060e38 'auto' lvalue Var 0x85db530 'phi2' 'auto'\n",
"| | | | | `-StringLiteral 0x7f15980611d0 'const char[3]' lvalue \")\\n\"\n",
"| | | | `-StringLiteral 0x7f1598061568 'const char[4]' lvalue \" = \"\n",
"| | | `-DeclRefExpr 0x7f1598061900 'auto' lvalue Var 0x85db8a0 'dphi' 'auto'\n",
"| | `-StringLiteral 0x7f1598061cb8 'const char[2]' lvalue \"\\n\"\n",
"| `-NullStmt 0x7f1598062050 \n",
"|-AnnotateAttr 0x85daf18 <> Implicit R\"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP\"\n",
"|-AnnotateAttr 0x85db020 <> Implicit R\"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP\"\n",
"|-AnnotateAttr 0x85db278 <> Implicit R\"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP\"\n",
"|-AnnotateAttr 0x85db350 <> Implicit R\"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP\"\n",
"|-AnnotateAttr 0x85db608 <> Implicit R\"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP\"\n",
"|-AnnotateAttr 0x85db6e0 <> Implicit R\"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP\"\n",
"|-AnnotateAttr 0x85db978 <> Implicit R\"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP\"\n",
"`-AnnotateAttr 0x85dba50 <> Implicit R\"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP\"\n",
"<<>>\n"
]
}
],
"source": [
"ROOT::RVecF phis = {0.0, 1.0, -0.5, M_PI + 1.0};\n",
"auto idx = Combinations(phis, 2);\n",
"\n",
"auto phi1 = Take(phis, idx[0]);\n",
"auto phi2 = Take(phis, idx[1]);\n",
"auto dphi = DeltaPhi(phi1, phi2);\n",
"\n",
"std::cout << \"DeltaPhi(phi1 = \" << phi1 << \",\\n\"\n",
" << \" phi2 = \" << phi2 << \")\\n\"\n",
" << \" = \" << dphi << \"\\n\";"
]
},
{
"cell_type": "markdown",
"id": "75fb4304",
"metadata": {},
"source": [
"The DeltaR helper is similar to the DeltaPhi helper and computes the distance\n",
"in the $\\eta$-$\\phi$ plane."
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "aad6e543",
"metadata": {
"collapsed": false,
"execution": {
"iopub.execute_input": "2024-03-19T19:22:57.242152Z",
"iopub.status.busy": "2024-03-19T19:22:57.241765Z",
"iopub.status.idle": "2024-03-19T19:22:57.474039Z",
"shell.execute_reply": "2024-03-19T19:22:57.472879Z"
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"input_line_52:4:1: error: Syntax error\n",
"auto eta1 = Take(etas, idx[0]);\n",
"^\n",
"FunctionDecl 0x7f1599ce1858 line:1:6 __cling_Un1Qu320 'void (void *)'\n",
"|-ParmVarDecl 0x7f1599ce17a0 col:29 vpClingValue 'void *'\n",
"|-CompoundStmt 0x7f1599ce8530 \n",
"| |-DeclStmt 0x7f1599ce1c30 \n",
"| | `-VarDecl 0x7f1599ce1978 col:14 used etas 'ROOT::RVecF':'ROOT::VecOps::RVec' cinit destroyed\n",
"| | `-ExprWithCleanups 0x7f1599ce1bf8 'ROOT::RVecF':'ROOT::VecOps::RVec'\n",
"| | `-CXXConstructExpr 0x7f1599ce1bc8 'ROOT::RVecF':'ROOT::VecOps::RVec' 'void (std::initializer_list)' list std::initializer_list\n",
"| | `-CXXStdInitializerListExpr 0x7f1599ce1bb0 'std::initializer_list':'std::initializer_list'\n",
"| | `-MaterializeTemporaryExpr 0x7f1599ce1b98 'const float[4]' xvalue\n",
"| | `-InitListExpr 0x7f1599ce1ad8 'const float[4]'\n",
"| | |-ImplicitCastExpr 0x7f1599ce1b38 'const float' \n",
"| | | `-FloatingLiteral 0x7f1599ce19e0 'double' 2.400000e+00\n",
"| | |-ImplicitCastExpr 0x7f1599ce1b50 'const float' \n",
"| | | `-UnaryOperator 0x7f1599ce1a20 'double' prefix '-'\n",
"| | | `-FloatingLiteral 0x7f1599ce1a00 'double' 1.500000e+00\n",
"| | |-ImplicitCastExpr 0x7f1599ce1b68 'const float' \n",
"| | | `-FloatingLiteral 0x7f1599ce1a38 'double' 1.000000e+00\n",
"| | `-ImplicitCastExpr 0x7f1599ce1b80 'const float' \n",
"| | `-FloatingLiteral 0x7f1599ce1a58 'double' 0.000000e+00\n",
"| |-DeclStmt 0x7f1599ce20d0 \n",
"| | `-VarDecl 0x7f1599ce1c90 col:6 used eta1 'auto' cinit\n",
"| | `-CallExpr 0x7f1599ce20a0 ''\n",
"| | |-DeclRefExpr 0x7f1599ce1ee0 '' lvalue Var 0x7f1599ce1e08 'Take' ''\n",
"| | |-DeclRefExpr 0x7f1599ce1f20 'ROOT::RVecF':'ROOT::VecOps::RVec' lvalue Var 0x7f1599ce1978 'etas' 'ROOT::RVecF':'ROOT::VecOps::RVec'\n",
"| | `-ArraySubscriptExpr 0x7f1599ce2080 '' lvalue\n",
"| | |-DeclRefExpr 0x7f1599ce2020 '' lvalue Var 0x7f1599ce1f48 'idx' ''\n",
"| | `-IntegerLiteral 0x7f1599ce2060 'int' 0\n",
"| |-DeclStmt 0x7f1599ce2540 \n",
"| | `-VarDecl 0x7f1599ce2130 col:6 used eta2 'auto' cinit\n",
"| | `-CallExpr 0x7f1599ce2510 ''\n",
"| | |-DeclRefExpr 0x7f1599ce2350 '' lvalue Var 0x7f1599ce2278 'Take' ''\n",
"| | |-DeclRefExpr 0x7f1599ce2390 'ROOT::RVecF':'ROOT::VecOps::RVec' lvalue Var 0x7f1599ce1978 'etas' 'ROOT::RVecF':'ROOT::VecOps::RVec'\n",
"| | `-ArraySubscriptExpr 0x7f1599ce24f0 '' lvalue\n",
"| | |-DeclRefExpr 0x7f1599ce2490 '' lvalue Var 0x7f1599ce23b8 'idx' ''\n",
"| | `-IntegerLiteral 0x7f1599ce24d0 'int' 1\n",
"| |-DeclStmt 0x7f1599ce2b00 \n",
"| | `-VarDecl 0x7f1599ce25a0 col:6 used dr 'auto' cinit\n",
"| | `-CallExpr 0x7f1599ce2ac0 ''\n",
"| | |-DeclRefExpr 0x7f1599ce27c0 '' lvalue Var 0x7f1599ce26e8 'DeltaR' ''\n",
"| | |-DeclRefExpr 0x7f1599ce2800 'auto' lvalue Var 0x7f1599ce1c90 'eta1' 'auto'\n",
"| | |-DeclRefExpr 0x7f1599ce2840 'auto' lvalue Var 0x7f1599ce2130 'eta2' 'auto'\n",
"| | |-DeclRefExpr 0x7f1599ce2960 '' lvalue Var 0x7f1599ce2888 'phi1' ''\n",
"| | `-DeclRefExpr 0x7f1599ce2a80 '' lvalue Var 0x7f1599ce29a8 'phi2' ''\n",
"| |-CXXOperatorCallExpr 0x7f1599ce84f0 '' '<<'\n",
"| | |-UnresolvedLookupExpr 0x7f1599ce81b0 '' lvalue (ADL) = 'operator<<' 0x45d2538 0x4582f78 0x45828d8 0x45cfaf8 0x45cfd80 0x45d0010 0x45d02a0 0x45d0530 0x45d07c0 0x45d0a50 0x45d0ce0 0x45d0f70 0x45d1200 0x45d1490 0x45d1720 0x45d19b0 0x45d1c40 0x45d1f08 0x5ac0468 0x5ac2ad8 0x5ac9d78 0x5acac68 0x5ad80e8 0x5ad8408 0x5aea898 0x5aeb998 0x5aeccd8 0x5aee0a8 0x5aef3e8 0x5af0728 0x5af27d0 0x5d4bcf8 0x5d4d6d8 0x5f304e8 0x4ab5e30 0x4ad51e8 0x4f05c78 0x4faf910 0x4ffe5c8 0x4ffec68 0x4fff308 0x4fff998 0x4ffffa0 0x50005b0 0x5007820 0x5001330 0x5001940 0x5001f80 0x5006408 0x50502b0 0x4d08b00 0x5178808 0x521c688 0x5272fe8 0x5274088 0x5275108 0x5276678 0x5277788 0x5278808 0x527a720 0x527b800 0x536f548 0x53a8948 0x537bbd8 0x537cb38 0x537da98 0x537ea08 0x53cbd98 0x537f0f8 0x53e1b38 0x5380058 0x5380fb8 0x5381f18 0x5389188 0x53b27d8 0x53b4e00 0x53b74d8 0x53c2298 0x53c4f68 0x53c8758 0x53d5838 0x53d8390 0x53dc6b8 0x53df078 0x53eec68 0x53f39d8 0x53f8678 0x584a300 0x557a208 0x557aea0 0x557b908 0x557c368 0x557ce58 0x561e980 0x561f3e0 0x561fde0\n",
"| | |-CXXOperatorCallExpr 0x7f1599ce8158 '' '<<'\n",
"| | | |-UnresolvedLookupExpr 0x7f1599ce7e18 '' lvalue (ADL) = 'operator<<' 0x45d2538 0x4582f78 0x45828d8 0x45cfaf8 0x45cfd80 0x45d0010 0x45d02a0 0x45d0530 0x45d07c0 0x45d0a50 0x45d0ce0 0x45d0f70 0x45d1200 0x45d1490 0x45d1720 0x45d19b0 0x45d1c40 0x45d1f08 0x5ac0468 0x5ac2ad8 0x5ac9d78 0x5acac68 0x5ad80e8 0x5ad8408 0x5aea898 0x5aeb998 0x5aeccd8 0x5aee0a8 0x5aef3e8 0x5af0728 0x5af27d0 0x5d4bcf8 0x5d4d6d8 0x5f304e8 0x4ab5e30 0x4ad51e8 0x4f05c78 0x4faf910 0x4ffe5c8 0x4ffec68 0x4fff308 0x4fff998 0x4ffffa0 0x50005b0 0x5007820 0x5001330 0x5001940 0x5001f80 0x5006408 0x50502b0 0x4d08b00 0x5178808 0x521c688 0x5272fe8 0x5274088 0x5275108 0x5276678 0x5277788 0x5278808 0x527a720 0x527b800 0x536f548 0x53a8948 0x537bbd8 0x537cb38 0x537da98 0x537ea08 0x53cbd98 0x537f0f8 0x53e1b38 0x5380058 0x5380fb8 0x5381f18 0x5389188 0x53b27d8 0x53b4e00 0x53b74d8 0x53c2298 0x53c4f68 0x53c8758 0x53d5838 0x53d8390 0x53dc6b8 0x53df078 0x53eec68 0x53f39d8 0x53f8678 0x584a300 0x557a208 0x557aea0 0x557b908 0x557c368 0x557ce58 0x561e980 0x561f3e0 0x561fde0\n",
"| | | |-CXXOperatorCallExpr 0x7f1599ce7da0 '' '<<'\n",
"| | | | |-UnresolvedLookupExpr 0x7f1599ce7a60 '' lvalue (ADL) = 'operator<<' 0x45d2538 0x4582f78 0x45828d8 0x45cfaf8 0x45cfd80 0x45d0010 0x45d02a0 0x45d0530 0x45d07c0 0x45d0a50 0x45d0ce0 0x45d0f70 0x45d1200 0x45d1490 0x45d1720 0x45d19b0 0x45d1c40 0x45d1f08 0x5ac0468 0x5ac2ad8 0x5ac9d78 0x5acac68 0x5ad80e8 0x5ad8408 0x5aea898 0x5aeb998 0x5aeccd8 0x5aee0a8 0x5aef3e8 0x5af0728 0x5af27d0 0x5d4bcf8 0x5d4d6d8 0x5f304e8 0x4ab5e30 0x4ad51e8 0x4f05c78 0x4faf910 0x4ffe5c8 0x4ffec68 0x4fff308 0x4fff998 0x4ffffa0 0x50005b0 0x5007820 0x5001330 0x5001940 0x5001f80 0x5006408 0x50502b0 0x4d08b00 0x5178808 0x521c688 0x5272fe8 0x5274088 0x5275108 0x5276678 0x5277788 0x5278808 0x527a720 0x527b800 0x536f548 0x53a8948 0x537bbd8 0x537cb38 0x537da98 0x537ea08 0x53cbd98 0x537f0f8 0x53e1b38 0x5380058 0x5380fb8 0x5381f18 0x5389188 0x53b27d8 0x53b4e00 0x53b74d8 0x53c2298 0x53c4f68 0x53c8758 0x53d5838 0x53d8390 0x53dc6b8 0x53df078 0x53eec68 0x53f39d8 0x53f8678 0x584a300 0x557a208 0x557aea0 0x557b908 0x557c368 0x557ce58 0x561e980 0x561f3e0 0x561fde0\n",
"| | | | |-CXXOperatorCallExpr 0x7f1599ce7a08 '' '<<'\n",
"| | | | | |-UnresolvedLookupExpr 0x7f1599ce76c8 '' lvalue (ADL) = 'operator<<' 0x45d2538 0x4582f78 0x45828d8 0x45cfaf8 0x45cfd80 0x45d0010 0x45d02a0 0x45d0530 0x45d07c0 0x45d0a50 0x45d0ce0 0x45d0f70 0x45d1200 0x45d1490 0x45d1720 0x45d19b0 0x45d1c40 0x45d1f08 0x5ac0468 0x5ac2ad8 0x5ac9d78 0x5acac68 0x5ad80e8 0x5ad8408 0x5aea898 0x5aeb998 0x5aeccd8 0x5aee0a8 0x5aef3e8 0x5af0728 0x5af27d0 0x5d4bcf8 0x5d4d6d8 0x5f304e8 0x4ab5e30 0x4ad51e8 0x4f05c78 0x4faf910 0x4ffe5c8 0x4ffec68 0x4fff308 0x4fff998 0x4ffffa0 0x50005b0 0x5007820 0x5001330 0x5001940 0x5001f80 0x5006408 0x50502b0 0x4d08b00 0x5178808 0x521c688 0x5272fe8 0x5274088 0x5275108 0x5276678 0x5277788 0x5278808 0x527a720 0x527b800 0x536f548 0x53a8948 0x537bbd8 0x537cb38 0x537da98 0x537ea08 0x53cbd98 0x537f0f8 0x53e1b38 0x5380058 0x5380fb8 0x5381f18 0x5389188 0x53b27d8 0x53b4e00 0x53b74d8 0x53c2298 0x53c4f68 0x53c8758 0x53d5838 0x53d8390 0x53dc6b8 0x53df078 0x53eec68 0x53f39d8 0x53f8678 0x584a300 0x557a208 0x557aea0 0x557b908 0x557c368 0x557ce58 0x561e980 0x561f3e0 0x561fde0\n",
"| | | | | |-CXXOperatorCallExpr 0x7f1599ce7670 '' '<<'\n",
"| | | | | | |-UnresolvedLookupExpr 0x7f1599ce7330 '' lvalue (ADL) = 'operator<<' 0x45d2538 0x4582f78 0x45828d8 0x45cfaf8 0x45cfd80 0x45d0010 0x45d02a0 0x45d0530 0x45d07c0 0x45d0a50 0x45d0ce0 0x45d0f70 0x45d1200 0x45d1490 0x45d1720 0x45d19b0 0x45d1c40 0x45d1f08 0x5ac0468 0x5ac2ad8 0x5ac9d78 0x5acac68 0x5ad80e8 0x5ad8408 0x5aea898 0x5aeb998 0x5aeccd8 0x5aee0a8 0x5aef3e8 0x5af0728 0x5af27d0 0x5d4bcf8 0x5d4d6d8 0x5f304e8 0x4ab5e30 0x4ad51e8 0x4f05c78 0x4faf910 0x4ffe5c8 0x4ffec68 0x4fff308 0x4fff998 0x4ffffa0 0x50005b0 0x5007820 0x5001330 0x5001940 0x5001f80 0x5006408 0x50502b0 0x4d08b00 0x5178808 0x521c688 0x5272fe8 0x5274088 0x5275108 0x5276678 0x5277788 0x5278808 0x527a720 0x527b800 0x536f548 0x53a8948 0x537bbd8 0x537cb38 0x537da98 0x537ea08 0x53cbd98 0x537f0f8 0x53e1b38 0x5380058 0x5380fb8 0x5381f18 0x5389188 0x53b27d8 0x53b4e00 0x53b74d8 0x53c2298 0x53c4f68 0x53c8758 0x53d5838 0x53d8390 0x53dc6b8 0x53df078 0x53eec68 0x53f39d8 0x53f8678 0x584a300 0x557a208 0x557aea0 0x557b908 0x557c368 0x557ce58 0x561e980 0x561f3e0 0x561fde0\n",
"| | | | | | |-CXXOperatorCallExpr 0x7f1599ce71d8 '' '<<'\n",
"| | | | | | | |-UnresolvedLookupExpr 0x7f1599ce6e98 '' lvalue (ADL) = 'operator<<' 0x45d2538 0x4582f78 0x45828d8 0x45cfaf8 0x45cfd80 0x45d0010 0x45d02a0 0x45d0530 0x45d07c0 0x45d0a50 0x45d0ce0 0x45d0f70 0x45d1200 0x45d1490 0x45d1720 0x45d19b0 0x45d1c40 0x45d1f08 0x5ac0468 0x5ac2ad8 0x5ac9d78 0x5acac68 0x5ad80e8 0x5ad8408 0x5aea898 0x5aeb998 0x5aeccd8 0x5aee0a8 0x5aef3e8 0x5af0728 0x5af27d0 0x5d4bcf8 0x5d4d6d8 0x5f304e8 0x4ab5e30 0x4ad51e8 0x4f05c78 0x4faf910 0x4ffe5c8 0x4ffec68 0x4fff308 0x4fff998 0x4ffffa0 0x50005b0 0x5007820 0x5001330 0x5001940 0x5001f80 0x5006408 0x50502b0 0x4d08b00 0x5178808 0x521c688 0x5272fe8 0x5274088 0x5275108 0x5276678 0x5277788 0x5278808 0x527a720 0x527b800 0x536f548 0x53a8948 0x537bbd8 0x537cb38 0x537da98 0x537ea08 0x53cbd98 0x537f0f8 0x53e1b38 0x5380058 0x5380fb8 0x5381f18 0x5389188 0x53b27d8 0x53b4e00 0x53b74d8 0x53c2298 0x53c4f68 0x53c8758 0x53d5838 0x53d8390 0x53dc6b8 0x53df078 0x53eec68 0x53f39d8 0x53f8678 0x584a300 0x557a208 0x557aea0 0x557b908 0x557c368 0x557ce58 0x561e980 0x561f3e0 0x561fde0\n",
"| | | | | | | |-CXXOperatorCallExpr 0x7f1599ce6e38 '' '<<'\n",
"| | | | | | | | |-UnresolvedLookupExpr 0x7f1599ce6af8 '' lvalue (ADL) = 'operator<<' 0x45d2538 0x4582f78 0x45828d8 0x45cfaf8 0x45cfd80 0x45d0010 0x45d02a0 0x45d0530 0x45d07c0 0x45d0a50 0x45d0ce0 0x45d0f70 0x45d1200 0x45d1490 0x45d1720 0x45d19b0 0x45d1c40 0x45d1f08 0x5ac0468 0x5ac2ad8 0x5ac9d78 0x5acac68 0x5ad80e8 0x5ad8408 0x5aea898 0x5aeb998 0x5aeccd8 0x5aee0a8 0x5aef3e8 0x5af0728 0x5af27d0 0x5d4bcf8 0x5d4d6d8 0x5f304e8 0x4ab5e30 0x4ad51e8 0x4f05c78 0x4faf910 0x4ffe5c8 0x4ffec68 0x4fff308 0x4fff998 0x4ffffa0 0x50005b0 0x5007820 0x5001330 0x5001940 0x5001f80 0x5006408 0x50502b0 0x4d08b00 0x5178808 0x521c688 0x5272fe8 0x5274088 0x5275108 0x5276678 0x5277788 0x5278808 0x527a720 0x527b800 0x536f548 0x53a8948 0x537bbd8 0x537cb38 0x537da98 0x537ea08 0x53cbd98 0x537f0f8 0x53e1b38 0x5380058 0x5380fb8 0x5381f18 0x5389188 0x53b27d8 0x53b4e00 0x53b74d8 0x53c2298 0x53c4f68 0x53c8758 0x53d5838 0x53d8390 0x53dc6b8 0x53df078 0x53eec68 0x53f39d8 0x53f8678 0x584a300 0x557a208 0x557aea0 0x557b908 0x557c368 0x557ce58 0x561e980 0x561f3e0 0x561fde0\n",
"| | | | | | | | |-CXXOperatorCallExpr 0x7f1599ce6aa0 '' '<<'\n",
"| | | | | | | | | |-UnresolvedLookupExpr 0x7f1599ce6760 '' lvalue (ADL) = 'operator<<' 0x45d2538 0x4582f78 0x45828d8 0x45cfaf8 0x45cfd80 0x45d0010 0x45d02a0 0x45d0530 0x45d07c0 0x45d0a50 0x45d0ce0 0x45d0f70 0x45d1200 0x45d1490 0x45d1720 0x45d19b0 0x45d1c40 0x45d1f08 0x5ac0468 0x5ac2ad8 0x5ac9d78 0x5acac68 0x5ad80e8 0x5ad8408 0x5aea898 0x5aeb998 0x5aeccd8 0x5aee0a8 0x5aef3e8 0x5af0728 0x5af27d0 0x5d4bcf8 0x5d4d6d8 0x5f304e8 0x4ab5e30 0x4ad51e8 0x4f05c78 0x4faf910 0x4ffe5c8 0x4ffec68 0x4fff308 0x4fff998 0x4ffffa0 0x50005b0 0x5007820 0x5001330 0x5001940 0x5001f80 0x5006408 0x50502b0 0x4d08b00 0x5178808 0x521c688 0x5272fe8 0x5274088 0x5275108 0x5276678 0x5277788 0x5278808 0x527a720 0x527b800 0x536f548 0x53a8948 0x537bbd8 0x537cb38 0x537da98 0x537ea08 0x53cbd98 0x537f0f8 0x53e1b38 0x5380058 0x5380fb8 0x5381f18 0x5389188 0x53b27d8 0x53b4e00 0x53b74d8 0x53c2298 0x53c4f68 0x53c8758 0x53d5838 0x53d8390 0x53dc6b8 0x53df078 0x53eec68 0x53f39d8 0x53f8678 0x584a300 0x557a208 0x557aea0 0x557b908 0x557c368 0x557ce58 0x561e980 0x561f3e0 0x561fde0\n",
"| | | | | | | | | |-CXXOperatorCallExpr 0x7f1599ce6608 '' '<<'\n",
"| | | | | | | | | | |-UnresolvedLookupExpr 0x7f1599ce62c8