Commit in java/trunk on MAIN
hps-java/src/main/resources/org/lcsim/hps/steering/users/celentan/EcalMonitoringCelentan.lcsim+60-35344 -> 345
monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots/EcalClusterPlots.java+31-44344 -> 345
                                                              /EcalDaqPlots.java+134-129344 -> 345
                                                              /EcalEventDisplay.java+26-1344 -> 345
                                                              /EcalHitPlots.java+51-66344 -> 345
                                                              /EcalMonitoringPlots.java+51-33344 -> 345
+353-308
6 modified files
Documented the code for EcalMonitoring.
Changed the lcsim steering file to use the new clusterer driver.

java/trunk/hps-java/src/main/resources/org/lcsim/hps/steering/users/celentan
EcalMonitoringCelentan.lcsim 344 -> 345
--- java/trunk/hps-java/src/main/resources/org/lcsim/hps/steering/users/celentan/EcalMonitoringCelentan.lcsim	2014-03-25 02:59:38 UTC (rev 344)
+++ java/trunk/hps-java/src/main/resources/org/lcsim/hps/steering/users/celentan/EcalMonitoringCelentan.lcsim	2014-03-25 14:08:14 UTC (rev 345)
@@ -15,9 +15,10 @@
         <driver name="EcalMonitoringPlots"/>     <!-- General plots -->
         <driver name="EcalHitPlots"/>            <!-- Single hit distributions -->
         <driver name="EcalClusterPlots"/>        <!-- Clusters distributions -->
-        <driver name="EcalDaqPlots"/>           <!-- DAQ Plots -->
-        <driver name="EcalWindowPlots"/>         <!-- Window plots -->
-<!--      <driver name="EcalEventMonitor"/>   -->
+        <driver name="EcalDaqPlots"/>            <!-- DAQ Plots -->
+        <driver name="EcalEventDisplay"/>       <!-- Ecal event display -->
+<!--    <driver name="EcalWindowPlots"/>        -->
+
 <!--   <driver name="EcalEvsX"/>    -->           
 <!--    <driver name="TriggerPlots"/>-->
 <!--
@@ -26,58 +27,82 @@
 -->
 <!--        <driver name="RunControlDriver" />-->
         <!--<driver name="AidaSaveDriver"/>-->
-    </execute>    
+    </execute>   
+    
+<!--  Here starts the drivers description -->
     <drivers>
-        <!--<driver name="RunControlDriver" type="org.lcsim.hps.monitoring.RunControlDriver"/>-->
+       <driver name="EventMarkerDriver"
+                type="org.lcsim.job.EventMarkerDriver">
+            <eventInterval>1</eventInterval>
+        </driver>
+        
         <driver name="CalibrationDriver" type="org.lcsim.hps.conditions.CalibrationDriver"/>   
+        
         <driver name="EcalRawConverter" type="org.lcsim.hps.recon.ecal.EcalRawConverterDriver">
 <!--            <threshold>150</threshold>-->
             <applyBadCrystalMap>false</applyBadCrystalMap>
 <!--            <dropBadFADC>true</dropBadFADC>-->
         </driver>
-        <driver name="EcalDaqPlots" type="org.lcsim.hps.users.celentan.EcalDaqPlots">
+        
+  <!--    <driver name="EcalClusterer" type="org.lcsim.hps.recon.ecal.EcalClusterer">-->
+          <driver name="EcalClusterer" type="org.lcsim.hps.recon.ecal.EcalClusterIC">
+<!--            <clusterWindow>32.0</clusterWindow>-->
+                <ecalName>Ecal</ecalName>
+                <ecalCollectionName>EcalCalHits</ecalCollectionName>
         </driver>
-        <driver name="EcalMonitoringPlots" type="org.lcsim.hps.users.celentan.EcalMonitoringPlots">
+        
+        <driver name="EcalMonitoringPlots" type="org.hps.monitoring.ecal.plots.EcalMonitoringPlots">
             <inputCollection>EcalCalHits</inputCollection>
             <eventRefreshRate>100</eventRefreshRate>
         </driver>
-        <driver name="EcalEventMonitor" type="org.lcsim.hps.users.celentan.EcalEventMonitor">
-            <eventRefreshRate>1000</eventRefreshRate>
-        </driver>
-        <driver name="EcalWindowPlots" type="org.lcsim.hps.users.celentan.EcalWindowPlots">
-            <inputCollection>EcalReadoutHits</inputCollection>
-        </driver>
-        <driver name="EcalPedestalPlots" type="org.lcsim.hps.monitoring.ecal.EcalPedestalPlots">
-            <inputCollection>EcalCalHits</inputCollection>
-            <eventRefreshRate>100</eventRefreshRate>
-        </driver>
-        <driver name="EventMarkerDriver"
-                type="org.lcsim.job.EventMarkerDriver">
-            <eventInterval>1</eventInterval>
-        </driver>
-<!--        <driver name="EcalClusterer" type="org.lcsim.hps.recon.ecal.HPSEcalCTPClusterer">-->
-        <driver name="EcalClusterer" type="org.lcsim.hps.recon.ecal.EcalClusterer">
-<!--            <clusterWindow>32.0</clusterWindow>-->
-            <ecalName>Ecal</ecalName>
-            <ecalCollectionName>EcalCalHits</ecalCollectionName>
-        </driver>
-        <driver name="EcalHitPlots" type="org.lcsim.hps.users.celentan.EcalHitPlots">
+        
+        <driver name="EcalHitPlots" type="org.hps.monitoring.ecal.plots.EcalHitPlots">
             <maxE>2.0</maxE>
             <logScale>true</logScale>
         </driver>
-        <driver name="EcalClusterPlots" type="org.lcsim.hps.users.celentan.EcalClusterPlots">
+        
+        <driver name="EcalClusterPlots" type="org.hps.monitoring.ecal.plots.EcalClusterPlots">
             <maxE>2.0</maxE>
             <logScale>false</logScale>
         </driver>
