Author: [log in to unmask] Date: Tue Mar 31 17:29:25 2015 New Revision: 2644 Log: Turn off plot legend. Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots/EcalDaqPlots.java Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots/EcalDaqPlots.java ============================================================================= --- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots/EcalDaqPlots.java (original) +++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots/EcalDaqPlots.java Tue Mar 31 17:29:25 2015 @@ -19,38 +19,34 @@ import org.lcsim.geometry.compact.Subdetector; import org.lcsim.util.Driver; import org.lcsim.util.aida.AIDA; + /*Conditions system imports*/ - /** - * 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. + * 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 { private String subdetectorName = "Ecal"; private String inputCollection = "EcalCalHits"; private IPlotter plotter; private AIDA aida; - private Detector detector; + private List<IHistogram1D> plots; - - private List<Integer> slotsT,slotsB,crates; - - private EcalConditions conditions; + + private List<Integer> slotsT, slotsB, crates; + private EcalChannel.EcalChannelCollection channels; private DatabaseConditionsManager manager; - //private ConditionsManager manager; + + // private ConditionsManager manager; public EcalDaqPlots() { - manager = DatabaseConditionsManager.getInstance(); - //manager = ConditionsManager.defaultInstance(); + manager = DatabaseConditionsManager.getInstance(); + // manager = ConditionsManager.defaultInstance(); } public void setSubdetectorName(String subdetectorName) { @@ -63,159 +59,131 @@ public void detectorChanged(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."); - } - - this.detector = detector; - - Subdetector subdetector = detector.getSubdetector(subdetectorName); - - - /*Setup the conditions system*/ - //conditions=manager.getConditionsData(EcalConditions.class,TableConstants.ECAL_CONDITIONS); - //channels = conditions.getChannelCollection(); + if (inputCollection == null) { + throw new RuntimeException("The inputCollection parameter was not set."); + } - // Get the channel information from the database. + // Get the channel information from the database. channels = manager.getCachedConditions(EcalChannel.EcalChannelCollection.class, "ecal_channels").getCachedData(); - //List<EcalCrystal> crystals = detector.getDetectorElement().findDescendants(EcalCrystal.class); - /*I do not want the ECAL Crates and Slots to be hard-coded. - * It is fine to assume that the FADC channels are from 0 to 15: - * This is determined by JLAB FADC architecture - * It is also fine to say that there are 14 slots occupied by FADCs in each crate: - * 14*16=224, number of channel in each Ecal sector (a part from the hole) - * + /* + * I do not want the ECAL Crates and Slots to be hard-coded. It is fine to assume that the FADC channels are from 0 to 15: + * This is determined by JLAB FADC architecture. + * It is also fine to say that there are 14 slots occupied by FADCs in each crate: 14*16=224, number of channel in each Ecal sector + * (apart from the hole). */ - - slotsT=new ArrayList<Integer>(); - slotsB=new ArrayList<Integer>(); - crates=new ArrayList<Integer>(); - + slotsT = new ArrayList<Integer>(); + slotsB = new ArrayList<Integer>(); + crates = new ArrayList<Integer>(); + // Loop over channels and get the list of slots-crates for (EcalChannel channel : channels) { - - //y>0 means TOP, y<0 means BOTTOM - int y = channel.getY(); + + // y>0 means TOP, y<0 means BOTTOM + int y = channel.getY(); int slot = channel.getSlot(); int crate = channel.getCrate(); - - if (y>0){ - if (!slotsT.contains(slot)) slotsT.add(slot); + + if (y > 0) { + if (!slotsT.contains(slot)) + slotsT.add(slot); + } else if (y < 0) { + if (!slotsB.contains(slot)) + slotsB.add(slot); } - else if (y<0){ - if (!slotsB.contains(slot)) slotsB.add(slot); - } - if (!crates.contains(crate)) crates.add(crate); + if (!crates.contains(crate)) + crates.add(crate); } - /*Order the slots in increasing order*/ + /* Order the slots in increasing order */ Collections.sort(slotsB); Collections.sort(slotsT); - - /* - System.out.println("These DAQ slots found:"); - System.out.println("TOP: "); - for (int slot : slotsT){ - System.out.print(slot+" "); - } - System.out.println(""); - System.out.println("BOTTOM: "); - for (int slot : slotsB){ - System.out.print(slot+" "); - } - System.out.println(""); - */ - + + /* + * System.out.println("These DAQ slots found:"); System.out.println("TOP: "); + * for (int slot : slotsT){ System.out.print(slot+" "); } + * System.out.println(""); System.out.println("BOTTOM: "); for + * (int slot : slotsB){ System.out.print(slot+" "); } System.out.println(""); + */ + aida = AIDA.defaultInstance(); aida.tree().cd("/"); plots = new ArrayList<IHistogram1D>(); - - - - for (int j = 0; j < 14; j++) { // TOP slot - plots.add(aida.histogram1D("ECAL: Top Crate Slot " + slotsT.get(j), 16, 0, 16)); - } - - for (int j = 0; j < 14; j++) { // BOTTOM slot - plots.add(aida.histogram1D("ECAL: Bottom Crate Slot " + slotsB.get(j), 16, 0, 16)); + + for (int j = 0; j < 14; j++) { // TOP slot + plots.add(aida.histogram1D("ECAL: Top Crate Slot " + slotsT.get(j), 16, 0, 16)); } - IPlotterFactory factory= aida.analysisFactory().createPlotterFactory("ECAL DAQ Plots"); - plotter =factory.create("Crates"); + for (int j = 0; j < 14; j++) { // BOTTOM slot + plots.add(aida.histogram1D("ECAL: Bottom Crate Slot " + slotsB.get(j), 16, 0, 16)); + } + + IPlotterFactory factory = aida.analysisFactory().createPlotterFactory("ECAL DAQ Plots"); + plotter = factory.create("Crates"); IPlotterStyle pstyle = plotter.style(); pstyle.dataStyle().fillStyle().setColor("orange"); - pstyle.dataStyle().markerStyle().setColor("orange"); + // pstyle.dataStyle().markerStyle().setColor("orange"); pstyle.dataStyle().errorBarStyle().setVisible(false); + pstyle.legendBoxStyle().setVisible(false); plotter.createRegions(7, 4); - - int id,plot_id; + + int id, plot_id; for (int i = 0; i < 2; i++) { // crate - for (int j = 0; j < 14; j++) { // slot - id=i*14+j; - plot_id = 0; - if (i==0){ //first-crate - if (j%2==0) plot_id=j*2; - else plot_id=(j-1)*2+1; + for (int j = 0; j < 14; j++) { // slot + id = i * 14 + j; + plot_id = 0; + if (i == 0) { // first-crate + if (j % 2 == 0) + plot_id = j * 2; + else + plot_id = (j - 1) * 2 + 1; + } else if (i == 1) { // second-crate + if (j % 2 == 0) + plot_id = j * 2 + 2; + else + plot_id = (j - 1) * 2 + 3; } - else if (i==1){ //second-crate - if (j%2==0) plot_id=j*2+2; - else plot_id=(j-1)*2+3; - } - System.out.println("Plot in region " + plot_id + " the plot "+plots.get(id).title() + "(index: "+id+")"); + System.out.println("Plot in region " + plot_id + " the plot " + plots.get(id).title() + "(index: " + id + ")"); 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 process(EventHeader event) { if (event.hasCollection(CalorimeterHit.class, inputCollection)) { List<CalorimeterHit> hits = event.get(CalorimeterHit.class, inputCollection); for (CalorimeterHit hit : hits) { - - // Make an ID to find. - // EcalChannel daq = new EcalChannel.DaqId(); - // daq.crate = 1; - // daq.slot = 2; - // daq.channel = 3; - // Find the matching channel. - EcalChannel channel = channels.findGeometric(hit.getCellID()); - int row=hit.getIdentifierFieldValue("iy"); - int column=hit.getIdentifierFieldValue("ix"); + // Make an ID to find. + // EcalChannel daq = new EcalChannel.DaqId(); + // daq.crate = 1; + // daq.slot = 2; + // daq.channel = 3; - int crateN=channel.getCrate(); - int slotN=channel.getSlot(); - int channelN=channel.getChannel(); - - // System.out.println("found channel at " + column + " " + row + " corresponding to DAQ crate/slot/channel " + crateN + " "+slotN+" "+channelN); - - //Top CRATE - if (row>0){ - int index = slotsT.indexOf(slotN); - plots.get(index).fill(channelN); - } - else if (row<0){ - int index = slotsB.indexOf(slotN); - plots.get(index+14).fill(channelN); - } + // Find the matching channel. + EcalChannel channel = channels.findGeometric(hit.getCellID()); + int row = hit.getIdentifierFieldValue("iy"); + int column = hit.getIdentifierFieldValue("ix"); + + int crateN = channel.getCrate(); + int slotN = channel.getSlot(); + int channelN = channel.getChannel(); + + // System.out.println("found channel at " + column + " " + row + " corresponding to DAQ crate/slot/channel " + crateN + " "+slotN+" "+channelN); + + // Top CRATE + if (row > 0) { + int index = slotsT.indexOf(slotN); + plots.get(index).fill(channelN); + } else if (row < 0) { + int index = slotsB.indexOf(slotN); + plots.get(index + 14).fill(channelN); } + } } - } + } }