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); + } + }