     fieldOfView[d] = atoi(argv[d + fieldOfViewArgumentIndex]);
     spatialResolution[d] = atoi(argv[d + fieldOfViewArgumentIndex + trajectory->numDimensions]);
   }
-  jdcfcu(densityCompensation.size(), coordinates.data(), trajectory->numDimensions, NULL, fieldOfView, spatialResolution, cType, numLobes, numCt, binSize, numIter, densityCompensation.data());
+  jdcfcu(densityCompensation.size(), coordinates.data(), trajectory->numDimensions, NULL, fieldOfView, spatialResolution, cType, numLobes, numCt, COMPARTMENT_64, numIter, densityCompensation.data());
 	
 	/*sprintf(filename, "/home_local/noaddy/research/data/code/dcfjcu/test.ks");
 	file = fopen(filename, "wb");

// 	Allocate gpu memory
  timer.start();
	cudaMalloc((void**)&binConnections_dev, 2*numConnections*sizeof(unsigned int));
	cudaMalloc((void**)&bins_dev, ctSize*numBins2*sizeof(int));
	cudaMalloc((void**)&k_dev, ndim*npts*sizeof(float));
	cudaMalloc((void**)&Win_dev, npts*sizeof(float));
	cudaMalloc((void**)&Wout_dev, npts*sizeof(float));
	
// 	Copy to gpu
	cudaMemcpy(binConnections_dev, binConnections, 2*numConnections*sizeof(unsigned int), cudaMemcpyHostToDevice);
	cudaMemcpy(bins_dev, bins, ctSize*numBins2*sizeof(int), cudaMemcpyHostToDevice);
	cudaMemcpy(k_dev, k, ndim*npts*sizeof(float), cudaMemcpyHostToDevice);
	cudaMemcpy(Win_dev, dcf, npts*sizeof(float), cudaMemcpyHostToDevice);
  timer.stop("Allocate and copy to gpu");

		else
			binStartIdx[n] = binStartIdx[n-1]+binReps[n-1];
		
		binReps[n] = ceil(binCount1[n]/(float)compartmentSize);
		numBins2 += binReps[n];
	}

	bins = (int*)malloc(compartmentSize *numBins2*sizeof(int));

	binCurrentIdx = (unsigned int*)malloc(numBins1*sizeof(unsigned int));
	memset(binCurrentIdx, 0, numBins1*sizeof(unsigned int));

	for(n=0; n< compartmentSize *numBins2; n++)
		bins[n] = -1;

	for(n=0; n<npts; n++)