-        <driver name="EcalEvsX" type="org.lcsim.hps.monitoring.ecal.EcalEvsX">
+              
+        <driver name="EcalDaqPlots" type="org.hps.monitoring.ecal.plots.EcalDaqPlots">
+        </driver>
+       
+        <driver name="EcalEventDisplay" type="org.hps.monitoring.ecal.plots.EcalEventDisplay">
+            <inputCollection>EcalCalHits</inputCollection>
+            <eventRefreshRate>100</eventRefreshRate>
+        </driver>
+        
+        
+<!-- Here are commented drivers -->
+          <!--<driver name="RunControlDriver" type="org.lcsim.hps.monitoring.RunControlDriver"> -->
+        
+          <!--<driver name="EcalClusterer" type="org.lcsim.hps.recon.ecal.HPSEcalCTPClusterer"> -->
+        
+          <!--  <driver name="EcalEvsX" type="org.lcsim.hps.monitoring.ecal.EcalEvsX">
             <targetZ>674</targetZ>
             <inputCollection>EcalClusters</inputCollection>
-        </driver>
-        <driver name="TriggerPlots" type="org.lcsim.hps.monitoring.ecal.TriggerPlots">
+        </driver> -->
+    
+        <!-- <driver name="EcalWindowPlots" type="org.hps.monitoring.ecal.plots.EcalWindowPlots">
+            <inputCollection>EcalReadoutHits</inputCollection>
+        </driver> -->
+        
+        <!-- <driver name="EcalPedestalPlots" type="org.lcsim.hps.monitoring.ecal.EcalPedestalPlots">
+            <inputCollection>EcalCalHits</inputCollection>
+            <eventRefreshRate>100</eventRefreshRate>
+        </driver>-->
+       
+      
+       <!--  <driver name="TriggerPlots" type="org.lcsim.hps.monitoring.ecal.TriggerPlots">
             <clusterEnergyCut>0.500</clusterEnergyCut>
-        </driver>
-        <driver name="AidaSaveDriver" type="org.lcsim.job.AidaSaveDriver">
+        </driver>-->
+          
+          <!-- <driver name="AidaSaveDriver" type="org.lcsim.job.AidaSaveDriver">
             <outputFileName>triggerEPlots</outputFileName>
-        </driver>
+        </driver> -->
+    
+   
     </drivers>
 </lcsim>
\ No newline at end of file

java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots
EcalClusterPlots.java 344 -> 345
--- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots/EcalClusterPlots.java	2014-03-25 02:59:38 UTC (rev 344)
+++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots/EcalClusterPlots.java	2014-03-25 14:08:14 UTC (rev 345)
@@ -20,13 +20,26 @@
 import org.lcsim.util.Driver;
 import org.lcsim.util.aida.AIDA;
 
