public void scan() {
   // in the future this may call other scanOnChr to split the effort up more
   long tests = 0;
   int bestSite = -1, countSig = 0;
   double bestP = 2;
   for (int i = 0; i < refAlignment.getSiteCount(); i += step) {
     //   if(i%10000==0) System.out.println("scanChromosome
     // chr:"+refAlignment.getChr()+"+site:"+i+" with Chr:"+refAlignment.getChr()+"
     // test:"+tests);
     if (Math.abs(refAlignment.getPositionInLocus(i) - blockPosition) < blockWindow) continue;
     OpenBitSet mj = refAlignment.getSiteBitsNoClone(i, 0);
     OpenBitSet mn = refAlignment.getSiteBitsNoClone(i, 1);
     if (mn.lastCalculatedCardinality() > 4) {
       double p = TagCallerAgainstAnchorMT.testSites(obsymj, mj, mn, binomFunc);
       if (p < bestP) {
         bestP = p;
         bestSite = i;
       }
       if (p < sigThreshold) {
         countSig++;
         if (minSigPos == -1) minSigPos = refAlignment.getPositionInLocus(i);
         maxSigPos = refAlignment.getPositionInLocus(i);
       }
     }
     tests++;
   }
   int chr = Integer.parseInt(refAlignment.getLocus(bestSite).getChromosomeName());
   double[] result = {chr, bestSite, refAlignment.getPositionInLocus(bestSite), bestP, countSig};
   //  if(bestP<0.000001) System.out.println(Arrays.toString(result));
   resultReport[resultIndex] = result;
 }