LISTSERV mailing list manager LISTSERV 16.5

Help for HPS-SVN Archives


HPS-SVN Archives

HPS-SVN Archives


HPS-SVN@LISTSERV.SLAC.STANFORD.EDU


View:

Message:

[

First

|

Previous

|

Next

|

Last

]

By Topic:

[

First

|

Previous

|

Next

|

Last

]

By Author:

[

First

|

Previous

|

Next

|

Last

]

Font:

Proportional Font

LISTSERV Archives

LISTSERV Archives

HPS-SVN Home

HPS-SVN Home

HPS-SVN  February 2015

HPS-SVN February 2015

Subject:

r2027 - /java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/example/ExamplePlotDriver.java

From:

[log in to unmask]

Reply-To:

Notification of commits to the hps svn repository <[log in to unmask]>

Date:

Tue, 3 Feb 2015 03:02:03 -0000

Content-Type:

text/plain

Parts/Attachments:

Parts/Attachments

text/plain (350 lines)

Author: [log in to unmask]
Date: Mon Feb  2 19:01:58 2015
New Revision: 2027

Log:
Add a simple fit to example monitoring plots.

Modified:
    java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/example/ExamplePlotDriver.java

Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/example/ExamplePlotDriver.java
 =============================================================================
--- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/example/ExamplePlotDriver.java	(original)
+++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/example/ExamplePlotDriver.java	Mon Feb  2 19:01:58 2015
@@ -2,6 +2,11 @@
 
 import hep.aida.ICloud1D;
 import hep.aida.ICloud2D;
+import hep.aida.IFitFactory;
+import hep.aida.IFitResult;
+import hep.aida.IFitter;
+import hep.aida.IFunction;
+import hep.aida.IFunctionFactory;
 import hep.aida.IHistogram1D;
 import hep.aida.IHistogram2D;
 import hep.aida.IPlotter;
@@ -9,6 +14,8 @@
 import hep.aida.IPlotterStyle;
 
 import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 
 import org.lcsim.detector.identifier.IIdentifier;
 import org.lcsim.detector.identifier.IIdentifierHelper;
@@ -17,91 +24,141 @@
 import org.lcsim.event.Cluster;
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.RawCalorimeterHit;
+import org.lcsim.geometry.Detector;
 import org.lcsim.util.Driver;
 import org.lcsim.util.aida.AIDA;
 
+/**
+ * Example monitoring plots, currently only using ECAL data.
+ * 
+ * @author Jeremy McCormick <[log in to unmask]>
+ */
 /* 
 
-TODO: 
+TODO List 
 
 Add the following example plot types...
  
 [X] Histogram1D 
 
-[X] overlaid Histogram1D  
+[X] Histogram1D overlay  
 
 [X] Cloud1D
 
-[X] overlaid Cloud1D 
+[X] Cloud1D overlay 
 
 [X] Histogram2D color map
 
 [X] Histogram2D box plot
  
-[X] overlaid Histogram2D box plot
+[X] Histogram2D overlay
 
 [ ] Cloud2D as scatter plot
 
-[ ] overlaid Cloud2D scatter plots
-
-[ ] Cloud2D convertered to histogram 
+[ ] Cloud2D scatter plot overlay
+
+[ ] Cloud2D converted to histogram
  
 [ ] Profile1D
 
 [ ] Profile2D
 
-[ ] IFunction
+[X] IFunction
 
 [ ] IDataPointSet
 
-see "Aida to JFree" doc for complete list
+See this link for complete list.
 
 https://docs.google.com/spreadsheets/d/1bqKvriNOEaeTrpTrk38kBGXM8oC_F5QIZeLcSSa3JsQ/
 
 */
