Index: /GTP/trunk/Lib/Vis/Preprocessing/scripts/default.env
===================================================================
--- /GTP/trunk/Lib/Vis/Preprocessing/scripts/default.env	(revision 662)
+++ /GTP/trunk/Lib/Vis/Preprocessing/scripts/default.env	(revision 664)
@@ -236,4 +236,6 @@
 		clipPlaneAxis 1
 	}
+
+	evaluateViewCells true
 	
 	Evaluation {
@@ -241,4 +243,5 @@
 		samples 2000000
 	}
+
 #	filename ../data/atlanta/atlanta_viewcells_large.x3d
 #	filename ../data/vienna/viewcells-25-sel.x3d
@@ -322,4 +325,6 @@
 	maxTotalMemory	50
 	maxStaticMemory	50
+	
+	simulateOctree false
 	
 	subdivisionStats ../subDivisionStats.log
Index: /GTP/trunk/Lib/Vis/Preprocessing/src/VspBspTree.h
===================================================================
--- /GTP/trunk/Lib/Vis/Preprocessing/src/VspBspTree.h	(revision 663)
+++ /GTP/trunk/Lib/Vis/Preprocessing/src/VspBspTree.h	(revision 664)
@@ -69,6 +69,5 @@
 		float mPriority;
 
-		static bool sBreathFirstSplits;
-
+		
 		/** Returns average ray contribution.
 		*/
@@ -88,5 +87,6 @@
 		mGeometry(NULL),
 		mMaxCostMisses(0), 
-		mIsKdNode(false)
+		mIsKdNode(false),
+		mPriority(0)
 		{}
 		
@@ -106,5 +106,6 @@
 		mGeometry(geom),
 		mMaxCostMisses(0),
-		mIsKdNode(false)
+		mIsKdNode(false),
+		mPriority(0)
 		{}
 
@@ -128,8 +129,5 @@
 		float GetCost() const
 		{
-			if (sBreathFirstSplits)
-				return mPvs * mProbability;
-			else
-				return (float) (-mDepth); // for kd tree
+			return mPriority;
 		}
 
@@ -388,5 +386,11 @@
 								   float &pBack) const;
 
+	/** Evaluates candidate for splitting.
+	*/
 	void EvalSplitCandidate(VspBspTraversalData &tData, VspBspSplitCandidate &splitData);
+
+	/** Computes priority of the traversal data and stores it in tData.
+	*/
+	void EvalPriority(VspBspTraversalData &tData) const;
 
 	float EvalRenderCostDecrease(const Plane3 &candidatePlane,
@@ -790,5 +794,6 @@
 	bool mSimulateOctree;
 
-	int mBreathFirstSplits;
+	/// if we should use breath first priority for the splits
+	bool mBreathFirstSplits;
 
 private:
Index: /GTP/trunk/Lib/Vis/Preprocessing/src/ViewCell.cpp
===================================================================
--- /GTP/trunk/Lib/Vis/Preprocessing/src/ViewCell.cpp	(revision 660)
+++ /GTP/trunk/Lib/Vis/Preprocessing/src/ViewCell.cpp	(revision 664)
@@ -411,6 +411,9 @@
 			ViewCellInterior *interior = dynamic_cast<ViewCellInterior *>(vc);
 			ViewCellContainer::const_iterator it, it_end = interior->mChildren.end();
+
 			for (it = interior->mChildren.begin(); it != it_end; ++ it)
+			{
 				tstack.push(*it);
+			}
 			
 		}
@@ -1633,10 +1636,12 @@
 
 void ViewCellsTree::PropagatePvs(ViewCell *vc)
