LArSoft
v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
|
General planar surface. More...
#include "lardata/RecoObjects/SurfPlane.h"
Go to the source code of this file.
Classes | |
class | trkf::SurfXYZPlane |
Namespaces | |
trkf | |
General planar surface.
This class represents an (almost) general planar surface. It is intended to represent the measurement surface defined by a wire and the drift velocity in the case of a magnetic LAr TPC with a nonzero Lorentz angle.
In contrast to a completely general planar surface, the rotation part of the global to local coordinate transformation for this surface is defined by two rotation angles (not three Euler angles), which are the wire angle and the projected Lorentz angle. What we calling the projected Lorentz angle is the dihedral angle between the plane defined by the wire and the x-axis, and the plane defined by the wire and the drift velocity, which can be different for different views.
In the case of a nonzero Lorentz angle, the drift velocity is not perpendicular to a readout wire, so the drift velocity vector will not coincide with a coordinate axis in the local coordinate system. Nevertheless, the projected Lorentz angle provides sufficient information to implement the prediction function for this type of surface, provided the drift velocity perpendicular to the readout planes (which is the same for every view) is available externally.
This surface is defined by five parameters, which are, (x0, y0, z0) - Local origin. phi - Rotation angle around x-axis (wire angle). theta - Rotation angle around y'-axis (projected Lorentz angle).
The local uvw coordinate system is related to the global xyz coordinate system via an intermediate x'y'z' system as follows.
x' = x-x0 y' = (y-y0)*cos(phi) + (z-z0)*sin(phi) z' = -(y-y0)*sin(phi) + (z-z0)*cos(phi)
u = x'*cos(theta) - z'*sin(theta) v = y' w = x'*sin(theta) + z'*cos(theta)
u = (x-x0)*cos(theta) + (y-y0)*sin(theta)*sin(phi) - (z-z0)*sin(theta)*cos(phi) v = (y-y0)*cos(phi) + (z-z0)*sin(phi) w = (x-x0)*sin(theta) - (y-y0)*cos(theta)*sin(phi) + (z-z0)*cos(theta)*cos(phi)
or inversely,
x' = u*cos(theta) + w*sin(theta) y' = v z' = -u*sin(theta) + w*cos(theta)
x = x0 + x' y = y0 + y'*cos(phi) - z'*sin(phi) z = z0 + y'*sin(phi) + z'*cos(phi)
x = x0 + u*cos(theta) + w*sin(theta) y = y0 + u*sin(theta)*sin(phi) + v*cos(phi) - w*cos(theta)*sin(phi) z = z0 - u*sin(theta)*cos(phi) + v*sin(phi) + w*cos(theta)*cos(phi)
Track parameters on this type of surface are as follows.
Definition in file SurfXYZPlane.h.