You can easily used elapsed time and some makeshift timers to do this. I assume your spritesheet is a series of frames, and that you already have rendering set up.
You will need some variables to start out:
double frameTimePlayed; //Amount of time (out of animationTime) that the animation has been playing for
bool IsPlaying; //Self-Explanitory
int frameCount; //Frames in your sprite, I'm sure you already handle this in your animation logic, but I just threw it in here
int animationTime = 1000; //For 1 second of animation.
In your update method you need to
- Check if the ball is intersecting, and set IsPlayingto true
- If the animation IsPlaying, increment theframeTimePlayedby the elapsed time
- If the frameTimePlayedis equal to or greater than theanimationTime, stop the animation by settingIsPlayingto false
In your draw method you need to
- Draw the animation, if IsPlaying
Here is some example code:
protected override void Update(GameTime gameTime)
{
    //If it is not already playing and there is collision, start playing
    if (!IsPlaying && BallHitEffect)
        IsPlaying = true;
    //Increment the frameTimePlayed by the time (in milliseconds) since the last frame
    if (IsPlaying)
        frameTimePlayed += gameTime.ElapsedGameTime.TotalMilliseconds;
    //If playing and we have not exceeded the time limit
    if (IsPlaying && frameTimePlayed < animationTime)
    {
         // TODO: Add update logic here, such as animation.Update()
         // And increment your frames (Using division to figure out how many frames per second)
    }
    //If exceeded time, reset variables and stop playing
    else if (IsPlaying && frameTimePlayed >= animationTime)
    {
        frameTimePlayed = 0;
        IsPlaying = false;
        // TODO: Possibly custom animation.Stop(), depending on your animation class
    }
}
And for drawing, pretty easy, just check is IsPlaying and draw if that is the case.
I made sure to comment the code good, so hopefully this will help you understand and work better.
You could also use a double and use TotalSeconds instead of milliseconds if needed, and calculate elapsed time with float elapsed = (float)gameTime.ElapsedGameTime.TotalSeconds;