-{
+{	
+	ViewCell *viewCell = vc;
+
 	// propagate pvs up
-	while (vc->GetParent())
-	{
-		vc->GetParent()->GetPvs().Merge(vc->GetPvs());
-		vc = vc->GetParent();
+	while (viewCell->GetParent())
+	{
+		viewCell->GetParent()->GetPvs().Merge(vc->GetPvs());
+		viewCell = viewCell->GetParent();
 	}
 
@@ -1661,4 +1666,5 @@
 		{
 			ViewCellInterior *interior = dynamic_cast<ViewCellInterior *>(viewCell);
+
 			ViewCellContainer::const_iterator it, it_end = interior->mChildren.end();
 
@@ -1677,4 +1683,5 @@
   tqueue.push(mRoot);
   mRoot->SetColor(RandomColor(0.3f, 1.0f));
+
   while (!tqueue.empty())
 	{
Index: /GTP/trunk/Lib/Vis/Preprocessing/src/ViewCellsManager.h
===================================================================
--- /GTP/trunk/Lib/Vis/Preprocessing/src/ViewCellsManager.h	(revision 660)
+++ /GTP/trunk/Lib/Vis/Preprocessing/src/ViewCellsManager.h	(revision 664)
@@ -362,5 +362,5 @@
 	/** Evaluates worth of current view cell hierarchy.
 	*/
-	void EvalViewCellPartition();
+	void EvalViewCellPartition(Preprocessor *preprocessor);
 
 protected:
@@ -478,4 +478,6 @@
 
 	bool mViewCellsFinished;
+
+	bool mEvaluateViewCells;
 };
 
Index: /GTP/trunk/Lib/Vis/Preprocessing/src/VspBspTree.cpp
===================================================================
--- /GTP/trunk/Lib/Vis/Preprocessing/src/VspBspTree.cpp	(revision 663)
+++ /GTP/trunk/Lib/Vis/Preprocessing/src/VspBspTree.cpp	(revision 664)
@@ -37,5 +37,4 @@
 int VspBspTree::sFrontAndBackId = 0;
 
-bool VspBspTraversalData::sBreathFirstSplits = false;
 
 
@@ -130,5 +129,6 @@
 	environment->GetBoolValue("VspBspTree.useSplitCostQueue", mUseSplitCostQueue);
 	environment->GetBoolValue("VspBspTree.simulateOctree", mSimulateOctree);
-	environment->GetBoolValue("VspBspTree.breathFirstSplits", VspBspTraversalData::sBreathFirstSplits);
+	environment->GetBoolValue("VspBspTree.useRandomAxis", mUseRandomAxis);
+	environment->GetBoolValue("VspBspTree.breathFirstSplits", mBreathFirstSplits);
 
 	char subdivisionStatsLog[100];
@@ -162,5 +162,7 @@
 	Debug << "use split cost queue: " << mUseSplitCostQueue << endl;
 	Debug << "subdivision stats log: " << subdivisionStatsLog << endl;
-	
+	Debug << "use random axis: " << mUseRandomAxis << endl;
+	Debug << "breath first splits: " << mBreathFirstSplits << endl;
+
 
 	Debug << "Split plane strategy: ";
@@ -463,6 +465,6 @@
 							  geom);
 
-	tData.mPriority = mBreathFirstSplits ? 
-		(float)-frontData.mDepth : tData.mPvs * tData.mProbability;
+	EvalPriority(tData);
+	
 
 	if (mSimulateOctree)
@@ -494,6 +496,6 @@
 
 	long startTime = GetTime();	
-	int nLeaves = 0;
-	int nViewCells = 0;
+	int nLeaves = 500;
+	int nViewCells = 500;
 
 	// used for intermediate time measurements and progress
@@ -538,5 +540,5 @@
 		}
 
-		if (mCreatedViewCells == nViewCells)
+		if (mCreatedViewCells >= nViewCells)
 		{
 			nViewCells += 500;
@@ -575,6 +577,5 @@
 							  geom);
 
-	tData.mPriority = mBreathFirstSplits ? 
-		(float)-tData.mDepth : tData.mPvs * tData.mProbability;
+	
 
 	// compute first split candidate
@@ -744,6 +745,6 @@
 			tBackData.mMaxCostMisses = maxCostMisses;
 
-			ComputePriority(tFrontData);
-			ComputePriority(tBackData);
+			EvalPriority(tFrontData);
+			EvalPriority(tBackData);
 
 			if (1)
@@ -864,12 +865,5 @@
 		tFrontData.mMaxCostMisses = maxCostMisses;
 		tBackData.mMaxCostMisses = maxCostMisses;
-		
-		ComputePriority(tFrontData);
-		ComputePriority(tBackData);
-
-		frontData.mPriority = mBreathFirstSplits ? 
-		(float)-frontData.mDepth : frontData.mPvs * frontData.mProbability;
-	backData.mPriority = mBreathFirstSplits ? 
-		(float)-backData.mDepth : backData.mPvs * backData.mProbability;
+			
 		if (1)
 		{
@@ -951,4 +945,11 @@
 
 	return newNode;
+}
+
+
+void VspBspTree::EvalPriority(VspBspTraversalData &tData) const
+{
+    tData.mPriority = mBreathFirstSplits ? 
+		(float)-tData.mDepth : tData.mPvs * tData.mProbability;
 }
 
@@ -1356,21 +1357,14 @@
 	int sAxis = 0;
 
-	bool useSpecialAxis = false;
-
-	if (mSimulateOctree)
-	{
+	bool useSpecialAxis = mOnlyDrivingAxis || mUseRandomAxis || mSimulateOctree;
+
+	// use some kind of specialised fixed axis
+	if (mOnlyDrivingAxis)
+		sAxis = box.Size().DrivingAxis();
+	else if (mUseRandomAxis)
+		sAxis = Random(3);
+	else if (mSimulateOctree)
 		sAxis = tData.mAxis;
-		useSpecialAxis = true;
-	}
-	else if (mUseRandomAxis)
-	{
-		sAxis = Random(3);
-		useSpecialAxis = true;
-	}
-	else if (mOnlyDrivingAxis)
-	{
-		sAxis = box.Size().DrivingAxis();
-		useSpecialAxis = true;
-	}
+		
 
 	for (axis = 0; axis < 3; ++ axis)
Index: /GTP/trunk/Lib/Vis/Preprocessing/src/Environment.cpp
===================================================================
--- /GTP/trunk/Lib/Vis/Preprocessing/src/Environment.cpp	(revision 663)
+++ /GTP/trunk/Lib/Vis/Preprocessing/src/Environment.cpp	(revision 664)
@@ -1201,10 +1201,10 @@
 	RegisterOption("ViewCells.type",
 			optString,
-			"view_cells_type",
+			"view_cells_type=",
 			"vspBspTree");
 
 	RegisterOption("ViewCells.samplingType",
 			optString,
-			"view_cells_sampling_type",
+			"view_cells_sampling_type=",
 			"box");
 
@@ -1214,11 +1214,12 @@
 					"viewCellsStats.log");
 
-	RegisterOption("ViewCells.PostProcess.statsPrefix",
+	RegisterOption("ViewCells.Evaluation.statsPrefix",
 					optString,
-					"view_cells_stats_prefix=",
+					"view_cells_evaluation_stats_prefix=",
 					"viewCells");
 	
 	RegisterOption("ViewCells.active",
 					optInt,
+					"view_cells_active=",
 					"1000");
 
@@ -1228,5 +1229,4 @@
 					"5000000");
 
-
 	RegisterOption("ViewCells.Construction.samplesPerPass",
 					optInt,
@@ -1246,16 +1246,15 @@
 	RegisterOption("ViewCells.loadFromFile",
 					optBool,
-					"view_cells_load_from_file",
+					"view_cells_load_from_file=",
 					"false");
 
 	RegisterOption("ViewCells.PostProcess.refine",
 					optBool,
-					"view_cells_refine",
+					"view_cells_refine=",
 					"false");
-
 
 	RegisterOption("ViewCells.PostProcess.compress",
 					optBool,
-					"view_cells_compress",
+					"view_cells_post_process_compress=",
 					"false");
 
@@ -1270,8 +1269,12 @@
 					"300000");
 
-
 	RegisterOption("ViewCells.exportToFile",
 					optBool,
 					"view_cells_export_to_file",
+					"false");
+
+	RegisterOption("ViewCells.evaluateViewCells",
+					optBool,
+					"view_cells_evaluate_view_cells=",
 					"false");
 
@@ -1983,6 +1986,5 @@
 	RegisterOption("VspBspTree.Factor.balancedRays", optFloat, "-vsp_bsp_factor_balanced_rays=", "1.0");
 	RegisterOption("VspBspTree.Factor.pvs", optFloat, "-vsp_bsp_factor_pvs=", "1.0");
-
-
+	
 	RegisterOption("VspBspTree.Construction.renderCostWeight",
 			optFloat,
@@ -1998,4 +2000,14 @@
 		optBool, 
 		"vsp_bsp_simulate_octree=", 
+		"false");
+
+	RegisterOption("VspBspTree.breathFirstSplits",
+		optBool,
+		"-vsp_bsp_breath_first_splits=",
+		"false");
+
+	RegisterOption("VspBspTree.useRandomAxis",
+		optBool,
+		"-vsp_bsp_use_random_axis=",
 		"false");
 
Index: /GTP/trunk/Lib/Vis/Preprocessing/src/ViewCell.h
===================================================================
--- /GTP/trunk/Lib/Vis/Preprocessing/src/ViewCell.h	(revision 660)
+++ /GTP/trunk/Lib/Vis/Preprocessing/src/ViewCell.h	(revision 664)
@@ -261,7 +261,7 @@
 public:
 
-	ViewCellLeaf<T>(): mLeaf(NULL) {}
+	ViewCellLeaf<T>(): mLeaf(NULL) { SetActive(); }
 	ViewCellLeaf<T>(Mesh *mesh):
-		ViewCell(mesh), mLeaf(NULL) {}
+		ViewCell(mesh), mLeaf(NULL) { SetActive(); }
 
 	
Index: /GTP/trunk/Lib/Vis/Preprocessing/src/Preprocessor.cpp
===================================================================
--- /GTP/trunk/Lib/Vis/Preprocessing/src/Preprocessor.cpp	(revision 659)
+++ /GTP/trunk/Lib/Vis/Preprocessing/src/Preprocessor.cpp	(revision 664)
@@ -283,5 +283,5 @@
 	else
 	{
-		cerr<<"Wrong view cells type" << name << endl;
+		cerr << "Wrong view cells type " << name << "!!!" << endl;
 		exit(1);
 	}
Index: /GTP/trunk/Lib/Vis/Preprocessing/src/ViewCellsParser.cpp
===================================================================
--- /GTP/trunk/Lib/Vis/Preprocessing/src/ViewCellsParser.cpp	(revision 660)
+++ /GTP/trunk/Lib/Vis/Preprocessing/src/ViewCellsParser.cpp	(revision 664)
@@ -569,5 +569,5 @@
 	else
 	{
-		cerr<<"Wrong view cells type" << name << endl;
+		cerr<<"Wrong view cells type " << name << "!!!" << endl;
 		exit(1);
 	}
Index: /GTP/trunk/Lib/Vis/Preprocessing/src/ViewCellsManager.cpp
===================================================================
--- /GTP/trunk/Lib/Vis/Preprocessing/src/ViewCellsManager.cpp	(revision 663)
+++ /GTP/trunk/Lib/Vis/Preprocessing/src/ViewCellsManager.cpp	(revision 664)
@@ -45,6 +45,9 @@
 	environment->GetBoolValue("ViewCells.Visualization.exportGeometry", mExportGeometry);
 	environment->GetFloatValue("ViewCells.maxPvsRatio", mMaxPvsRatio);
+	
 	bool emptyViewCells = false;
 	environment->GetBoolValue("ViewCells.pruneEmptyViewCells", emptyViewCells);
+	mMinPvsSize = emptyViewCells ? 1 : 0;
+
 	environment->GetBoolValue("ViewCells.processOnlyValidViewCells", mOnlyValidViewCells);
 
@@ -58,29 +61,24 @@
 	environment->GetBoolValue("ViewCells.exportToFile", mExportViewCells);
 	
-	
 	environment->GetIntValue("ViewCells.active", mNumActiveViewCells);
 	environment->GetBoolValue("ViewCells.PostProcess.compress", mCompressViewCells);
 	environment->GetBoolValue("ViewCells.Visualization.useClipPlane", mUseClipPlaneForViz);
-
 	environment->GetBoolValue("ViewCells.PostProcess.merge", mMergeViewCells);
-
-	char samplingBuf[50];
-	environment->GetStringValue("ViewCells.samplingType", samplingBuf);
-	
-	if (strcmp(samplingBuf, "box") == 0)
+	environment->GetBoolValue("ViewCells.evaluateViewCells", mEvaluateViewCells);
+
+	char buf[100];
+	environment->GetStringValue("ViewCells.samplingType", buf);
+
+	
+	if (strcmp(buf, "box") == 0)
 		mSamplingType = Preprocessor::SPATIAL_BOX_BASED_DISTRIBUTION;
-	else if (strcmp(samplingBuf, "directional") == 0)
+	else if (strcmp(buf, "directional") == 0)
 		mSamplingType = Preprocessor::DIRECTION_BASED_DISTRIBUTION;
 
 #if 0
-
-		char viewCellsStatsLog[100];
-		environment->GetStringValue("ViewCells.stats", viewCellsStats);
-		mViewCellsStats.open(viewCellsStatsLog);
+	environment->GetStringValue("ViewCells.stats", buf);
+	mViewCellsStats.open(buf);
 #endif
 
-	mMinPvsSize = emptyViewCells ? 1 : 0;
-
-	char buf[50];
 	environment->GetStringValue("ViewCells.Visualization.colorCode", buf);
 
@@ -94,5 +92,30 @@
 		mColorCode = 0;
 
-	Debug << "colorCode: " << mColorCode << endl;
+
+	Debug << "***********View Cells options ****************" << endl;
+	Debug << "color code: " << mColorCode << endl;
+
+	Debug << "export rays: " << mExportRays << endl;
+	Debug << "export geometry: " << mExportGeometry << endl;
+	Debug << "max pvs ratio: " << mMaxPvsRatio << endl;
+	
+	Debug << "prune empty view cells: " << emptyViewCells << endl;
+	
+	Debug << "process only valid view cells: " << mOnlyValidViewCells << endl;
+	Debug << "construction samples: " << mConstructionSamples << endl;
+	Debug << "post process samples: " << mPostProcessSamples << endl;
+	Debug << "post process use rays for merge: " << mUseRaysForMerge << endl;
+	Debug << "visualization samples: " << mVisualizationSamples << endl;
+	Debug << "construction samples per pass: " << mSamplesPerPass << endl;
+	Debug << "export to file: " << mExportViewCells << endl;
+	
+	Debug << "active: " << mNumActiveViewCells << endl;
+	Debug << "post process compress: " << mCompressViewCells << endl;
+	Debug << "visualization use clipPlane: " << mUseClipPlaneForViz << endl; 
+	Debug << "post process merge: " << mMergeViewCells << endl;
+	Debug << "evaluate view cells: " << mEvaluateViewCells << endl;
+	Debug << "sampling type: " << mSamplingType << endl;
+
+	Debug << endl;
 }
 
