Print

Print


Author: [log in to unmask]
Date: Thu Jun 18 17:24:57 2015
New Revision: 3162

Log:
fix plots, dumpe stuff to text file

Modified:
    java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SampleZeroHVBiasChecker.java

Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SampleZeroHVBiasChecker.java
 =============================================================================
--- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SampleZeroHVBiasChecker.java	(original)
+++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SampleZeroHVBiasChecker.java	Thu Jun 18 17:24:57 2015
@@ -7,8 +7,9 @@
 import hep.aida.IPlotterFactory;
 import hep.aida.ITree;
 
-import java.text.SimpleDateFormat;
-import java.util.Calendar;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.PrintWriter;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
@@ -20,17 +21,17 @@
 import org.hps.conditions.svt.SvtBiasConditionsLoader;
 import org.hps.conditions.svt.SvtBiasMyaDumpReader;
 import org.hps.conditions.svt.SvtBiasMyaDumpReader.SvtBiasRunRange;
+import org.hps.recon.ecal.triggerbank.AbstractIntData;
+import org.hps.recon.ecal.triggerbank.HeadBankData;
+import org.hps.util.BasicLogFormatter;
 import org.lcsim.detector.tracker.silicon.HpsSiSensor;
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.GenericObject;
 import org.lcsim.event.RawTrackerHit;
 import org.lcsim.geometry.Detector;
 import org.lcsim.util.Driver;
+import org.lcsim.util.aida.AIDA;
 import org.lcsim.util.log.LogUtil;