-
 public class ExamplePlotDriver extends Driver {
     
     AIDA aida = AIDA.defaultInstance();
     
     IPlotterFactory plotterFactory;
+    IFunctionFactory functionFactory;
+    IFitFactory fitFactory;
     
     IHistogram1D calRawHitH1D, calClusterH1D, calHitH1D, calClusterEnergyH1D;   
     IHistogram2D calHitMapH2D, calRawHitMapH2D;    
     ICloud1D calRawHitsC1D, calClustersC1D;
     ICloud2D calHitsVsEnergyC2D;
+    IFunction fittedFunction;
     
     final static String ECAL_READOUT_HITS = "EcalReadoutHits";
     final static String ECAL_CAL_HITS = "EcalCalHits";
     final static String ECAL_CLUSTERS = "EcalClusters";
+    
+    IIdentifierHelper helper;
+    
+    private static final Logger minuitLogger = Logger.getLogger("org.freehep.math.minuit");
+    static {
+        minuitLogger.setLevel(Level.OFF);
+    }
         
     public ExamplePlotDriver() {
+    }
+    
+    public void detectorChanged(Detector detector) {
+        helper = detector.getSubdetector("Ecal").getDetectorElement().getIdentifierHelper();
     }
     
     public void startOfData() {                
                
+        // AIDA boilerplate stuff.
         plotterFactory = aida.analysisFactory().createPlotterFactory("Example Plots");
+        functionFactory = aida.analysisFactory().createFunctionFactory(null);
+        fitFactory = aida.analysisFactory().createFitFactory();        
+        
         IPlotter plotter = null;
         IPlotterStyle style = null;
         
-        //
-        // Example of single Histogram1D plot.
-        //        
-        calClusterEnergyH1D = aida.histogram1D("Cal Cluster Energy", 100, 0., 10.);        
+        // Define all of the AIDA objects to be used for example plotting.
+        calClusterEnergyH1D = aida.histogram1D("Cal Cluster Energy", 100, 0., 10.);
+        calRawHitH1D = aida.histogram1D("CalRawHit Count H1D", 20, 0., 20.);
+        calHitH1D = aida.histogram1D("CalHit Count H1D", 20, 0., 20.);
+        calClusterH1D = aida.histogram1D("CalCluster Count H1D", 20, 0., 20.);
+        calHitMapH2D = aida.histogram2D("CalHit Map H2D", 47, -23.5, 23.5, 11, -5.5, 5.5);
+        calRawHitMapH2D = aida.histogram2D("CalRawHit Map H2D", 47, -23.5, 23.5, 11, -5.5, 5.5);
+        calRawHitsC1D = aida.cloud1D("CalRawHit Count C1D", 500);
+        calClustersC1D = aida.cloud1D("CalCluster Count C1D", 500);
+        calHitsVsEnergyC2D = aida.cloud2D("CalHits vs Energy C2D", 1000000);
+        fittedFunction = functionFactory.createFunctionByName("Gaussian", "G");
+        fittedFunction.setTitle("Example Fit");
+        
+        /*
+         * Histogram1D 
+         */                       
         plotter = plotterFactory.create("IHistogram1D");
+        plotter.createRegion();
         style = createDefaultPlotterStyle();
         style.dataStyle().fillStyle().setColor("blue");
-        plotter.createRegion();        
         plotter.region(0).setTitle("IHistogram1D");
         plotter.region(0).plot(calClusterEnergyH1D, style);
         plotter.show();
         
-        //
-        // Example of overlaid Histogram1D plots.
-        //        
-        calRawHitH1D = aida.histogram1D("CalRawHit Count H1D", 20, 0., 20.);
-        calHitH1D = aida.histogram1D("CalHit Count H1D", 20, 0., 20.);
-        calClusterH1D = aida.histogram1D("CalCluster Count H1D", 20, 0., 20.);                
+        /*
+         * Fit of Histogram1D
+         */
+        plotter = plotterFactory.create("IHistogram1D Fit");
+        plotter.createRegion();
+        style = createDefaultPlotterStyle();
+        style.dataStyle().fillStyle().setColor("blue");
+        plotter.region(0).setTitle("IHistogram1D");
+        plotter.region(0).plot(calHitH1D, style);                
+        IPlotterStyle functionStyle = plotterFactory.createPlotterStyle();
+        functionStyle.dataStyle().lineStyle().setColor("red");
+        functionStyle.dataStyle().markerStyle().setVisible(true);
+        functionStyle.dataStyle().markerStyle().setColor("black");
+        functionStyle.dataStyle().markerStyle().setShape("dot");
+        functionStyle.dataStyle().markerStyle().setSize(2);
+        plotter.region(0).plot(fittedFunction, functionStyle);
+        plotter.show();                
+                                                    
+        /*
+         * Histogram1D overlay
+         */                         
         plotter = plotterFactory.create("Overlayed IHistogram1D");
         plotter.createRegion();
         plotter.region(0).setTitle("Overlayed IHistogram1D");
@@ -122,8 +179,9 @@
         plotter.region(0).plot(calClusterH1D, style);
         plotter.show();           
         
-        // Example of Histogram2D displayed as a color map.
-        calHitMapH2D = aida.histogram2D("CalHit Map H2D", 47, -23.5, 23.5, 11, -5.5, 5.5);
+        /*
+         * Histogram2D as color map.
+         */                 
         plotter = plotterFactory.create("Histogram2D Color Map");
         style = createDefaultPlotterStyle();
         style.setParameter("hist2DStyle", "colorMap");
@@ -132,7 +190,9 @@
         plotter.region(0).plot(calHitMapH2D, style);
         plotter.show();        
         
-        // Example of Histogram2D displayed as box plot.       
+        /*
+         * Histogram2D as box plot.
+         */       
         plotter = plotterFactory.create("Histogram2D Box Plot");
         style = createDefaultPlotterStyle();
         style.dataStyle().fillStyle().setVisible(false);
@@ -142,8 +202,9 @@
         plotter.region(0).plot(calHitMapH2D, style);
         plotter.show();
         
-        // Example of overlaid Histogram2D box plots. 
-        calRawHitMapH2D = aida.histogram2D("CalRawHit Map H2D", 47, -23.5, 23.5, 11, -5.5, 5.5);
+        /*
+         * Histogram2D overlay box plots
+         */                
         plotter = plotterFactory.create("Overlaid IHistogram2D Box Plots");
         plotter.createRegion();
         plotter.region(0).setTitle("Overlaid Histogram2D Box Plots");
@@ -157,8 +218,9 @@
         plotter.region(0).plot(calHitMapH2D, style);
         plotter.show();       
         
-        // Example of Cloud1D which will convert to a histogram.
-        calRawHitsC1D = aida.cloud1D("CalRawHit Count C1D", 500);
+        /*
+         * Cloud1D which will convert to a histogram on the fly
+         */                
         plotter = plotterFactory.create("Cloud1D");
         style = createDefaultPlotterStyle();
         plotter.createRegion();
@@ -166,8 +228,9 @@
         plotter.region(0).plot(calRawHitsC1D, style);
         plotter.show();
         
-        // Example of overlaid Cloud1D plots.
-        calClustersC1D = aida.cloud1D("CalCluster Count C1D", 500);
+        /*
+         * Cloud1D overlay
+         */                
         plotter = plotterFactory.create("Overlayed Cloud1D");        
         plotter.createRegion();
         plotter.region(0).setTitle("Overlayed Cloud1D");
@@ -183,8 +246,9 @@
         plotter.region(0).plot(calClustersC1D, style);
         plotter.show();        
         
-        // Example of Cloud2D displayed as scatter.
-        calHitsVsEnergyC2D = aida.cloud2D("CalHits vs Energy C2D", 1000000);
+        /*
+         * Cloud2D as scatter plot.
+         */        
         plotter = plotterFactory.create("Cloud2D Scatter Plot");
         plotter.createRegion();
         plotter.region(0).setTitle("Cloud2D Scatter Plot");
@@ -193,18 +257,13 @@
         style.dataStyle().markerStyle().setColor("purple");
         style.dataStyle().markerStyle().setSize(2);
         style.dataStyle().markerStyle().setShape("diamond");
-        plotter.region(0).plot(calHitsVsEnergyC2D, style);
-        plotter.show();
+        plotter.region(0).plot(calHitsVsEnergyC2D, style);        
+        plotter.show();                      
     }
     
     public void process(EventHeader event) {
         //printCollectionSummary(event);
-        
-        // FIXME: This is ugly.
-        IIdentifierHelper helper = 
-                event.getMetaData(event.get(CalorimeterHit.class, ECAL_CAL_HITS))
-                .getIDDecoder().getSubdetector().getDetectorElement().getIdentifierHelper();
-        
+               
         if (event.hasCollection(RawCalorimeterHit.class, ECAL_READOUT_HITS)) {
             List<RawCalorimeterHit> hits = event.get(RawCalorimeterHit.class, ECAL_READOUT_HITS);
             int nHits = hits.size();
@@ -215,8 +274,7 @@
                 int ix = helper.getValue(id, "ix");
                 int iy = helper.getValue(id, "iy");
                 calRawHitMapH2D.fill(ix, iy);
-            }
-            
+            }            
         }
         
         if (event.hasCollection(CalorimeterHit.class, ECAL_CAL_HITS)) {
@@ -239,24 +297,32 @@
             for (Cluster cluster : clusters) {
                 calClusterEnergyH1D.fill(cluster.getEnergy());
             }
-        }               
-    }
-    
-    private IPlotterStyle createDefaultPlotterStyle() {
+        }    
+        
+        // Fit an H1D.
+        IFunction currentFitFunction = performGaussianFit(calHitH1D).fittedFunction();
+        
+        // Copy function parameters into the plotted function which will trigger an update.
+        fittedFunction.setParameters(currentFitFunction.parameters());
+    }
+    
+    IPlotterStyle createDefaultPlotterStyle() {
         IPlotterStyle style = plotterFactory.createPlotterStyle();
         style.gridStyle().setVisible(false);      
         style.legendBoxStyle().setVisible(true);
         return style;
     }
     