@@ -213,5 +236,5 @@
 	const int n = mConstructionSamples; //+initialSamples;
 
-	bool dirSamples = false;
+	bool dirSamples = mSamplingType;
 
 	while (numSamples < n)
@@ -298,9 +321,17 @@
 	disposeRays(visualizationSamples, outRays);
 
+	if (mEvaluateViewCells)
+	{
+		Debug << "Evaluatating view cells!!!" << endl;
+        EvalViewCellPartition(preprocessor);
+	}
+	else
+		Debug << "No evaluation!!" << endl;
+
 	return numSamples;
 }
 
 
-void ViewCellsManager::EvalViewCellPartition()
+void ViewCellsManager::EvalViewCellPartition(Preprocessor *preprocessor)
 {
 	int samplesPerPass;
@@ -308,15 +339,65 @@
 	int castSamples = 0;
 
+	char s[64]; 
+
 	environment->GetIntValue("ViewCells.Evaluation.samplesPerPass", samplesPerPass);
 	environment->GetIntValue("ViewCells.Evaluation.samples", numSamples);
 
-	Debug << "view cells evaluation samples per pass: " << samplesPerPass << endl;
-	Debug << "view cells evaluation samples: " << numSamples << endl;
+	char statsPrefix[100];
+	environment->GetStringValue("ViewCells.Evaluation.statsPrefix", statsPrefix);
+
+	Debug << "view cell evaluation samples per pass: " << samplesPerPass << endl;
+	Debug << "view cell evaluation samples: " << numSamples << endl;
+	Debug << "view cell stats prefix: " << statsPrefix << endl;
+
+	//VssRayContainer outRays;
+
+	int dirSamples = mSamplingType;
+
+	if (0)
+		mViewCellsTree->ResetPvs();
+
+	cout << "Evaluating view cell partition" << endl;
+
+	ViewCellContainer leaves;
+	mViewCellsTree->CollectLeaves(mViewCellsTree->GetRoot(), leaves);
 
 	while (castSamples < numSamples)
 	{
-
-	}
-	//char s[64]; sprintf(s, "bsp-pvs%04d.x3d", i);
+		VssRayContainer evaluationSamples;
+
+		const int samplingType = 
+			dirSamples ? 
+						Preprocessor::DIRECTION_BASED_DISTRIBUTION :
+				 		Preprocessor::SPATIAL_BOX_BASED_DISTRIBUTION;
+
+		//-- construction rays => we use uniform samples for this
+		CastPassSamples(samplesPerPass, samplingType, evaluationSamples);
+		
+		castSamples += samplesPerPass;
+
+		cout << "casting " << (int)evaluationSamples.size() << " samples " << endl;
+
+		ComputeSampleContributions(evaluationSamples, true, false);
+
+		cout << "compute new statistics ... ";
+
+		ViewCellContainer::const_iterator it, it_end = leaves.end();
+
+		for (it = leaves.begin(); it != it_end; ++ it)
+		{
+			mViewCellsTree->PropagatePvs(*it);
+		}
+
+		// output stats
+		sprintf(s, "Stats-%09d-eval.log", castSamples);
+		string fileName = string(statsPrefix) + string(s);
+
+		mViewCellsTree->ExportStats(fileName);
+
+		cout << "finished" << endl;
+	
+		disposeRays(evaluationSamples, NULL);
+	}
 }
 
