not sure about the nHair approach & But I got it working with the help of Duncan 
here is the particle approach suggested by him :
I created a rot and rotVel vector attribute on a particle system, then initialized with random speeds in a creation expression:
$s = .1; // rotation speed
nParticleShape1.rotVel = <<rand($s),rand($s),rand($s)>>;
nParticleShape1.rot = <<0,0,0>>;
Then in a runtime expression I update the rotation by adding the velocity to it
nParticleShape1.rot = nParticleShape1.rot + nParticleShape1.rotVel;
Then I use the rotation to emit a line of particles into a second particle system. To create an unbroken ribbon (when the emitting particles are moving fast) I needed to also emit additional rows of particles based on the velocity:
nParticleShape1.rot = nParticleShape1.rot + nParticleShape1.rotVel;
vector $r =nParticleShape1.rot;
float $rx = $r.x;
float $ry = $r.y;
float $width = .2;
float $fps = 24.0;
float $p2Rad = nParticleShape2.radius;
vector $dir = <<sin($rx),cos($rx),0>>; // currently this only uses the x+y rotate values
float $dy = cos($ry) - sin($ry) * $dir.y;
float $dz = sin($ry) + cos($ry) * $dir.y;
$dir = <<$dir.x, $dy, $dz>>;
int $i,$j;
vector $p = nParticleShape1.position;
vector $streak = nParticleShape1.velocity/$fps;
float $sLen = mag( $streak );
int $count = int($width/$p2Rad + 0.6) + 1;
int $sCount = int($sLen/$p2Rad + 0.6);
for( $i = 0; $i<=$count; $i++ ){
float $u = (float)$i/(float)$count -0.5;
$u *= $width;
vector $pos = $p + $dir * $u;
for($j = 0; $j < $sCount; $j++ ){
float $v = (float)$j/(float)$sCount;
vector $pos2 = $pos - $streak * $v;
emit -pos ($pos2.x) ($pos2.y) ($pos2.z) -o nParticleShape2;
}
}
To avoid any order of evaluation problems the second particle system is assigned to a different solver.
Duncan