A Ray will always be more accurate. Touched events are a bit hit and miss particularly with high velocity objects.
Why?, A Ray will see the intercepting part, whereas the Touched event relies upon far less accurate collisions being detected between parts.
It isn’t possible to raycast from a particle’s position since particles are handled internally by the physics/rendering engine which is written in C++.