-    /*
-    private void printCollectionSummary(EventHeader event) {
-        System.out.println("Collections in event #" + event.getEventNumber() + " ...");
-        Collection<LCMetaData> metaData = event.getMetaData();
-        for (LCMetaData meta : metaData) {
-            System.out.println("  " + meta.getName() + " has " + event.get(meta.getType()).size() + " objects");
-        }
-    }
-    */
-
-}
+    IFitResult performGaussianFit(IHistogram1D histogram) {
+        IFunction function = functionFactory.createFunctionByName("Example Fit", "G");        
+        IFitter fitter = fitFactory.createFitter("chi2", "jminuit");
+        double[] parameters = new double[3];        
+        parameters[0] = histogram.maxBinHeight();
+        parameters[1] = histogram.mean();
+        parameters[2] = histogram.rms();
+        function.setParameters(parameters);
+        IFitResult fitResult = fitter.fit(histogram, function);
+        return fitResult;
+    }
+    
+}   

Top of Message | Previous Page | Permalink

Advanced Options


Options

Log In

Log In

Get Password

Get Password


Search Archives

Search Archives


Subscribe or Unsubscribe

Subscribe or Unsubscribe


Archives

November 2017
August 2017
July 2017
January 2017
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
December 2013
November 2013

ATOM RSS1 RSS2



LISTSERV.SLAC.STANFORD.EDU

Secured by F-Secure Anti-Virus CataList Email List Search Powered by the LISTSERV Email List Manager

Privacy Notice, Security Notice and Terms of Use