animated object (rusty steal beam) meets cleaning plane (X,Z)

I do industrial animation. I have beams moving horizontally, on a conveyor. These rusty beams pass through a grit blasting cabinet and emerge rust-free. I hand keyed this operation once, worked very well, took 700 keys :-(
I understand the script with the trees being planted on the uneven surface should be a good place to start (clipping parts of the code) but I am overwhelmed. What I need is a way to detect when the beam(s) intersect the "grit"-plane and have the rust vanish as the distance between the far end of the rusty beam and the point of cleaning takes place os the rust fanishes as it passes through the "grit" (particle system) streams. There are multiple beams that pass thru these processes, random start points (as loaded), all one, fixed speed.

A second complication to this (possibly a different script altogether) happens 10' down the line when the grit deposited on the top of the beams has to be brushed off (by a large revolving wheel-brush). i.e. rusty beam passes thru grit spray (X,Z) plain, pocks up a layer of grit on "top" then 10' later that grit is brushed off again. Clean beam passes out of brush machine, all is well in the world.

I can visualize the script, but I lack the vocabulary, I would be happy to write the steps out in a diagram if that would help?