public boolean underGenomicThreshold(int count, char strand) {
   boolean pass = true;
   for (BackgroundModel m : models) {
     if (m.isGenomeWide() && m.getStrand() == strand) if (!m.underThreshold(count)) pass = false;
   }
   return pass;
 }
 public boolean underAllThresholds(int count, char strand) {
   boolean pass = true;
   for (BackgroundModel m : models) {
     if (m.getStrand() == strand) if (!m.underThreshold(count)) pass = false;
   }
   return pass;
 }
 // Print
 public void printThresholds() {
   for (BackgroundModel m : models) {
     System.out.println(m.modelType + "\t" + m.getThreshold() + "\t" + m.getStrand());
   }
 }
 // Update
 public void updateModels(
     Region currReg, int currOffset, double[] thisExptHitCounts, double[] otherExptHitCounts) {
   for (BackgroundModel m : models)
     m.updateModel(currReg, currOffset, thisExptHitCounts, otherExptHitCounts);
 }
 public int getMaxThreshold(char str) {
   int max = 0;
   for (BackgroundModel m : models)
     if ((m.strand == str || str == '.') && m.getThreshold() > max) max = m.getThreshold();
   return max;
 }
 // Accessor
 public int getGenomicModelThreshold(String tType) {
   for (BackgroundModel m : models) if (m.isGenomeWide()) return m.getThreshold();
   return -1;
 }