Main Page | Packages | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | Related Pages

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

Generated on Thu Jul 15 09:55:41 2004 for SCT DAQ/DCS Software - Java by doxygen 1.3.5