+/**
+ * The driver <code>EcalCluster</code> implements the histogram shown to the user 
+ * in the third tab of the Monitoring Application, when using the Ecal monitoring lcsim file.
+ * These histograms shows single-channels distributions:
+ * - First sub-tab shows the cluster counts per event (Histogram1D), the number of hits in a cluster (Histogram1D),  the cluster centers distribution* (Histogram2D), the maximum cluster energy in an event (Histogram1D)
+ * - Second sub-tab shows the energy distribution of the cluster (Histogram1D), and the maximum cluster energy in each event (Histogram1D)
+ * - Third sub-tab shows the time distribution of the cluster (Histogram1D),  taken from the mean of the times forming the cluster, as well as the RMS (Histogram1D).
+ * - Last sub-tab is a "zoom" of the the cluster centers distribution
+ * All histograms are updated continously.
+ * 
+ * The cluster center is calculated from the energy center of gravity of the hits forming a cluster.
+ * @author Andrea Celentano
+ *
+ */
+
 public class EcalClusterPlots extends Driver implements Resettable {
 
-	//AIDAFrame plotterFrame;
     String inputCollection = "EcalClusters";
     AIDA aida = AIDA.defaultInstance();
     
-    
     IPlotter plotter1, plotter2, plotter3, plotter4;
     IHistogram1D clusterCountPlot;
     IHistogram1D clusterSizePlot;
@@ -54,17 +67,6 @@
 
     @Override
     protected void detectorChanged(Detector detector) {
-
-    	//plotterFrame = new AIDAFrame();
-        //plotterFrame.setTitle("HPS ECal Cluster Plots");
-    	
-        // Setup the plotter factory.
-    	IPlotterFactory plotterFactory = aida.analysisFactory().createPlotterFactory("Ecal Cluster Plots");
-    	plotter1 = plotterFactory.create("Cluster Counts");
-        plotter1.setTitle("Cluster Counts");
-        //plotterFrame.addPlotter(plotter);
-        plotter1.style().dataStyle().errorBarStyle().setVisible(false);
-
         // Setup plots.
         aida.tree().cd("/");
         clusterCountPlot = aida.histogram1D(detector.getDetectorName() + " : " + inputCollection + " : Cluster Count per Event", 10, -0.5, 9.5);
@@ -75,61 +77,51 @@
         clusterTimes = aida.histogram1D(detector.getDetectorName() + " : " + inputCollection + " : Cluster Time Mean", 400, 0, 4.0 * 100);
         clusterTimeSigma = aida.histogram1D(detector.getDetectorName() + " : " + inputCollection + " : Cluster Time Sigma", 100, 0, 40);
         
-        
+        // Setup the plotter factory.
+        IPlotterFactory plotterFactory = aida.analysisFactory().createPlotterFactory("Ecal Cluster Plots");
+      
         // Create the plotter regions.
+        plotter1 = plotterFactory.create("Cluster Counts");
+        plotter1.setTitle("Cluster Counts");
+        plotter1.style().dataStyle().errorBarStyle().setVisible(false);
         plotter1.createRegions(2, 2);
         plotter1.region(0).plot(clusterCountPlot);
         plotter1.region(1).plot(clusterSizePlot);
         plotter1.region(2).plot(edgePlot);
         plotter1.region(3).plot(clusterMaxEnergyPlot);
 
-        // Setup the plotter.
+        
         plotter2 = plotterFactory.create("Cluster Energies");
+        plotter2.createRegions(1,2);
         plotter2.setTitle("Cluster Energies");
-        //plotterFrame.addPlotter(plotter2);
         plotter2.style().dataStyle().errorBarStyle().setVisible(false);
-
         if (logScale) {
             plotter2.style().yAxisStyle().setParameter("scale", "log");
         }
-
-     
-
-        // Create the plotter regions.
-        plotter2.createRegions(1, 2);
         plotter2.region(0).plot(clusterEnergyPlot);
         plotter2.region(1).plot(clusterMaxEnergyPlot);
 
         plotter3 = plotterFactory.create("Cluster Times");
         plotter3.setTitle("Cluster Times");
-        //plotterFrame.addPlotter(plotter3);
         plotter3.style().dataStyle().errorBarStyle().setVisible(false);
         plotter3.createRegions(1, 2);
         plotter3.style().yAxisStyle().setParameter("scale", "log");
-
-      
         plotter3.region(0).plot(clusterTimes);
         plotter3.region(1).plot(clusterTimeSigma);
 
         plotter4 = plotterFactory.create("Cluster Center");
         plotter4.setTitle("Edges");
-        //plotterFrame.addPlotter(plotter4);
         plotter4.style().setParameter("hist2DStyle", "colorMap");
         plotter4.style().dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
         plotter4.style().zAxisStyle().setParameter("scale", "log");
-        plotter4.createRegion();
-
-       
-      
-
-        //plotterFrame.setVisible(true);
-        //plotterFrame.pack();
+        plotter4.createRegion(); 
+        plotter4.region(0).plot(edgePlot);
         
         if (!hide){
-        	plotter1.show();
-        	plotter2.show();
-        	plotter3.show();
-        	plotter4.show();
+            plotter1.show();
+            plotter2.show();
+            plotter3.show();
+            plotter4.show();
         }
     }
 
@@ -142,7 +134,6 @@
             List<TriggerData> triggerList = event.get(TriggerData.class, "TriggerBank");
             if (!triggerList.isEmpty()) {
                 TriggerData triggerData = triggerList.get(0);
-
                 orTrig = triggerData.getOrTrig();
                 topTrig = triggerData.getTopTrig();
                 botTrig = triggerData.getBotTrig();
@@ -168,11 +159,10 @@
 //                    System.out.format("cluster:\n");
                 for (CalorimeterHit hit : cluster.getCalorimeterHits()) {
                     if (hit.getRawEnergy() != 0) {
-                    	energies[size] = hit.getRawEnergy();
+                    energies[size] = hit.getRawEnergy();
                         times[size] = hit.getTime();
                         X += energies[size] * hit.getIdentifierFieldValue("ix");
                         Y += energies[size] * hit.getIdentifierFieldValue("iy");
-                        //clusterTimes.fill(hit.getTime());
                         size++;
 //                            System.out.format("x=%d, y=%d, time=%f, energy=%f\n", hit.getIdentifierFieldValue("ix"), hit.getIdentifierFieldValue("iy"), hit.getTime(), hit.getRawEnergy());
                     }
@@ -183,9 +173,6 @@
                 clusterSizePlot.fill(size); //The number of "hits" in a "cluster"
                 clusterTimeSigma.fill(Math.sqrt(StatUtils.variance(times, 0, size)));
                 edgePlot.fill(X,Y);
-            
-             
-//                }
             }
             clusterMaxEnergyPlot.fill(maxEnergy);
         } else {
@@ -203,6 +190,6 @@
 
     @Override
     public void endOfData() {
-    	//plotterFrame.dispose();
+    //plotterFrame.dispose();
     }
 }
\ No newline at end of file

java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots
EcalDaqPlots.java 344 -> 345
--- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots/EcalDaqPlots.java	2014-03-25 02:59:38 UTC (rev 344)
+++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots/EcalDaqPlots.java	2014-03-25 14:08:14 UTC (rev 345)
@@ -12,152 +12,157 @@
 
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.RawCalorimeterHit;
+import org.lcsim.event.CalorimeterHit;
 import org.lcsim.event.RawTrackerHit;
 import org.lcsim.geometry.Detector;
 import org.lcsim.geometry.compact.Subdetector;
 import org.lcsim.hps.monitoring.deprecated.Resettable;
-import org.lcsim.hps.recon.ecal.EcalConditions;
+import org.lcsim.hps.recon.ecal.EcalConditions; //THIS IS THE OLD ONE
 import org.lcsim.util.Driver;
 import org.lcsim.util.aida.AIDA;
 
+import org.hps.conditions.ecal.*;  //This is the new condition system
+/**
+ * The driver <code>EcalDaqPlots</code> implements the histogram shown to the user 
+ * in the fourth tab of the Monitoring Application, when using the Ecal monitoring lcsim file.
+ * It contains only a sub-tab, showing the number of hits recorded by the different FADC channels.
+ * It is a very preliminary driver to monitor the DAQ status.
+ * These plots are updated continuosly.
+ * @author Andrea Celentano
+ * @TODO: integrate with the new conditions system.
+ *
+ */
+
 public class EcalDaqPlots extends Driver implements Resettable {
 
-	private String subdetectorName = "Ecal";
-	private String inputCollection = "EcalReadoutHits";
-	private IPlotter plotter;
-	private AIDA aida;
-	private Detector detector;
-	private List<IHistogram1D> plots;
-        private static final short[] slots = {10, 13, 9, 14, 8, 15, 7, 16, 6, 17, 5, 18, 4, 19};
+    private String subdetectorName = "Ecal";
+    private String inputCollection = "EcalReadoutHits";
+    private IPlotter plotter;
+    private AIDA aida;
+    private Detector detector;
+    private List<IHistogram1D> plots;
+    private static final short[] slots = {10, 13, 9, 14, 8, 15, 7, 16, 6, 17, 5, 18, 4, 19};
 
-	public EcalDaqPlots() {
-	}
+    public EcalDaqPlots() {
+    }
 
-	public void setSubdetectorName(String subdetectorName) {
-		this.subdetectorName = subdetectorName;
-	}
+    public void setSubdetectorName(String subdetectorName) {
+        this.subdetectorName = subdetectorName;
+    }
 
-	public void setInputCollection(String inputCollection) {
-		this.inputCollection = inputCollection;
-	}
+    public void setInputCollection(String inputCollection) {
+        this.inputCollection = inputCollection;
+    }
 
-	public void detectorChanged(Detector detector) {
+    public void detectorChanged(Detector detector) {
 
-		this.detector = detector;
+        this.detector = detector;
 
-		if (subdetectorName == null) {
-			throw new RuntimeException("The subdetectorName parameter was not set.");
-		}
+        if (subdetectorName == null) {
+            throw new RuntimeException("The subdetectorName parameter was not set.");
+        }
 
-		if (inputCollection == null) {
-			throw new RuntimeException("The inputCollection parameter was not set.");
-		}
+        if (inputCollection == null) {
+            throw new RuntimeException("The inputCollection parameter was not set.");
+        }
 
-		Subdetector subdetector = detector.getSubdetector(subdetectorName);
-		
-		aida = AIDA.defaultInstance();
-		aida.tree().cd("/");
-		plots = new ArrayList<IHistogram1D>();
-		
-		
-		for (int i = 1; i < 3; i++) { // crate
-			for (int j = 0; j < 14; j++) { // slot           
-				plots.add(aida.histogram1D("ECAL: Crate " + i + "; Slot " + slots[j], 16, 0, 16));
-			}
-		}
+        Subdetector subdetector = detector.getSubdetector(subdetectorName);
+        
+        aida = AIDA.defaultInstance();
+        aida.tree().cd("/");
+        plots = new ArrayList<IHistogram1D>();
+        
+        
+        for (int i = 1; i < 3; i++) { // crate
+            for (int j = 0; j < 14; j++) { // slot           
+                plots.add(aida.histogram1D("ECAL: Crate " + i + "; Slot " + slots[j], 16, 0, 16));
+            }
+        }
 
-		IPlotterFactory factory= aida.analysisFactory().createPlotterFactory("ECAL DAQ Plots");
-		plotter =factory.create("DAQ Plots");
-		IPlotterStyle pstyle = plotter.style();
-		pstyle.dataStyle().fillStyle().setColor("orange");
-		pstyle.dataStyle().markerStyle().setColor("orange");
-		pstyle.dataStyle().errorBarStyle().setVisible(false);
-		plotter.createRegions(7, 4);
-		
-		int id,plot_id;
-		for (int i = 1; i < 3; i++) { // crate
-			for (int j = 0; j < 14; j++) { // slot               
-				//System.out.println("creating plot: " + "ECAL: Crate " + j + "; Slot " + i + " in region " + region);
-				id = (i-1)*14+(j);
-				plot_id = 0;
-				if (i==1){
-					if (j%2==0) plot_id=j*2;
-					else plot_id=(j-1)*2+1;
-				}
-				else if (i==2){
-					if (j%2==0) plot_id=j*2+2;
-					else plot_id=(j-1)*2+3;
-				}
-						
-				plotter.region(plot_id).plot(plots.get(id));
-				/*JASHist jhist = ((PlotterRegion) plotter.region(region)).getPlot();
-				jhist.setAllowUserInteraction(false);
-				jhist.setAllowPopupMenus(false);
-				*/
-			}
-		}
-		plotter.show();
-	}
+        IPlotterFactory factory= aida.analysisFactory().createPlotterFactory("ECAL DAQ Plots");
+        plotter =factory.create("DAQ Plots");
+        IPlotterStyle pstyle = plotter.style();
+        pstyle.dataStyle().fillStyle().setColor("orange");
+        pstyle.dataStyle().markerStyle().setColor("orange");
+        pstyle.dataStyle().errorBarStyle().setVisible(false);
+        plotter.createRegions(7, 4);
+        
+        int id,plot_id;
+        for (int i = 1; i < 3; i++) { // crate
+            for (int j = 0; j < 14; j++) { // slot               
+                //System.out.println("creating plot: " + "ECAL: Crate " + j + "; Slot " + i + " in region " + region);
+                id = (i-1)*14+(j);
+                plot_id = 0;
+                if (i==1){
+                    if (j%2==0) plot_id=j*2;
+                    else plot_id=(j-1)*2+1;
+                }
+                else if (i==2){
+                    if (j%2==0) plot_id=j*2+2;
+                    else plot_id=(j-1)*2+3;
+                }
+                        
+                plotter.region(plot_id).plot(plots.get(id));
+            }
+        }
+        plotter.show();
+    }
+    
+    @Override
+    public void reset() {
+        if (plotter != null) {
+            for (IHistogram1D plot : plots) {
+                plot.reset();
+            }
+        }
+    }
 
-//	public void endOfData() {
-//		if (plotter != null) {
-//			plotter.hide();
-//		}
-//	}
-
-	public void reset() {
-		if (plotter != null) {
-		//	plotter.hide();
-		//	plotter.destroyRegions();
-			for (IHistogram1D plot : plots) {
-				plot.reset();
-			}
-			//detectorChanged(detector);
-		}
-	}
-
-	public void process(EventHeader event) {
-		if (event.hasCollection(RawCalorimeterHit.class, inputCollection)) {
-			List<RawCalorimeterHit> hits = event.get(RawCalorimeterHit.class, inputCollection);
-			for (RawCalorimeterHit hit : hits) {
-				Long daqId = EcalConditions.physicalToDaqID(hit.getCellID());
-				int crate = EcalConditions.getCrate(daqId);
-				int slot = EcalConditions.getSlot(daqId);
-				int channel = EcalConditions.getChannel(daqId);
-				int id = getSlotIndex(slot)+(crate-1)*14;
-				
-				//System.out.println("crate="+crate+"; slot="+slot+"; channel="+channel);
-				//System.out.println("filling plot: " + "ECAL: Crate " + crate + "; Slot " + slot+ "(" + getSlotIndex(slot)+ ")"+" id: "+id );	
-				plots.get(id).fill(channel);
-			}
-		}
-		if (event.hasCollection(RawTrackerHit.class, inputCollection)) {
-			List<RawTrackerHit> hits = event.get(RawTrackerHit.class, inputCollection);
-			for (RawTrackerHit hit : hits) {
-				Long daqId = EcalConditions.physicalToDaqID(hit.getCellID());
-				int crate = EcalConditions.getCrate(daqId);
-				int slot =  EcalConditions.getSlot(daqId);
-				int channel = EcalConditions.getChannel(daqId);
-				//System.out.println("crate="+crate+"; slot="+slot+"; channel="+channel);
-				//System.out.println("filling plot: " + "ECAL: Crate " + crate + "; Slot " + slot);
-				int id = getSlotIndex(slot)+(crate-1)*14;
-				plots.get(id).fill(channel);
-			}
-		}
-	}
-	
-	
-	
-	public int getSlotIndex(int slot){
-		int ret=-1;
-		for (int ii=0;ii<14;ii++){
-			if (slots[ii]==slot) ret=ii;
-		}
-		return ret;
-	}
-	
-	
-	
-	
-	
+    public void process(EventHeader event) {
+        if (event.hasCollection(CalorimeterHit.class, inputCollection)) {
+            List<CalorimeterHit> hits = event.get(CalorimeterHit.class, inputCollection);
+            for (CalorimeterHit hit : hits) {
+            	
+            	//EcalChannel.GeometryId geomID;
+            	//EcalChannel channel;
+            	//geomID.x=hit.getIdentifierFieldValue("ix");
+            	//geomID.y=hit.getIdentifierFieldValue("iy");
+            	//channel=EcalChannel.findChannel(geomID);
+            			
+                Long daqId = EcalConditions.physicalToDaqID(hit.getCellID());
+                int crate = EcalConditions.getCrate(daqId);
+                int slot = EcalConditions.getSlot(daqId);
+                int channel = EcalConditions.getChannel(daqId);
+                int id = getSlotIndex(slot)+(crate-1)*14;
+                plots.get(id).fill(channel);
+            }
+        }
+/*        
+ *          if (event.hasCollection(RawTrackerHit.class, inputCollection)) {
+            List<RawTrackerHit> hits = event.get(RawTrackerHit.class, inputCollection);
+            for (RawTrackerHit hit : hits) {
+                Long daqId = EcalConditions.physicalToDaqID(hit.getCellID());
+                int crate = EcalConditions.getCrate(daqId);
+                int slot =  EcalConditions.getSlot(daqId);
+                int channel = EcalConditions.getChannel(daqId);
+                int id = getSlotIndex(slot)+(crate-1)*14;
+                plots.get(id).fill(channel);
+            }
+        }
+        */
+    }
+    
+    
+    
+    public int getSlotIndex(int slot){
+        int ret=-1;
+        for (int ii=0;ii<14;ii++){
+            if (slots[ii]==slot) ret=ii;
+        }
+        return ret;
+    }
+    
+    
+    
+    
+    
 }

java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots
EcalEventDisplay.java 344 -> 345
--- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots/EcalEventDisplay.java	2014-03-25 02:59:38 UTC (rev 344)
+++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots/EcalEventDisplay.java	2014-03-25 14:08:14 UTC (rev 345)
@@ -36,6 +36,18 @@
 import org.hps.monitoring.ecal.util.CrystalListener;
 import org.hps.monitoring.ecal.plots.EcalMonitoringUtils;
 
+/**
+ *  The driver <code>EcalEvendDisplay</code> implements the histogram shown to the user 
+ * in the fifth tab of the Monitoring Application, when using the Ecal monitoring lcsim file.
+ * IT ALSO OPENS KYLE's EVENT DISPLAY <code>PEventViewer</code>.
+ * The implementation is as follows:
+ * - The event display is opened in a separate window
+ * - It is updated regularly, according to the event refresh rate
+ * - If the user clicks on a crystal, the corresponding energy and time distributions (both Histogram1D) are shown in the last panel of the MonitoringApplicatopn
+ * The single channel plots are created in the  <code>EcalHitPlots</code> driver.
+ * @author Andrea Celentano
+ *  *
+ */
 
 public class EcalEventDisplay extends Driver implements CrystalListener,ActionListener {
 
@@ -52,6 +64,7 @@
     private PEventViewer viewer; //this is the Kyle event viewer.    
 
     IHistogram1D hEnergy,hEnergyDraw,hTime,hTimeDraw;
+    IHistogram2D hTimeVsEnergy,hTimeVsEnergyDraw;
     
     public EcalEventDisplay() {
     	
@@ -79,11 +92,12 @@
     	
        	hEnergy = aida.histogram1D(detector.getDetectorName() + " : " + inputCollection + " : Hit Energy : " + (iy) + " "+ (ix)+ ": "+id);
        	hTime = aida.histogram1D(detector.getDetectorName() + " : " + inputCollection + " : Hit Time : " + (iy) + " "+ (ix)+ ": "+id);
+       	hTimeVsEnergy = aida.histogram2D(detector.getDetectorName() + " : " + inputCollection + " : Hit Time Vs Energy : " + (iy) + " "+ (ix)+ ": "+id);
        			
       	
     	hEnergyDraw=aida.histogram1D("hEnergy",hEnergy.axis().bins(),hEnergy.axis().lowerEdge(),hEnergy.axis().upperEdge());
     	hTimeDraw=aida.histogram1D("hTime",hTime.axis().bins(),hTime.axis().lowerEdge(),hTime.axis().upperEdge());
- 		
+    	hTimeVsEnergyDraw=aida.histogram2D(detector.getDetectorName() + " : " + inputCollection + " : Hit Time Vs Energy : " + (iy) + " "+ (ix)+ ": "+id,hTimeVsEnergy.xAxis().bins(),hTimeVsEnergy.xAxis().lowerEdge(),hTimeVsEnergy.xAxis().upperEdge(),hTimeVsEnergy.yAxis().bins(),hTimeVsEnergy.yAxis().lowerEdge(),hTimeVsEnergy.yAxis().upperEdge());
     			
     			
     			
@@ -98,6 +112,7 @@
         plotter.createRegions(2,2);
         plotter.region(0).plot(hEnergyDraw);
         plotter.region(1).plot(hTimeDraw);
+        plotter.region(2).plot(hTimeVsEnergyDraw);
         //plotter.region(1).plot();
         //plotter.region(2).plot();
         //plotter.region(3).plot();
@@ -174,6 +189,10 @@
        	hTimeDraw.setTitle(hTime.title());
        	hTimeDraw.add(hTime);
         
+    	hTimeVsEnergy = aida.histogram2D(detector.getDetectorName() + " : " + inputCollection + " : Hit Time Vs Energy : " + (iy) + " "+ (ix)+ ": "+id);
+      	hTimeVsEnergyDraw.reset();
+       	hTimeVsEnergyDraw.setTitle(hTimeVsEnergy.title());
+       	hTimeVsEnergyDraw.add(hTimeVsEnergy);
           
     }
     
@@ -236,6 +255,12 @@
         plotter.region(1).setTitle(hTime.title());
        	hTimeDraw.setTitle(hTime.title());
        	hTimeDraw.add(hTime);
+       	
+     	hTimeVsEnergy = aida.histogram2D(detector.getDetectorName() + " : " + inputCollection + " : Hit Time Vs Energy : " + (iy) + " "+ (ix)+ ": "+id);
+       	hTimeVsEnergyDraw.reset();
+        plotter.region(2).setTitle(hTimeVsEnergy.title());
+       	hTimeVsEnergyDraw.setTitle(hTimeVsEnergy.title());
+       	hTimeVsEnergyDraw.add(hTimeVsEnergy);
 	}    
 }
 

