Euler angles vs. simple z-rotation: different results?


I was looking at the Euler angle convention used in ROOT:

The so-called “x-convention,” illustrated above, is the most common definition. In this convention, the rotation given by Euler angles (phi,theta,psi), where

  1. the first rotation is by an angle phi about the z-axis using D,

  2. the second rotation is by an angle theta in [0,pi] about the former x-axis (now x’) using C, and

  3. the third rotation is by an angle psi about the former z-axis (now z’) using B.

Based on that, I expected a rotation by (phi = 0.1, 0, 0) and (0, 0, psi = 0.1) to be identical to just a rotation about z.

root [0] ROOT::Math::XYZVector x(1,0,0);
root [1] ROOT::Math::EulerAngles r1(0.1,0,0);
root [2] ROOT::Math::EulerAngles r2(0,0,0.1);
root [3] ROOT::Math::RotationZ rz(0.1);
root [4] std::cout << rz * x << std::endl;
root [5] std::cout << r1 * x << std::endl;
root [6] std::cout << r2 * x << std::endl;

I expected three times the first output. Did I misinterpret the definition?

ROOT Version: 6.28/00; 6.28/04
Platform: Linux; macOS
Compiler: -

Welcome to the ROOT forum.

I guess @moneta can help you.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.