...
Outputs:
arcLength -> distance along the track where the poca occurs => poca = track.m_point + arcLength * track.m_dir
doca -> distance of clostest approach == | point - poca |
poca -> the point of closest approach
crossesPlane(const Track& track, const Point& plane, int face, arcLength,
...
Point& hitPoint)
Gets the point where a track projection crosses a plane. This assumes that the plane is oriented along a cartiesen axis
...
Outputs:
arcLength -> distance along the track where the plane is crossed occurs => hitPoint = track.m_point + arcLength * track.m_dir
localX -> position of the crossing point relative to the plane center
localY
hitPoint -> the point where the track projection crosses the plane
...
crossesPlane(const Track& track, const
...
Transform&
...
trans, arcLength
...
, Point& hitPoint)
Gets the point where a track projection crosses a tileplane. This does not assume that the plane is oriented along a cartiesen axis
Inputs:
track -> the track projectection data
tile trans -> the geomertical informatio about transformation for global coordinates to the tile coordinates
OutputsOutputs:
arcLength -> distance along the track where the plane is crossed occurs => hitPoint = track.m_point + arcLength * track.m_dir
localX hitPoint -> position of the crossing point relative to point where the track projection crosses the plane center
localY
activeX -> position of the crossing point relative to the edge of the active area ( >0 is in active area)
activeY
active2D -> the larger of activeX and activeY
hitPoint -> the point where the track projection crosses the plane
rayDoca(const Track& track, const Point& p1, const Point& p2, RayDoca& rayDoca, double& edgeLen )
Gets the point where a track comes closest to the ray from point p1 to point p2.
Inputs:
track -> the track projection data
p1, p2 -> intial and final points of the ray, usally two corners of a tile or two end of a ribbon
Outputs:
rayDoca -> object with intesection data
edgeLen -> length along the edge at which the POCA occurs, we check this to make sure the poca occurs between the two ends
rayDoca_withCorner(const Track& track, const Ray& ray,
arcLength, rayLength, dist, Point& x, Vector& v)
Get the point where a track comes closest to a ray. Handles the ends of the ray correctly.
Inputs:
track -> the track projection data
ray -> the ray in question
Outputs:
arcLength -> length along track where POCA occurs
rayLength -> length along ray where POCA occurs
dist -> DOCA
x -> point along track there POCA occurs, (ie, POCA of track to ray)
v -> vector from x to closest point on ray. x-v must be on the ray
tilePlane(const Track& track, const Tile& tile, PocaData &data)
Gets the point where a track projection crosses a tile
Inputs:
track -> the track projectection data
tile -> the geomertical information about the tile
Outputs:
data.arcLength_plane -> distance along the track where the plane is crossed occurs => hitPoint = track.m_point + arcLength * track.m_dir
data.activeX -> position of the crossing point relative to the edge of the active area ( >0 is in active area)
data.activeY
data.active2D -> the larger of activeX and activeY
data.hitsPlane -> the point where the track projection crosses the plane in global coords
data.inPlane -> the point where the track projection crosses the plane in local coords (+x , +y, -x, -y edges in local frame)
data.volume -> which volume of the tile (0 = main, 1 = bent piece)
tilePlaneActiveDistance(cons Tile& tile, iVol, const Point& globalPoint, Point& localPoint, activeX, activeY )
Gets the active distance of the intersection.
Inputs:
tile -> the geomertical information about the tile
iVol -> which volume of the tile (0 = main, 1 = bent piece)
globalPoint -> intersection point in global coords
Outputs:
localPoint -> intersection point in local coords (+x , +y, -x, -y edges in local frame)
activeX, activeY -> active distances in X and Y
tileEdgePoca(const Track& track, const Tile& tile,arcLength, dist, Point& poca, Vector& vector, int& region)
...
Outputs:
arcLength -> distance along the track where the plane is crossed occurs => hitPoint = track.m_point + arcLength * track.m_dir
dist -> the distance of closest approach between the track and the tile edge (in 3D)
poca -> the point of closest approach along the track to the tile edge
vector -> the vector from the poca to the closest point on the tile edge
region -> a code to show which edge of the tile was considered (y,+x,+y,-x edges, ++, +, --, -+ corners)
ribbonPlane(const Track& track, const Ribbon& ribbon,
...
PocaData& data)
Gets the point where a track projection crosses a plane. This assumes that the plane is oriented along a cartiesen axis
Inputs:
track -> the track projectection data
ribbon -> the geomertical informatio about the tile
Outputs:
arcLength data.arcLengthPlane -> distance along the track where the plane is crossed occurs => hitPoint = track.m_point + arcLength * track.m_dir
dist data.active2D -> the distance of closest approach between the track and the ribbon
hitPoint data.hitsPlane -> the point where the track projection crosses the plane the plane
data.volume -> which segment of the ribbon
ribbonPoca(const Track& track, const Ribbon& ribbon, arcLength, ribbonLength, dist, Point& poca, Vector& vector, int& region)
Gets the point where a track projection crosses a plane. This assumes that the plane is oriented along a cartiesen axis
...
Outputs:
arcLength -> distance along the track where the plane is crossed occurs => hitPoint = track.m_point + arcLength * track.m_dir
ribbonLength -> distance along the ribbon where the POCA occurs, 0 is center of ribbon
dist -> the distance of closest approach between the track and the ribbon
poca -> the point of closest approach along the track to the ribbon
vector -> the vector from the poca to the closest point on the ribbon
region -> a code to show which edge of the ribbon was considered (+,- in local coords)
...