Author: [log in to unmask] Date: Wed Sep 23 07:08:48 2015 New Revision: 3676 Log: a change to my driver Modified: java/trunk/users/src/main/java/org/hps/users/celentan/RawPedestalComputator.java Modified: java/trunk/users/src/main/java/org/hps/users/celentan/RawPedestalComputator.java ============================================================================= --- java/trunk/users/src/main/java/org/hps/users/celentan/RawPedestalComputator.java (original) +++ java/trunk/users/src/main/java/org/hps/users/celentan/RawPedestalComputator.java Wed Sep 23 07:08:48 2015 @@ -13,115 +13,131 @@ import org.lcsim.detector.identifier.IIdentifierHelper; import org.lcsim.event.EventHeader; import org.lcsim.event.RawTrackerHit; +import org.lcsim.event.CalorimeterHit; import org.lcsim.geometry.Detector; import org.lcsim.util.Driver; import org.hps.monitoring.ecal.plots.EcalMonitoringUtilities; + + public class RawPedestalComputator extends Driver { - String inputCollectionRaw = "EcalReadoutHits"; - int row, column; + String inputCollectionRaw = "EcalReadoutHits"; + int row, column; + double energy; - int[] windowRaw = new int[47 * 11];// in case we have the raw waveform, this is the window lenght (in samples) - boolean[] isFirstRaw = new boolean[47 * 11]; + int[] windowRaw = new int[47 * 11];// in case we have the raw waveform, this is the window lenght (in samples) + boolean[] isFirstRaw = new boolean[47 * 11]; - double[] pedestal = new double[47 * 11]; - double[] noise = new double[47 * 11]; - double[] result; + double[] pedestal = new double[47 * 11]; + double[] noise = new double[47 * 11]; + double[] result; - int pedSamples = 50; - int nEvents = 0; + int pedSamples = 50; + int nEvents = 0; - private EcalConditions conditions; - private IIdentifierHelper helper; - private int systemId; + private EcalConditions conditions; + private IIdentifierHelper helper; + private int systemId; - @Override - public void detectorChanged(Detector detector) { + @Override + public void detectorChanged(Detector detector) { - DatabaseConditionsManager manager = DatabaseConditionsManager.getInstance(); - this.conditions = manager.getCachedConditions(EcalConditions.class, "ecal_conditions").getCachedData(); - this.helper = detector.getSubdetector("Ecal").getDetectorElement().getIdentifierHelper(); - this.systemId = detector.getSubdetector("Ecal").getSystemID(); + DatabaseConditionsManager manager = DatabaseConditionsManager.getInstance(); + this.conditions = manager.getCachedConditions(EcalConditions.class, "ecal_conditions").getCachedData(); + this.helper = detector.getSubdetector("Ecal").getDetectorElement().getIdentifierHelper(); + this.systemId = detector.getSubdetector("Ecal").getSystemID(); - System.out.println("Pedestal computator: detector changed"); - for (int ii = 0; ii < 11 * 47; ii++) { - isFirstRaw[ii] = true; - pedestal[ii] = 0; - noise[ii] = 0; - } - } + System.out.println("Pedestal computator: detector changed"); + for (int ii = 0; ii < 11 * 47; ii++) { + isFirstRaw[ii] = true; + pedestal[ii] = 0; + noise[ii] = 0; + } + } - @Override - public void process(EventHeader event) { - int ii = 0; - if (event.hasCollection(RawTrackerHit.class, inputCollectionRaw)) { - List<RawTrackerHit> hits = event.get(RawTrackerHit.class, inputCollectionRaw); - for (RawTrackerHit hit : hits) { - row = hit.getIdentifierFieldValue("iy"); - column = hit.getIdentifierFieldValue("ix"); - ii = EcalMonitoringUtilities.getHistoIDFromRowColumn(row, column); - if ((row != 0) && (column != 0)) { - if (!EcalMonitoringUtilities.isInHole(row, column)) { - if (isFirstRaw[ii]) { // at the very first hit we read for this channel, we need to read the window length and save it - isFirstRaw[ii] = false; - windowRaw[ii] = hit.getADCValues().length; - } - result = EcalUtils.computeAmplitude(hit.getADCValues(), windowRaw[ii], pedSamples); - pedestal[ii] += result[1]; - noise[ii] += result[2]; - } - } - } - } - nEvents++; - } + @Override + public void process(EventHeader event) { + int ii = 0; + if (event.hasCollection(RawTrackerHit.class, inputCollectionRaw)) { + List<RawTrackerHit> hits = event.get(RawTrackerHit.class, inputCollectionRaw); + for (RawTrackerHit hit : hits) { + row = hit.getIdentifierFieldValue("iy"); + column = hit.getIdentifierFieldValue("ix"); + ii = EcalMonitoringUtilities.getHistoIDFromRowColumn(row, column); + if ((row != 0) && (column != 0)) { + if (!EcalMonitoringUtilities.isInHole(row, column)) { + if (isFirstRaw[ii]) { // at the very first hit we read for this channel, we need to read the window length and save it + isFirstRaw[ii] = false; + windowRaw[ii] = hit.getADCValues().length; + } + result = EcalUtils.computeAmplitude(hit.getADCValues(), windowRaw[ii], pedSamples); + pedestal[ii] += result[1]; + noise[ii] += result[2]; + } + } + } + } - @Override - public void endOfData() { - try { - PrintWriter writerTop = new PrintWriter("default01.ped", "UTF-8"); - PrintWriter writerBottom = new PrintWriter("default02.ped", "UTF-8"); + if (event.hasCollection(CalorimeterHit.class, "EcalCalHits")) { + List<CalorimeterHit> hits = event.get(CalorimeterHit.class,"EcalCalHits"); + for (CalorimeterHit hit : hits) { + column = hit.getIdentifierFieldValue("ix"); + row = hit.getIdentifierFieldValue("iy"); + energy = hit.getCorrectedEnergy(); + System.out.println("Row: "+row+" Column "+column+" Energy: "+energy); + } + } - for (int ii = 0; ii < 11 * 47; ii++) { - int row, column; - row = EcalMonitoringUtilities.getRowFromHistoID(ii); - column = EcalMonitoringUtilities.getColumnFromHistoID(ii); - if (EcalMonitoringUtilities.isInHole(row, column)) - continue; - if ((row == 0) || (column == 0)) - continue; - pedestal[ii] /= nEvents; - noise[ii] /= nEvents; - // FIXME: Is this right? --JM - EcalChannel ecalChannel = conditions.getChannelCollection().findChannel(new GeometryId(helper, new int[] {systemId, column, row})); - int crate = ecalChannel.getCrate(); - int slot = ecalChannel.getSlot(); - int channel = ecalChannel.getChannel(); + nEvents++; + } - System.out.println(column + " " + row + " " + crate + " " + slot + " " + channel + " " + pedestal[ii] + " " + noise[ii]); + @Override + public void endOfData() { + try { + PrintWriter writerTop = new PrintWriter("default01.ped", "UTF-8"); + PrintWriter writerBottom = new PrintWriter("default02.ped", "UTF-8"); - if (crate == 37) { - writerTop.print(slot + " " + channel + " " + (int) (Math.round(pedestal[ii])) + " " + (int) (Math.round(noise[ii])) + "\r\n"); - } else if (crate == 39) { - writerBottom.print(slot + " " + channel + " " + (int) (Math.round(pedestal[ii])) + " " + (int) (Math.round(noise[ii])) + "\r\n"); - } + for (int ii = 0; ii < 11 * 47; ii++) { + int row, column; + row = EcalMonitoringUtilities.getRowFromHistoID(ii); + column = EcalMonitoringUtilities.getColumnFromHistoID(ii); + if (EcalMonitoringUtilities.isInHole(row, column)) + continue; + if ((row == 0) || (column == 0)) + continue; + pedestal[ii] /= nEvents; + noise[ii] /= nEvents; - } + // FIXME: Is this right? --JM + EcalChannel ecalChannel = conditions.getChannelCollection().findChannel(new GeometryId(helper, new int[] {systemId, column, row})); + int crate = ecalChannel.getCrate(); + int slot = ecalChannel.getSlot(); + int channel = ecalChannel.getChannel(); - writerTop.close(); - writerBottom.close(); - } catch (FileNotFoundException fnfe) { + System.out.println(column + " " + row + " " + crate + " " + slot + " " + channel + " " + pedestal[ii] + " " + noise[ii]); - System.out.println(fnfe.getMessage()); + if (crate == 37) { + writerTop.print(slot + " " + channel + " " + (int) (Math.round(pedestal[ii])) + " " + (int) (Math.round(noise[ii])) + "\r\n"); + } else if (crate == 39) { + writerBottom.print(slot + " " + channel + " " + (int) (Math.round(pedestal[ii])) + " " + (int) (Math.round(noise[ii])) + "\r\n"); + } - } + } - catch (IOException ioe) { + writerTop.close(); + writerBottom.close(); + } catch (FileNotFoundException fnfe) { - System.out.println(ioe.getMessage()); + System.out.println(fnfe.getMessage()); - } - } + } + + catch (IOException ioe) { + + System.out.println(ioe.getMessage()); + + } + } }