diff --git a/src/sampling/sampledSet/face/faceOnlySet.C b/src/sampling/sampledSet/face/faceOnlySet.C
index 20ee0b56eb73c56c67aefc5c7f53c462571e425d..1f6665d6f80f7ac35552104a6a3e31af567c052d 100644
--- a/src/sampling/sampledSet/face/faceOnlySet.C
+++ b/src/sampling/sampledSet/face/faceOnlySet.C
@@ -43,7 +43,7 @@ namespace Foam
 
 bool Foam::faceOnlySet::trackToBoundary
 (
-    passiveParticleCloud& particles,
+    passiveParticle& singleParticle,
     DynamicList<point>& samplingPts,
     DynamicList<label>& samplingCells,
     DynamicList<label>& samplingFaces,
@@ -55,9 +55,8 @@ bool Foam::faceOnlySet::trackToBoundary
     const vector smallVec = tol*offset;
     const scalar smallDist = mag(smallVec);
 
-    passiveParticle& singleParticle = *particles.first();
-
-    particle::TrackingData<passiveParticleCloud> trackData(particles);
+    passiveParticleCloud particleCloud(mesh());
+    particle::TrackingData<passiveParticleCloud> trackData(particleCloud);
 
     // Alias
     const point& trackPt = singleParticle.position();
@@ -210,8 +209,6 @@ void Foam::faceOnlySet::calcSamples
         }
 
         // Initialize tracking starting from trackPt
-        passiveParticleCloud particles(mesh());
-
         passiveParticle singleParticle
         (
             mesh(),
@@ -219,11 +216,9 @@ void Foam::faceOnlySet::calcSamples
             trackCellI
         );
 
-        particles.addParticle(&singleParticle);
-
         bool reachedBoundary = trackToBoundary
         (
-            particles,
+            singleParticle,
             samplingPts,
             samplingCells,
             samplingFaces,
diff --git a/src/sampling/sampledSet/face/faceOnlySet.H b/src/sampling/sampledSet/face/faceOnlySet.H
index 1bb86ba9c2cf42e93ba237b4bc1567ac47c8ea2c..f910c1f965152f2874ba34182d63f0270ee82772 100644
--- a/src/sampling/sampledSet/face/faceOnlySet.H
+++ b/src/sampling/sampledSet/face/faceOnlySet.H
@@ -68,7 +68,7 @@ class faceOnlySet
         //  reached
         bool trackToBoundary
         (
-            passiveParticleCloud& particles,
+            passiveParticle& singleParticle,
             DynamicList<point>& samplingPts,
             DynamicList<label>& samplingCells,
             DynamicList<label>& samplingFaces,
diff --git a/src/sampling/sampledSet/polyLine/polyLineSet.C b/src/sampling/sampledSet/polyLine/polyLineSet.C
index d36b2c1fed1a32bf459851bd239a14423d1c99d9..6b82171191e1f8ad8a7bd245fbb47d6fbbfd9b84 100644
--- a/src/sampling/sampledSet/polyLine/polyLineSet.C
+++ b/src/sampling/sampledSet/polyLine/polyLineSet.C
@@ -44,7 +44,7 @@ namespace Foam
 // Sample till hits boundary.
 bool Foam::polyLineSet::trackToBoundary
 (
-    passiveParticleCloud& particles,
+    passiveParticle& singleParticle,
     label& sampleI,
     DynamicList<point>& samplingPts,
     DynamicList<label>& samplingCells,
@@ -52,9 +52,8 @@ bool Foam::polyLineSet::trackToBoundary
     DynamicList<scalar>& samplingCurveDist
 ) const
 {
-    passiveParticle& singleParticle = *particles.first();
-
-    particle::TrackingData<passiveParticleCloud> trackData(particles);
+    passiveParticleCloud particleCloud(mesh());
+    particle::TrackingData<passiveParticleCloud> trackData(particleCloud);
 
     // Alias
     const point& trackPt = singleParticle.position();
@@ -260,8 +259,6 @@ void Foam::polyLineSet::calcSamples
         //
 
         // Initialize tracking starting from sampleI
-        passiveParticleCloud particles(mesh());
-
         passiveParticle singleParticle
         (
             mesh(),
@@ -271,7 +268,7 @@ void Foam::polyLineSet::calcSamples
 
         bool bReached = trackToBoundary
         (
-            particles,
+            singleParticle,
             sampleI,
             samplingPts,
             samplingCells,
diff --git a/src/sampling/sampledSet/polyLine/polyLineSet.H b/src/sampling/sampledSet/polyLine/polyLineSet.H
index fda8cbdb3629c9b06e0f75efa5e34e9ec3152b1c..09aa7e275c9d8c2a215ba99f2c0fd3fcf3f02fb1 100644
--- a/src/sampling/sampledSet/polyLine/polyLineSet.H
+++ b/src/sampling/sampledSet/polyLine/polyLineSet.H
@@ -65,7 +65,7 @@ class polyLineSet
         //  Returns false if end of samples reached.
         bool trackToBoundary
         (
-            passiveParticleCloud& particles,
+            passiveParticle& singleParticle,
             label& sampleI,
             DynamicList<point>& samplingPts,
             DynamicList<label>& samplingCells,
diff --git a/src/sampling/sampledSet/uniform/uniformSet.C b/src/sampling/sampledSet/uniform/uniformSet.C
index 8b99652c419f4a79538918ab25a29bcf1d94b3b8..7d9013972e097e5634b83bc16bb111588f5aff73 100644
--- a/src/sampling/sampledSet/uniform/uniformSet.C
+++ b/src/sampling/sampledSet/uniform/uniformSet.C
@@ -77,7 +77,7 @@ bool Foam::uniformSet::nextSample
 
 bool Foam::uniformSet::trackToBoundary
 (
-    passiveParticleCloud& particles,
+    passiveParticle& singleParticle,
     point& samplePt,
     label& sampleI,
     DynamicList<point>& samplingPts,
@@ -91,12 +91,11 @@ bool Foam::uniformSet::trackToBoundary
     const vector smallVec = tol*offset;
     const scalar smallDist = mag(smallVec);
 
-    passiveParticle& singleParticle = *particles.first();
-
     // Alias
     const point& trackPt = singleParticle.position();
 
-    particle::TrackingData<passiveParticleCloud> trackData(particles);
+    passiveParticleCloud particleCloud(mesh());
+    particle::TrackingData<passiveParticleCloud> trackData(particleCloud);
 
     while(true)
     {
@@ -305,16 +304,12 @@ void Foam::uniformSet::calcSamples
 
     while(true)
     {
-        passiveParticleCloud particles(mesh());
-
         // Initialize tracking starting from trackPt
         passiveParticle singleParticle(mesh(), trackPt, trackCellI);
 
-        particles.addParticle(&singleParticle);
-
         bool reachedBoundary = trackToBoundary
         (
-            particles,
+            singleParticle,
             samplePt,
             sampleI,
             samplingPts,
diff --git a/src/sampling/sampledSet/uniform/uniformSet.H b/src/sampling/sampledSet/uniform/uniformSet.H
index b03f2b3e149539055a784ff3d95bb8e3205d2185..a01af1b0b5f0c137326bd2d8ca26bd8239b45c57 100644
--- a/src/sampling/sampledSet/uniform/uniformSet.H
+++ b/src/sampling/sampledSet/uniform/uniformSet.H
@@ -82,7 +82,7 @@ class uniformSet
         //  reached
         bool trackToBoundary
         (
-            passiveParticleCloud& particles,
+            passiveParticle& singleParticle,
             point& samplePt,
             label& sampleI,
             DynamicList<point>& samplingPts,