public boolean[] getCalibrateFlags(int length) throws IOException {
        parseRange pr = new parseRange();  
        if (calibParam == null) { // determine calibFlags based on range matching param index           
            boolean[] calibrationFlags = pr.getArray(range, length);  
            return calibrationFlags;  
        }
        else { // determine calibFlags based on range matching specified calibration parameter
            if (file == null) {
                throw new IllegalArgumentException("Must specify calibration file when calibration parameter specified");
            }
          
            CSProperties prop = DataIO.properties(new FileReader(new File(file)), "Parameter");  
            if (prop.containsKey(calibParam) == false) { 
                throw new IllegalArgumentException("Calibration param " + calibParam + " not foundin file " + file);
            }
                 
          
            String values = (String) prop.get(calibParam);         
           // System.out.println("Calibrate Match Data found as = " + calibParam + " = " + values);
            int[] parr = pr.StringToIntArray(values); 
            
           //  Find max calib param value to limit range array size.
            int pmax = Integer.MIN_VALUE;
            for (int i=0; i<parr.length; i++) { 
                if (parr[i] > pmax) pmax = parr[i];
            }
          
            List<Integer> rlist = pr.parse(this.range, pmax+1);
            boolean [] calibrationFlags = new boolean[parr.length];
            for (int i=0; i<parr.length; i++) {
                 calibrationFlags[i] = false;
                 for (Integer r : rlist) {
                   //  System.out.println("parr[ "+i+"], r = " + parr[i] + ", " + r);
                    if (parr[i] == r) {
                       calibrationFlags[i] = true; 
                      // System.out.println("CalFlag["+i+"] = true");
                    }
                 }
            }
           return calibrationFlags;
        }  
    }