java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots
EcalHitPlots.java 344 -> 345
--- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots/EcalHitPlots.java	2014-03-25 02:59:38 UTC (rev 344)
+++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots/EcalHitPlots.java	2014-03-25 14:08:14 UTC (rev 345)
@@ -30,12 +30,30 @@
 import javax.swing.JPanel;
 //import org.jfree.chart.ChartPanel;
 
+/**
+ * The driver <code>EcalHitPlots</code> implements the histogram shown to the user 
+ * in the second tab of the Monitoring Application, when using the Ecal monitoring lcsim file.
+ * These histograms shows single-channels distributions:
+ * - First sub-tab shows the hits distribution*  (Histogram2D), the occupancy* (Histogram2D), the number of hits per event (Histogram1D),
+ *   the time distribution of the hits (Histogram1D)
+ *   The first two histograms are defined in <code>EcalMonitoringPlots</code>.
+ * - Second sub-tab shows the energy distribution of the hits (Histogram1D), and the maximum energy in each event (Histogram1D)
+ * - Third sub-tab shows the time distribution of the first hit per event, for the Ecal top (Histogram1D),  for the Ecal bottom (Histogram1D),  for both  for the Ecal top (Histogram1D).
+ * 
+ * Histograms are updated continously, expect those marked with *, that are updated regularly depending on the event refresh rate configured in the <code> EcalMonitoringPlots </code> driver
+ * 
+ * This driver also creates histogram with the energy distribution and the time distribution for each channel.
+ * These are not shown here, but are used in the <code>EcalEventDisplay</code> driver. 
+ * However, it seemed to me this is the best place where to put them.
+ * @author Andrea Celentano
+ *
+ */
 public class EcalHitPlots extends Driver implements Resettable{
 
     //AIDAFrame plotterFrame;
     String inputCollection = "EcalCalHits";
     AIDA aida = AIDA.defaultInstance();
-    IPlotter plotter, plotter2, plotter3, plotter4;
+    IPlotter plotter, plotter2, plotter3;
 
     IHistogram1D hitCountPlot;
     IHistogram1D hitTimePlot;
@@ -49,10 +67,10 @@
     IHistogram2D occupancyPlot;
    
   
-    //Plotter5
+   
     ArrayList<IHistogram1D> channelEnergyPlot;
     ArrayList<IHistogram1D> channelTimePlot;
-    
+    ArrayList<IHistogram2D> channelTimeVsEnergyPlot;
   
     int eventn = 0;
     int eventRefreshRate = 1;
@@ -80,17 +98,14 @@
 
     @Override
     protected void detectorChanged(Detector detector) {
-    	
-       //plotterFrame = new AIDAFrame();
-       // plotterFrame.setTitle("HPS ECal Hit Plots");
-    	System.out.println("Detector changed called: "+ detector.getClass().getName());
-    	aida.tree().cd("/");
+        
+        System.out.println("Detector changed called: "+ detector.getClass().getName());
+        aida.tree().cd("/");
         IPlotterFactory plotterFactory = aida.analysisFactory().createPlotterFactory("Ecal Hit Plots");
 
         // Setup the plotter.
         plotter = plotterFactory.create("Hit Counts");
         plotter.setTitle("Hit Counts");
-     //   plotterFrame.addPlotter(plotter);
         plotter.style().dataStyle().errorBarStyle().setVisible(false);
 
         // Setup plots.
@@ -116,20 +131,23 @@
         
         channelEnergyPlot=new ArrayList<IHistogram1D>();
         channelTimePlot=new ArrayList<IHistogram1D>();
+        channelTimeVsEnergyPlot=new ArrayList<IHistogram2D>();
+        //create the histograms for single channel energy and time distribution.
+        //these are NOT shown in this plotter, but are used in the event display.
         for(int id = 0; id < (47*11); id = id +1){
-        	  int row=EcalMonitoringUtils.getRowFromHistoID(id);
-        	  int column=EcalMonitoringUtils.getColumnFromHistoID(id);      
-        	  //create the histograms
-        	  channelEnergyPlot.add(aida.histogram1D(detector.getDetectorName() + " : " + inputCollection + " : Hit Energy : " + (row) + " "+ (column)+ ": "+id, 1000, -0.1, maxEch));  
-        	  channelTimePlot.add(aida.histogram1D(detector.getDetectorName() + " : " + inputCollection + " : Hit Time : " + (row) + " "+ (column)+ ": "+id, 100, 0, 400));     
+              int row=EcalMonitoringUtils.getRowFromHistoID(id);
+              int column=EcalMonitoringUtils.getColumnFromHistoID(id);      
+              channelEnergyPlot.add(aida.histogram1D(detector.getDetectorName() + " : " + inputCollection + " : Hit Energy : " + (row) + " "+ (column)+ ": "+id, 1000, -0.1, maxEch));  
+              channelTimePlot.add(aida.histogram1D(detector.getDetectorName() + " : " + inputCollection + " : Hit Time : " + (row) + " "+ (column)+ ": "+id, 100, 0, 400));     
+              channelTimeVsEnergyPlot.add(aida.histogram2D(detector.getDetectorName() + " : " + inputCollection + " : Hit Time Vs Energy : " + (row) + " "+ (column)+ ": "+id, 100, 0, 400,100, -0.1, maxEch));     
         }
         
         
         // Create the plotter regions.
-        plotter.createRegions(2, 2);
-        plotter.region(3).plot(hitCountPlot);
-        plotter.region(1).plot(hitTimePlot);
+        plotter.createRegions(2,2);
         plotter.region(0).plot(hitNumberPlot);
+        plotter.region(1).plot(hitTimePlot);
+        plotter.region(3).plot(hitCountPlot);
         IPlotterStyle style = plotter.region(2).style();
         style.setParameter("hist2DStyle", "colorMap");
         style.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
@@ -139,12 +157,8 @@
         // Setup the plotter.
         plotter2 = plotterFactory.create("Hit Energies");
         plotter2.setTitle("Hit Energies");
-      //  plotter2.addMouseListener(this);
-     //   plotterFrame.addPlotter(plotter2);
         plotter2.style().dataStyle().errorBarStyle().setVisible(false);
 
-  
-//        hitEnergyPlot.addMouseListener(this);
         
         if (logScale) {
             plotter2.style().yAxisStyle().setParameter("scale", "log");
@@ -153,24 +167,12 @@
         // Create the plotter regions.
         plotter2.createRegions(1, 2);
         plotter2.region(0).plot(hitEnergyPlot);
-        plotter2.region(1).plot(hitMaxEnergyPlot);
-
-    
-  
-      
-     
-         
-        
-        
-        
+        plotter2.region(1).plot(hitMaxEnergyPlot); 
+               
         plotter3 = plotterFactory.create("Hit Times");
         plotter3.setTitle("Hit Times");
-      //  plotterFrame.addPlotter(plotter3);
         plotter3.style().dataStyle().errorBarStyle().setVisible(false);
-        plotter3.createRegions(3, 3);
-
-      
-        // Create the plotter regions.
+        plotter3.createRegions(3, 3);      
         plotter3.region(0).plot(topTimePlot);
         plotter3.region(1).plot(botTimePlot);
         plotter3.region(2).plot(orTimePlot);
@@ -192,34 +194,18 @@
                 plotter3.region(i).style().zAxisStyle().setParameter("scale", "log");
             }
         }
-
-       // plotter4 = plotterFactory.create("Edges");
-       // plotter4.setTitle("Edges");
-      //  plotterFrame.addPlotter(plotter4);
-       // plotter4.style().setParameter("hist2DStyle", "colorMap");
-       // plotter4.style().dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
-       // plotter4.style().zAxisStyle().setParameter("scale", "log");
-      //  plotter4.createRegion();
-
-       //
-       // plotter4.region(0).plot(edgePlot);
-
         
         if (!hide) {
-        	plotter.show();
-        	plotter2.show();
-        	plotter3.show(); 
-        //	plotter4.show(); 
-        //	plotter5.show(); Andrea: not yet.
+            plotter.show();
+            plotter2.show();
+            plotter3.show(); 
         }
-        //plotterFrame.setVisible(true);
-        //plotterFrame.pack();
     }
 
     @Override
     public void process(EventHeader event) {
-    	
-    	
+        
+        
         int orTrigTime = -1;
         int topTrigTime = -1;
         int botTrigTime = -1;
@@ -282,14 +268,15 @@
                
                 hitEnergyPlot.fill(hit.getRawEnergy());
                 hitTimePlot.fill(hit.getTime());
+            
                 
-                
                 column=hit.getIdentifierFieldValue("ix");
                 row=hit.getIdentifierFieldValue("iy"); 
                 if ((hit.getIdentifierFieldValue("ix")!=0)&&(hit.getIdentifierFieldValue("iy")!=0)){
-                  	id = EcalMonitoringUtils.getHistoIDFromRowColumn(row,column);
-                	channelEnergyPlot.get(id).fill(hit.getCorrectedEnergy());
-                	channelTimePlot.get(id).fill(hit.getTime());
+                    id = EcalMonitoringUtils.getHistoIDFromRowColumn(row,column);
+                    channelEnergyPlot.get(id).fill(hit.getCorrectedEnergy());
+                    channelTimePlot.get(id).fill(hit.getTime());
+                    channelTimeVsEnergyPlot.get(id).fill(hit.getTime(),hit.getRawEnergy());
                 }
                 
                 if (hit.getTime() < orTime) {
@@ -348,9 +335,9 @@
         hitTimePlot.reset();
         hitEnergyPlot.reset();
         hitMaxEnergyPlot.reset();
-        for(int id = 0; id < (47*11); id = id +1){   	  
-      	  channelEnergyPlot.get(id).reset();
-    	  channelTimePlot.get(id).reset();
+        for(int id = 0; id < (47*11); id = id +1){         
+            channelEnergyPlot.get(id).reset();
+            channelTimePlot.get(id).reset();
         }
     }
 
@@ -358,8 +345,6 @@
     public void endOfData() {
         //plotterFrame.dispose();
     }
-       
- 
 }
 
    
\ No newline at end of file

java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots
EcalMonitoringPlots.java 344 -> 345
--- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots/EcalMonitoringPlots.java	2014-03-25 02:59:38 UTC (rev 344)
+++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots/EcalMonitoringPlots.java	2014-03-25 14:08:14 UTC (rev 345)
@@ -21,6 +21,18 @@
 
 import org.hps.monitoring.ecal.plots.EcalMonitoringUtils;
 
+/**
+ * The driver <code>EcalMonitoringPlots</code> implements the histogram shown to the user 
+ * in the first tab of the Monitoring Application, when using the Ecal monitoring lcsim file.
+ * It contains only a sub-tab, with 3 histograms.
+ * - Hit counts by channel (Histogram2D), Occupancy by channel (Histogram2D), Cluster counts by channel (Histogram2D) 
+ * Each cluster is associated with the seed crystal.
+ * 
+ * These plots are updated regularly, according to the event refresh rate.
+ * @author Andrea Celentano
+ *
+ */
+
 public class EcalMonitoringPlots extends Driver implements Resettable, Redrawable {
 
     String inputCollection = "EcalReadoutHits";
@@ -53,6 +65,16 @@
     public void setHide(boolean hide) {
         this.hide = hide;
     }
+    
+    /**
+     * Set the refresh rate for histograms in this driver
+     * @param eventRefreshRate: the refresh rate, defined as number of events to accumulate before
+     * refreshing the plot
+     */
+    @Override
+    public void setEventRefreshRate(int eventRefreshRate) {
+        this.eventRefreshRate = eventRefreshRate;
+    }
 
     protected void detectorChanged(Detector detector) {
         System.out.println("EcalMonitoringPlots:: detector changed was called");
@@ -68,8 +90,8 @@
 
         occupancyPlots=new ArrayList<IHistogram1D>();
         for (int ii=0;ii<(11*47);ii++){
-        	 int row=EcalMonitoringUtils.getRowFromHistoID(ii);
-       	     int column=EcalMonitoringUtils.getColumnFromHistoID(ii);     
+             int row=EcalMonitoringUtils.getRowFromHistoID(ii);
+             int column=EcalMonitoringUtils.getColumnFromHistoID(ii);     
              occupancyPlots.add(aida.histogram1D(detector.getDetectorName() + " : " + inputCollection + " : Occupancy : " + (row) + " "+ (column)+ ": "+ii, 101,0,1));  
         }
         
@@ -98,15 +120,15 @@
     }
  
     public void process(EventHeader event) {
-    	int nhits=0;
-    	int chits[]=new int[11*47];
+        int nhits=0;
+        int chits[]=new int[11*47];
         if (event.hasCollection(BaseRawCalorimeterHit.class, inputCollection)) {
             List<BaseRawCalorimeterHit> hits = event.get(BaseRawCalorimeterHit.class, inputCollection);
             for (BaseRawCalorimeterHit hit : hits) {
-            	int column=hit.getIdentifierFieldValue("ix");
-            	int row=hit.getIdentifierFieldValue("iy");
-            	int id=EcalMonitoringUtils.getHistoIDFromRowColumn(row, column);
-            	hitCountFillPlot.fill(column,row);
+                int column=hit.getIdentifierFieldValue("ix");
+                int row=hit.getIdentifierFieldValue("iy");
+                int id=EcalMonitoringUtils.getHistoIDFromRowColumn(row, column);
+                hitCountFillPlot.fill(column,row);
                 chits[id]++;
                 nhits++;
             }
@@ -114,10 +136,10 @@
         if (event.hasCollection(RawTrackerHit.class, inputCollection)) {
             List<RawTrackerHit> hits = event.get(RawTrackerHit.class, inputCollection);
             for (RawTrackerHit hit : hits) { 
-            	int column=hit.getIdentifierFieldValue("ix");
-            	int row=hit.getIdentifierFieldValue("iy");
-            	int id=EcalMonitoringUtils.getHistoIDFromRowColumn(row, column);
-            	hitCountFillPlot.fill(column,row);
+                int column=hit.getIdentifierFieldValue("ix");
+                int row=hit.getIdentifierFieldValue("iy");
+                int id=EcalMonitoringUtils.getHistoIDFromRowColumn(row, column);
+                hitCountFillPlot.fill(column,row);
                 chits[id]++;
                 nhits++;
             }
@@ -125,10 +147,10 @@
         if (event.hasCollection(CalorimeterHit.class, inputCollection)) {
             List<CalorimeterHit> hits = event.get(CalorimeterHit.class, inputCollection);
             for (CalorimeterHit hit : hits) {
-            	int column=hit.getIdentifierFieldValue("ix");
-            	int row=hit.getIdentifierFieldValue("iy");
-            	int id=EcalMonitoringUtils.getHistoIDFromRowColumn(row, column);
-            	hitCountFillPlot.fill(column,row);
+                int column=hit.getIdentifierFieldValue("ix");
+                int row=hit.getIdentifierFieldValue("iy");
+                int id=EcalMonitoringUtils.getHistoIDFromRowColumn(row, column);
+                hitCountFillPlot.fill(column,row);
                 chits[id]++;
                 nhits++;
             }
@@ -137,16 +159,15 @@
         
         
         
-  	  if (nhits>0) {
+        if (nhits>0) {
         for (int ii=0;ii<(11*47);ii++){
-        	occupancyPlots.get(ii).fill(chits[ii]*1./(nhits ));                
-        }
-  	  }        
+            occupancyPlots.get(ii).fill(chits[ii]*1./(nhits ));                
+            }
+        }        
         
             
         if (event.hasCollection(HPSEcalCluster.class, clusterCollection)) {
-            List<HPSEcalCluster> clusters = event.get(HPSEcalCluster.class, clusterCollection);
-//if (clusters.size()>1)            
+            List<HPSEcalCluster> clusters = event.get(HPSEcalCluster.class, clusterCollection);           
             for (HPSEcalCluster cluster : clusters) {
                 clusterCountFillPlot.fill(cluster.getSeedHit().getIdentifierFieldValue("ix"), cluster.getSeedHit().getIdentifierFieldValue("iy"));
             }
@@ -170,7 +191,7 @@
         
         occupancyDrawPlot.reset();
         for (int id=0;id<(47*11);id++){
-        	occupancyPlots.get(id).reset();
+            occupancyPlots.get(id).reset();
         }
     }
 
@@ -182,17 +203,14 @@
         clusterCountDrawPlot.add(clusterCountFillPlot);        
         occupancyDrawPlot.reset();
         for (int id=0;id<(47*11);id++){
-        		int row=EcalMonitoringUtils.getRowFromHistoID(id);
-        		int column=EcalMonitoringUtils.getColumnFromHistoID(id);
-        		double mean=occupancyPlots.get(id).mean();
-        		if ((row!=0)&&(column!=0)&&(!EcalMonitoringUtils.isInHole(row, column))) occupancyDrawPlot.fill(column,row,mean);
-        	}
-    	} 
+                int row=EcalMonitoringUtils.getRowFromHistoID(id);
+                int column=EcalMonitoringUtils.getColumnFromHistoID(id);
+                double mean=occupancyPlots.get(id).mean();
+                if ((row!=0)&&(column!=0)&&(!EcalMonitoringUtils.isInHole(row, column))) occupancyDrawPlot.fill(column,row,mean);
+            }
+        } 
 
-    @Override
-    public void setEventRefreshRate(int eventRefreshRate) {
-        this.eventRefreshRate = eventRefreshRate;
-    }
+  
 
     private IHistogram2D makeCopy(IHistogram2D hist) {
         return aida.histogram2D(hist.title() + "_copy", hist.xAxis().bins(), hist.xAxis().lowerEdge(), hist.xAxis().upperEdge(), hist.yAxis().bins(), hist.yAxis().lowerEdge(), hist.yAxis().upperEdge());
SVNspam 0.1