private static void ensembleVotingEval() throws FileNotFoundException, ParserConfigurationException, Exception {
		Scanner sc = new Scanner(System.in);
		System.out.println("How many primary systems for the ensemble?");
		int numPrimarySys = sc.nextInt();
		System.out.println("How many secondary systems for the ensemble?");
		int numSecondarySys = sc.nextInt();
		System.out.println("What is the voting threshold? (minimum votes to be counted )");
		int voteThreshhold = sc.nextInt();
		//sc.close();
		
		System.out.println("Select Gold Standard data set:");
		String gold = promptForPathSelection(EVALUATION_HOME);
		
		//Get primary system(s)
		ArrayList<String> primarySets[] = new ArrayList[numPrimarySys];
		AbstractResultSet primaryResSets[] = new AbstractResultSet[numPrimarySys];
		String primaryFilters[] = new String[numPrimarySys];
		String primaryTestTypes[] = new String[numPrimarySys];
		
		for(int i = 0; i < numPrimarySys; i++)
		{
			System.out.println("Select Primary Sets " + (i+1));
			primaryTestTypes[i] = promptForPathSelection(EVALUATION_HOME);
			primarySets[i] = EvaluatorUtil.getPathsInFolder(EVALUATION_HOME + primaryTestTypes[i]);
			primaryFilters[i] = getFilterOption();
		}
		
		
		ArrayList<String> secondarySets[] = new ArrayList[numSecondarySys];
		AbstractResultSet secondaryResSets[] = new AbstractResultSet[numSecondarySys];
		String secondaryFilters[] = new String[numSecondarySys];
		String secondaryTestTypes[] = new String[numSecondarySys];
		
		for(int i = 0; i < numSecondarySys; i++)
		{
			System.out.println("Select secondary Sets " + (i+1));
			secondaryTestTypes[i] = promptForPathSelection(EVALUATION_HOME);
			secondarySets[i] = EvaluatorUtil.getPathsInFolder(EVALUATION_HOME + secondaryTestTypes[i]);
			secondaryFilters[i] = getFilterOption();
		}

		
		System.out.println("output filename:");
		String filename = CSV_HOME + new Scanner(System.in).nextLine();
		PrintWriter out = new PrintWriter(new File(filename));
		
		ArrayList<String> goldSet = EvaluatorUtil.getPathsInFolder(EVALUATION_HOME + gold);
		AbstractResultSet goldres1;
		
		System.out.println("Gold Filter?");
		String goldFilter = getFilterOption();
		
		String csvHeader = "fileNum,TP_EM_NTC,FP__EM_NTC,FN__EM_NTC,prec_EM_NTC,rec_EM_NTC,F1_EM_NTC,TP_SB_NTC,FP_SB_NTC,FN_SB_NTC,prec_SB_NTC,rec_SB_NTC,F1_SB_NTC,TP_AO_NTC,FP_AO_NTC,FN_AO_NTC,prec_AO_NTC,rec_AO_NTC,F1_AO_NTC,TP_EM_TC,FP_EM_TC,FN_EM_TC,prec_EM_TC,rec_EM_TC,F1_EM_TC,TP_SB_TC,FP_SB_TC,FN_SB_TC,prec_SB_TC,rec_SB_TC,F1_SB_TC,TP_A0_TC,FP_A0_TC,FN_A0_TC,prec_A0_TC,rec_A0_TC,F1_A0_TC\n";
		out.write(csvHeader);

		for(int i=0; i< secondarySets[0].size(); i++)
		{

			int docNum = getResSet(secondaryTestTypes[0],secondarySets[0].get(i)).docNumber;
			
			
			//populate result sets and Run Filters
			for(int j = 0; j <numPrimarySys; j++)
			{
				primaryResSets[j] = getResSet(primaryTestTypes[j],getResultsFileByNum(docNum,primarySets[j]));
				if(primaryFilters[j] != null)
					primaryResSets[j].filter(primaryFilters[j]);
			}
			
			
			for(int j = 0; j <numSecondarySys; j++)
			{
				secondaryResSets[j] = getResSet(secondaryTestTypes[j],getResultsFileByNum(docNum,secondarySets[j]));
				if(secondaryFilters[j] != null)
					secondaryResSets[j].filter(secondaryFilters[j]);
			}
			
			goldres1 = getResSet(gold,getResultsFileByNum(docNum,goldSet));
			
			if(goldFilter != null)
			{	
				System.out.println("Filtering for: " + goldFilter);
				goldres1.filter(goldFilter);
			}
			//out.print(docNum);
			

			AbstractResultSet ensembleResSet;

			
			
			Match[] matchOrder = new Match[]{Match.EXACT_MATCH,Match.SINGLE_BOUNDARY,Match.ANY_OVERLAP,
				    Match.EXACT_MATCH,Match.SINGLE_BOUNDARY,Match.ANY_OVERLAP};

			boolean[] typeOrder = new boolean[]{false,false,false,true,true,true};

			out.write(""+docNum);
			EvaluationResults er;
			for(int j = 0; j< 6; j++)
			{
				
				ensembleResSet = getEnsembleVotingResults(primaryResSets,secondaryResSets,matchOrder[j],typeOrder[j],voteThreshhold);
				//Text.generateHTMLFromResults(goldres1, ensembleResSet, matchOrder[j], typeOrder[j]);
				er = evaluate(goldres1,ensembleResSet,matchOrder[j],typeOrder[j]);
				out.write(er.toCSV());
				ensembleResSet.reset();
				goldres1.reset();
			}
			out.write("\n");
			
			

		}
		out.close();		
		
		
	}