@@ -446,9 +527,11 @@
 
   float sum = 0.0f;
-  for (it = rays.begin(); it != it_end; ++ it) {
-	sum += ComputeSampleContributions(*(*it), addRays, storeViewCells);
-	//ComputeSampleContributions(*(*it), addRays);
-	//	sum += (*it)->mPvsContribution;
+  for (it = rays.begin(); it != it_end; ++ it) 
+  {
+	  sum += ComputeSampleContributions(*(*it), addRays, storeViewCells);
+	  //ComputeSampleContributions(*(*it), addRays);
+	  //	sum += (*it)->mPvsContribution;
   }
+
   return sum;
 }
@@ -885,5 +968,5 @@
 
 	CastLineSegment(origin, termination, viewcells);
-	
+
 	// copy viewcells memory efficiently
 	//const bool storeViewcells = !addRays;
@@ -897,26 +980,34 @@
 	ViewCellContainer::const_iterator it = viewcells.begin();
 
-
-  for (; it != viewcells.end(); ++it) {
-	ViewCell *viewcell = *it;
-	if (viewcell->GetValid()) {
-	  // if ray not outside of view space
-	  float contribution;
-	  if (viewcell->GetPvs().GetSampleContribution(ray.mTerminationObject,
-												   ray.mPdf,
-												   contribution
-												   ))
-		ray.mPvsContribution++;
-	  ray.mRelativePvsContribution += contribution;
-	}
-  }
-
-  if (addRays)
-	for (it = viewcells.begin(); it != viewcells.end(); ++it) {
-	  ViewCell *viewcell = *it;
-	  if (viewcell->GetValid()) {
-		// if ray not outside of view space
-		viewcell->GetPvs().AddSample(ray.mTerminationObject, ray.mPdf);
-	  }
+	for (; it != viewcells.end(); ++ it) 
+	{
+		ViewCell *viewcell = *it;
+		if (viewcell->GetValid()) 
+		{
+			// if ray not outside of view space
+			float contribution;
+			if (viewcell->GetPvs().GetSampleContribution(ray.mTerminationObject,
+														 ray.mPdf,
+														 contribution))
+			{
+				++ ray.mPvsContribution;
+				ray.mRelativePvsContribution += contribution;
+			}
+		}
+	}
+
+	
+	if (addRays)
+	{
+		for (it = viewcells.begin(); it != viewcells.end(); ++ it) 
+		{
+			ViewCell *viewcell = *it;
+            
+			if (viewcell->GetValid()) 
+			{
+				// if ray not outside of view space
+				viewcell->GetPvs().AddSample(ray.mTerminationObject, ray.mPdf);
+			}
+		}
 	}
 
@@ -2471,6 +2562,5 @@
 	}
 	else 
-	{
-		// we can use the view cells tree hierarchy to get the right set
+	{	// we can use the view cells tree hierarchy to get the right set
 		mViewCellsTree->CollectBestViewCellSet(mViewCells, mNumActiveViewCells);
 	}
@@ -2509,5 +2599,5 @@
 
 	Debug << "samples used for vsp bsp subdivision: " << mInitialSamples 
-		  << " rays: " << (int)rays.size() << endl;
+		  << ", actual rays: " << (int)rays.size() << endl;
 
 	GetRaySets(rays, mInitialSamples, constructionRays, &savedRays);
