public Collection<String> getMainGroopsOrd()
   {
      // A Map of groopName --> Count
      Map<String, Integer> mainGroopMap = new TreeMap<String, Integer>();
      Collection<String> mainGroops = new Vector<String>();

      Iterator<Track> tIt = tracks.iterator();
      while (tIt.hasNext())
      {
         // Increment the count for each groop
         Collection<LineUp> groops = (tIt.next()).getLineUps();
         Iterator<LineUp> gIt = groops.iterator();
         while (gIt.hasNext())
         {
            Groop grp = gIt.next().getGroop();
            String groopName = grp.getSortName();

            Integer intVal;
            if (mainGroopMap.containsKey(groopName))
            {
               intVal = mainGroopMap.get(groopName);
               intVal = intVal.intValue() + 1;
            }
            else
               intVal = 1;

            mainGroopMap.put(groopName, intVal);
         }
      }

      // Select only groops who appear on the right number of tracks
      for (Entry<String, Integer> ent : mainGroopMap.entrySet())
         if (((ent.getValue()).doubleValue() / tracks.size()) > GROOP_RATIO)
            mainGroops.add(ent.getKey());

      return mainGroops;

   }