DataBlock.java

00001 package SummaryReader;
00002 
00003 public class DataBlock implements regExpressions, DisplayGUI.TestDataInfo {
00004 
00005     Double[][] data = new Double[12][];
00006     String title;
00007     String[] headers;
00008     Double[][] means = new Double[4][];
00009     int arraySize;
00010     int testType;
00011 
00012     java.text.DecimalFormat nf = new java.text.DecimalFormat("#.##");
00013     java.text.DecimalFormat nfe = new java.text.DecimalFormat("#.##E0");
00014 
00015     public DataBlock(String title, int arraySize, int testType) {
00016        this.title=title;
00017        this.testType=testType;
00018        this.arraySize=arraySize;
00019        for(int i=0;i<12;i++) data[i] = new Double[arraySize];
00020        for(int i=0;i<4;i++) means[i] = new Double[arraySize]; 
00021        headers = new String[arraySize];
00022        }
00023     public void add(int chip, int column, String dataString) {
00024        if(dataString.equals("nan")) dataString="-1.";
00025        try {
00026          data[chip][column]=Double.valueOf(dataString);
00027          }catch(Exception parseException){
00028               dataString = dataString.toLowerCase(); // handle the strings in FullByPass test
00029               if(dataString.equals("not tested")) data[chip][column] = new Double(0.);
00030               else if(dataString.equals("minimal tested")) data[chip][column] = new Double(1.);
00031               else {
00032                 data[chip][column]=null; 
00033                 System.err.println("Failed to parse datas for chip,parameter: "+chip+","+column+" : "+dataString);
00034                 }
00035               }
00036        }
00037     public void add(int chip, int column, double theData) {
00038        try {
00039          data[chip][column]=new Double(theData);
00040          }catch(Exception parseException){data[chip][column]=null; System.err.println("Failed to parse datas for chip,parameter: "+chip+","+column+" : "+theData);}
00041        }
00042     
00043     public void add(int param, String header) {
00044        headers[param]=header;
00045        }
00046     public String getTitle() {
00047        return title;
00048        }
00049     public void calculateMeans() {
00050        double refValue;
00051        for(int column=0;column<arraySize;column++) {
00052          double maxValue=-99999.;
00053          double minValue=99999.;
00054          double mean0=0.;
00055          double mean1=0.;
00056          for(int i=0;i<12;i++) {
00057              if(data[i][column]==null) {
00058                 System.err.println("Null data for chip,column "+i+","+column+" for "+title);
00059                 continue;
00060                 }
00061              double thisValue = data[i][column].doubleValue();
00062 //             if(thisValue==0. && !canBeZero[testType][column+3]) continue;
00063              if(i<6) mean0+=thisValue;
00064              else mean1+=thisValue;
00065              if(thisValue>maxValue) maxValue=thisValue;
00066              if(thisValue<minValue) minValue=thisValue;
00067              }
00068         means[0][column] = new Double(maxValue);
00069         means[1][column] = new Double(minValue);
00070         double d = mean0/6.;
00071         if(d<0.001) means[2][column] = Double.valueOf(nfe.format(d));
00072         else means[2][column] = Double.valueOf(nf.format(d));
00073         d=mean1/6.;
00074         if(d<0.001) means[3][column] = Double.valueOf(nfe.format(d));
00075         else means[3][column] = Double.valueOf(nf.format(d));
00076         }
00077       }
00078        
00079     public Double get(int chip, int column) {
00080        if(chip<4) {
00081             double value = means[chip][column].doubleValue();
00082             if(value==0. && !canBeZero[testType][column+3]) return null;
00083             if(value==-99999. || value==99999.) return null;
00084             return means[chip][column];
00085             }
00086        if(data[chip-4][column]==null) return null;
00087        if(data[chip-4][column].doubleValue()==0. && !canBeZero[testType][column+3]) return null;
00088        else return data[chip-4][column];        
00089        }
00090     public String getSummaryTable() {
00091        StringBuffer table = new StringBuffer("<h3>"+title+"</h3>\n");
00092        table.append("<table border=1>\n");
00093        table.append("<tr><td>Chip</td>");
00094        for(int param=0;param<headers.length;param++) table.append("<td>"+headers[param]+"</td>");
00095        table.append("</tr>");
00096        for(int chip=0;chip<12;chip++) {
00097           table.append("<tr><td>"+chips[chip]+"</td>");
00098           for(int param=0;param<data[chip].length;param++) {
00099              if(data[chip][param]!=null)table.append("<td>"+data[chip][param].toString()+"</td>");
00100              }
00101           table.append("</tr>");
00102           }
00103        table.append("</table>\n");
00104        return table.toString();
00105        }       
00106 }

Generated on Mon Feb 6 14:12:09 2006 for SCT DAQ/DCS Software - Java by  doxygen 1.4.6