44 static ROOT::Math::LorentzRotation
rotateLabToCms(
const ROOT::Math::XYZVector& boostVector,
45 double cmsAngleXZ,
double cmsAngleYZ)
48 ROOT::Math::LorentzRotation boost(ROOT::Math::Boost(-1.*boostVector));
51 ROOT::Math::XYZVector zaxis(0., 0., 1.);
54 double tanAngleXZ =
tan(cmsAngleXZ);
55 double tanAngleYZ =
tan(cmsAngleYZ);
57 ROOT::Math::XYZVector electronCMS(Norm * tanAngleXZ, Norm * tanAngleYZ, Norm);
60 ROOT::Math::XYZVector rotAxis = zaxis.Cross(electronCMS);
61 double rotangle = asin(rotAxis.R());
64 ROOT::Math::LorentzRotation rotation(ROOT::Math::AxisAngle(rotAxis, -rotangle));
67 ROOT::Math::LorentzRotation trans = rotation * boost;