-import org.hps.monitoring.drivers.svt.SvtPlotUtils;
-import org.hps.recon.ecal.triggerbank.AbstractIntData;
-import org.hps.recon.ecal.triggerbank.HeadBankData;
-import org.hps.util.BasicLogFormatter;
 
 
 /**
@@ -49,13 +50,11 @@
     private static ITree tree;
     IHistogramFactory histogramFactory;
     IPlotterFactory plotterFactory = IAnalysisFactory.create().createPlotterFactory();
-
-    // Histogram maps
     IPlotter plotter1;
     IPlotter plotter2;
     IPlotter plotter3;
     IPlotter plotter4;
-    
+    private boolean showPlots = false;
 
     List<HpsSiSensor> sensors;
     private Map<HpsSiSensor, IHistogram1D> hists_rawadc;
@@ -64,31 +63,53 @@
     private Map<HpsSiSensor, IHistogram1D> hists_rawadcnoiseOFF;
     private String rawTrackerHitCollectionName = "SVTRawTrackerHits";
     private String triggerBankCollectionName ="TriggerBank";
-    private String fitFile = null;
-    private boolean plotTimeSeries = false;
     private static final String subdetectorName = "Tracker";
     List<SvtBiasRunRange> runRanges;
     SvtBiasRunRange runRange = null;
-    private int eventRefreshRate;
-    private int eventCount;
     private Date eventDate = null;
-
-    public void setFitFile(String fitFile) {
-        this.fitFile = fitFile;
-    }
-
-    public void setPlotTimeSeries(boolean plotTimeSeries) {
-        this.plotTimeSeries = plotTimeSeries;
-    }
-
-    public void setEventRefreshRate(int eventRefreshRate) {
-        this.eventRefreshRate = eventRefreshRate;
-    }
-
+    private int eventCount = 0;
+    FileWriter fWriter;
+    PrintWriter pWriter;
+    private String fileName = "biasoutput.txt";
+    private int eventCountHvOff = 0;
+    private String runSpreadSheetPath;
+    private String myaDumpPath; 
+    
+
+    public void setMyaDumpPath(String myaDumpPath) {
+        this.myaDumpPath = myaDumpPath;
+    }
+
+    public void setRunSpreadSheetPath(String runSpreadSheetPath) {
+        this.runSpreadSheetPath = runSpreadSheetPath;
+    }
+
+    public void setFileName(String fileName) {
+        this.fileName = fileName;
+    }
+
+
+    
+    public void setShowPlots(boolean showPlots) {
+        this.showPlots = showPlots;
+    }
+
+    
     @Override
     protected void detectorChanged(Detector detector) {
-   
-	tree = IAnalysisFactory.create().createTreeFactory().create();
+        
+        try {
+            fWriter = new FileWriter(fileName);
+        } catch (IOException e) {
+            throw new RuntimeException("Cannot open file " + fileName, e);
+        }
+        pWriter = new PrintWriter(fWriter);
+
+
+        
+        
+        tree = IAnalysisFactory.create().createTreeFactory().create();
+        tree.cd("");
         histogramFactory = IAnalysisFactory.create().createHistogramFactory(tree);
 
         hists_rawadc = new HashMap<HpsSiSensor, IHistogram1D>();
@@ -108,30 +129,33 @@
         plotter4.createRegions(6, 6);
 
         for (HpsSiSensor sensor : sensors) {
-            hists_rawadc.put(sensor, histogramFactory.createHistogram1D(sensor.getName() + " raw adc - ped", 100, -1000.0, 5000.0));
+            AIDA aida = AIDA.defaultInstance();
+            hists_rawadc.put(sensor, aida.histogram1D(sensor.getName() + " raw adc - ped", 100, -1000.0, 5000.0));
             plotter1.region(SvtPlotUtils.computePlotterRegion(sensor)).plot(hists_rawadc.get(sensor));
-            hists_rawadcnoise.put(sensor, histogramFactory.createHistogram1D(sensor.getName() + " raw adc - ped maxSample>4", 100, -1000.0, 1000.0));
+            hists_rawadcnoise.put(sensor, aida.histogram1D(sensor.getName() + " raw adc - ped maxSample>4", 100, -1000.0, 1000.0));
             plotter2.region(SvtPlotUtils.computePlotterRegion(sensor)).plot(hists_rawadcnoise.get(sensor));
-            hists_rawadcnoiseON.put(sensor, histogramFactory.createHistogram1D(sensor.getName() + " raw adc - ped maxSample>4 ON", 100, -1000.0, 1000.0));
+            hists_rawadcnoiseON.put(sensor, aida.histogram1D(sensor.getName() + " raw adc - ped maxSample>4 ON", 100, -1000.0, 1000.0));
             plotter3.region(SvtPlotUtils.computePlotterRegion(sensor)).plot(hists_rawadcnoiseON.get(sensor));
-            hists_rawadcnoiseOFF.put(sensor, histogramFactory.createHistogram1D(sensor.getName() + " raw adc - ped maxSample>4 OFF", 100, -1000.0, 1000.0));
+            hists_rawadcnoiseOFF.put(sensor, aida.histogram1D(sensor.getName() + " raw adc - ped maxSample>4 OFF", 100, -1000.0, 1000.0));
             plotter4.region(SvtPlotUtils.computePlotterRegion(sensor)).plot(hists_rawadcnoiseOFF.get(sensor));
         }
 
-        plotter1.show();
-        plotter2.show();
-        plotter3.show();
-        plotter4.show();
-
-
-
-        RunMap runmap = SvtBiasConditionsLoader.getRunMapFromSpreadSheet("/Users/phansson/work/HPS/software/kepler2/hps-java-sandbox/HPS_Runs_2015-SVT_timing_guesses_for_Jeremy.csv");            
-        SvtBiasMyaDumpReader biasDumpReader = new SvtBiasMyaDumpReader("/Users/phansson/work/HPS/software/kepler2/hps-java-sandbox/biascrawling/svtbiasmon/SVT:bias:bot:20:v_sens.mya");
+        if(showPlots) {
+            plotter1.show();
+            plotter2.show();
+            plotter3.show();
+            plotter4.show();
+        }
+
+
+        RunMap runmap = SvtBiasConditionsLoader.getRunMapFromSpreadSheet(runSpreadSheetPath);
+        SvtBiasMyaDumpReader biasDumpReader = new SvtBiasMyaDumpReader(myaDumpPath);
         //SvtBiasConditionsLoader.setTimeOffset(Calendar.)
         runRanges = SvtBiasConditionsLoader.getBiasRunRanges(runmap, biasDumpReader);
         logger.info("Print all " + runRanges.size() + " bias run ranges:");
         for(SvtBiasRunRange r : runRanges) {
             logger.info(r.toString());
+            pWriter.println(r.toString());
         }
 
 
@@ -158,10 +182,15 @@
         
         
         
-        if (event.hasCollection(RawTrackerHit.class, rawTrackerHitCollectionName)) {
-            // Get RawTrackerHit collection from event.
-            List<RawTrackerHit> rawTrackerHits = event.get(RawTrackerHit.class, rawTrackerHitCollectionName);
+        Date newEventDate = getEventTimeStamp(event);
+        if(newEventDate!=null) {
+            eventDate = newEventDate;
+        }
+
+        if(eventDate!=null) {
+
             eventCount++;
+            
             if(runRange==null) {
                 for(SvtBiasRunRange r : runRanges) {
                     if (r.getRun().getRun()==event.getRunNumber()) {
@@ -169,134 +198,56 @@
                     }
                 }
             }
-            for (RawTrackerHit hit : rawTrackerHits) {
-                HpsSiSensor sensor = (HpsSiSensor) hit.getDetectorElement();
-                int strip = hit.getIdentifierFieldValue("strip");
-                double pedestal = sensor.getPedestal(strip, 0);
-                hists_rawadc.get(sensor).fill(hit.getADCValues()[0] - pedestal);
+            boolean hvOn = runRange.getRanges().includes(eventDate);
+            if(!hvOn) {
+                logger.info("Run " + event.getRunNumber() + " Event " + event.getEventNumber() + " date " + eventDate.toString() + " epoch " + eventDate.getTime() + " hvOn " + (hvOn?"YES":"NO"));
+                pWriter.println("Run " + event.getRunNumber() + " Event " + event.getEventNumber() + " date " + eventDate.toString() + " epoch " + eventDate.getTime() + " hvOn " + (hvOn?"YES":"NO"));
+                eventCountHvOff++;
+            }
+            if (event.hasCollection(RawTrackerHit.class, rawTrackerHitCollectionName)) {
+                // Get RawTrackerHit collection from event.
+                List<RawTrackerHit> rawTrackerHits = event.get(RawTrackerHit.class, rawTrackerHitCollectionName);
                 
-                int maxSample = 0;
-                double maxSampleValue = 0;
-                for(int s=0;s<6;++s) {
-                    if(((double)hit.getADCValues()[s] - pedestal)>maxSampleValue) {
-                        maxSample = s;
-                        maxSampleValue =  ((double) hit.getADCValues()[s]) - pedestal;
+                for (RawTrackerHit hit : rawTrackerHits) {
+                    HpsSiSensor sensor = (HpsSiSensor) hit.getDetectorElement();
+                    int strip = hit.getIdentifierFieldValue("strip");
+                    double pedestal = sensor.getPedestal(strip, 0);
+                    hists_rawadc.get(sensor).fill(hit.getADCValues()[0] - pedestal);
+
+                    int maxSample = 0;
+                    double maxSampleValue = 0;
+                    for(int s=0;s<6;++s) {
+                        if(((double)hit.getADCValues()[s] - pedestal)>maxSampleValue) {
+                            maxSample = s;
+                            maxSampleValue =  ((double) hit.getADCValues()[s]) - pedestal;
+                        }
                     }
-                  }
-                if(maxSample>=4) {
-                    hists_rawadcnoise.get(sensor).fill(hit.getADCValues()[0] - pedestal);
-                    
-                    Date newEventDate = getEventTimeStamp(event);
-                    if(newEventDate!=null) {
-                        eventDate = newEventDate;
-                    }
-                    if(eventDate!=null) {
-                        boolean hvOn = runRange.getRanges().includes(eventDate);
-                        logger.info("Run " + event.getRunNumber() + " Event " + event.getEventNumber() + " date " + eventDate.toString() + " epoch " + eventDate.getTime() + " hvOn " + (hvOn?"YES":"NO"));
-                        
+                    if(maxSample>=4) {
+                        hists_rawadcnoise.get(sensor).fill(hit.getADCValues()[0] - pedestal);
                         if(hvOn) {
                             hists_rawadcnoiseON.get(sensor).fill(hit.getADCValues()[0] - pedestal);
                         } else {
                             hists_rawadcnoiseOFF.get(sensor).fill(hit.getADCValues()[0] - pedestal);
                         }
-                    } else {
-                        logger.warning("No eventDatae for run " + event.getRunNumber() + " Event " + event.getEventNumber());
                     }
                 }
-                    //hists_rawadc.get(sensor).fill(strip, hit.getADCValues()[0] - pedestal);
-
-                
-
-            }
-//            if (eventCount % eventRefreshRate == 0) {
-//                for (HpsSiSensor sensor : sensors) {
-//                    IHistogram2D hist = hists.get(sensor);
-////                    hist.
-//                }
-//            }
-
-        }
-    }
-
-//    private void getMean2D(IHistogram2D hist2D) {
-//        int nx = hist2D.xAxis().bins();
-//        int ny = hist2D.yAxis().bins();
-//        double[][] means = new double[nx][ny];
-//        for (int ix = 0; ix < nx; ix++) {
-//            for (int iy = 0; iy < ny; iy++) {
-//                means[ix][iy] = hist2D.binHeight(ix, iy) / hist2D.binEntries(ix, iy);
-//            }
-//        }
-//        hist2D.reset();
-//        for (int ix = 0; ix < nx; ix++) {
-//            for (int iy = 0; iy < ny; iy++) {
-//                double x = hist2D.xAxis().binCenter(ix);
-//                double y = hist2D.yAxis().binCenter(iy);
-//                hist2D.fill(x, y, means[ix][iy]);
-//            }
-//        }
-//
-//        IFitter fitter = AIDA.defaultInstance().analysisFactory().createFitFactory().createFitter("chi2");
-//
-//    }
-//
-//    IFitResult fitGaussian(IHistogram1D h1d, IFitter fitter, String range) {
-//        double[] init = {h1d.maxBinHeight(), h1d.mean(), h1d.rms()};
-//        IFitResult ifr = null;
-//        try {
-//            ifr = fitter.fit(h1d, "g", init, range);
-//        } catch (RuntimeException ex) {
-//            System.out.println(this.getClass().getSimpleName() + ":  caught exception in fitGaussian");
-//        }
-//        return ifr;
-////        double[] init = {20.0, 0.0, 1.0, 20, -1};
-////        return fitter.fit(h1d, "g+p1", init, range);
-//    }
+            }
+        }
+    }
+
     @Override
     public void endOfData() {
-        if (fitFile == null) {
-            return;
-        }
-
-        /*
-        IFitter fitter = aida.analysisFactory().createFitFactory().createFitter("chi2");
-//        fitter.setFitMethod("CleverChiSquared");
-//        fitter.setFitMethod("binnedMaximumLikelihood");
-
-        PrintWriter fitWriter = null;
+        
+        logger.info("eventCount " + Integer.toString(eventCount) + " eventCountHvOff " + Integer.toString(eventCountHvOff));
+        pWriter.println("eventCount " + Integer.toString(eventCount) + " eventCountHvOff " + Integer.toString(eventCountHvOff));
+        
         try {
-            fitWriter = new PrintWriter(fitFile);
-        } catch (FileNotFoundException ex) {
-            Logger.getLogger(SampleZeroHVBiasChecker.class.getName()).log(Level.SEVERE, null, ex);
-        }
-
-//        for (SiSensor sensor : hists_rawadc.keySet()) {
-//            fitWriter.println(sensor.getName());
-//            IHistogram1D hist = hists_rawadc.get(sensor);
-//            //IHistogram1D fit = aida.histogram1D("1D fit", hist.yAxis().bins(), hist.yAxis().lowerEdge(), hist.yAxis().upperEdge());
-//            for (int i = 0; i < 640; i++) {
-//                fitWriter.format("%d\t", i);
-//                for (int y = 0; y < hist.yAxis().bins(); y++) {
-//                    for (int j = 0; j < hist.binHeight(i, y); j++) {
-//                        fit.fill(hist.binMeanY(i, y));
-//                    }
-//                }
-//                fitWriter.format("%f\t%f\t%f\t", fit.sumBinHeights(), fit.mean(), fit.rms());
-//                if (fit.sumBinHeights() > 100) {
-//                    IFitResult result = fitter.fit(fit, "g");
-//
-//                    if (result.isValid()) {
-//                        fitWriter.format("%f\t%f\t", result.fittedParameter("mean"), result.fittedParameter("sigma"));
-//                    }
-//                }
-//                fitWriter.println();
-//                fit.reset();
-//            } 
-//            fitWriter.flush();
-        }
-        fitWriter.close();
-        aida.tree().rm("1D fit");
-    */
+            pWriter.close();
+            fWriter.close();
+        } catch(IOException ex) {
+             logger.log(Level.SEVERE, null, ex);
+        }
+        
     }