From 3a45d661de3ed19a85122f6b5d3c95baf4646cc1 Mon Sep 17 00:00:00 2001 From: Sarah Gaiser Date: Wed, 29 May 2024 13:42:39 -0700 Subject: [PATCH] changes suggested by TongTong --- ...ithPulserDataMergingReadout2016Driver.java | 148 ------------------ ...ionWithPulserDataMergingReadoutDriver.java | 70 ++++++--- ...un2016TrigPairsWithPulserDataMerging.lcsim | 28 +--- 3 files changed, 52 insertions(+), 194 deletions(-) delete mode 100644 digi/src/main/java/org/hps/digi/EcalDigitizationWithPulserDataMergingReadout2016Driver.java diff --git a/digi/src/main/java/org/hps/digi/EcalDigitizationWithPulserDataMergingReadout2016Driver.java b/digi/src/main/java/org/hps/digi/EcalDigitizationWithPulserDataMergingReadout2016Driver.java deleted file mode 100644 index 4a24bd6bd..000000000 --- a/digi/src/main/java/org/hps/digi/EcalDigitizationWithPulserDataMergingReadout2016Driver.java +++ /dev/null @@ -1,148 +0,0 @@ -package org.hps.digi; - -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.util.Set; - -import org.hps.conditions.database.DatabaseConditionsManager; -import org.hps.conditions.ecal.EcalChannelConstants; -import org.hps.conditions.ecal.EcalConditions; -import org.hps.readout.ReadoutTimestamp; -import org.hps.recon.ecal.EcalUtils; -import org.lcsim.event.RawTrackerHit; -import org.lcsim.geometry.Detector; -import org.lcsim.geometry.subdetector.HPSEcal3; -import org.hps.record.daqconfig.ConfigurationManager; -import org.hps.record.daqconfig.DAQConfig; -import org.hps.record.daqconfig.FADCConfig; -import org.hps.conditions.ecal.EcalChannel.EcalChannelCollection; - -/** - * Class EcalDigitizationWithPulserDataMergingReadout2016Driver is an implementation of the - * {@link org.hps.digi.DigitizationWithPulserDataMergingReadout2016Driver} for a subdetector of type {@link - * org.lcsim.geometry.subdetector.HPSEcal3 HPSEcal3}. It handles all - * of the calorimeter-specific functions needed by the superclass. - * - * @author Sarah Gaiser - */ -public class EcalDigitizationWithPulserDataMergingReadout2016Driver extends DigitizationWithPulserDataMergingReadoutDriver { - // The DAQ configuration manager for FADC parameters. - private FADCConfig config = new FADCConfig(); - private boolean configStat = false; // Indicates if DAQ configuration is loaded - - // The number of nanoseconds in a clock-cycle (sample). - private static final int nsPerSample = 4; - - /** Stores the conditions for this subdetector. */ - private EcalConditions ecalConditions = null; - - /** Stores the channel collection for this subdetector. */ - private EcalChannelCollection geoMap = new EcalChannelCollection(); - - public EcalDigitizationWithPulserDataMergingReadout2016Driver() { - // Set the default values for each subdetector-dependent parameter. - setGeometryName("Ecal"); - - setInputHitCollectionName("EcalHits"); - setOutputHitCollectionName("EcalRawHits"); - setTruthRelationsCollectionName("EcalTruthRelations"); - setTriggerPathTruthRelationsCollectionName("TriggerPathTruthRelations"); - setReadoutHitCollectionName("EcalReadoutHits"); - - setPhotoelectronsPerMeV(EcalUtils.photoelectronsPerMeV); - setPulseTimeParameter(9.6); - } - - /** - * Sets whether or not the DAQ configuration is applied into the driver - * the EvIO data stream or whether to read the configuration from data files. - * - * @param state - true indicates that the DAQ configuration is - * applied into the readout system, and false that it - * is not applied into the readout system. - */ - public void setDaqConfigurationAppliedintoReadout(boolean state) { - // If the DAQ configuration should be read, attach a listener - // to track when it updates. - if (state) { - ConfigurationManager.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - // Get the DAQ configuration. - DAQConfig daq = ConfigurationManager.getInstance(); - - // Load the DAQ settings from the configuration manager. - numSamplesAfter = daq.getFADCConfig().getNSA() / nsPerSample; - numSamplesBefore = daq.getFADCConfig().getNSB() / nsPerSample; - readoutWindow = daq.getFADCConfig().getWindowWidth() / nsPerSample; - pulserDataWindow = readoutWindow; - - // Get the FADC configuration. - config = daq.getFADCConfig(); - configStat = true; - } - }); - } - } - - @Override - public void detectorChanged(Detector detector) { - // Get a copy of the calorimeter conditions for the detector. - ecalConditions = DatabaseConditionsManager.getInstance().getEcalConditions(); - - // Store the calorimeter conditions table for converting between - // geometric IDs and channel objects. - geoMap = DatabaseConditionsManager.getInstance().getCachedConditions(EcalChannelCollection.class, "ecal_channels").getCachedData(); - - // Run the superclass method. - super.detectorChanged(detector); - } - - @Override - protected Set getChannelIDs() { - return getSubdetector().getNeighborMap().keySet(); - } - - @Override - protected Long getID(RawTrackerHit hit) { - return hit.getCellID(); - } - - @Override - protected double getGainConditions(long cellID) { - return findChannel(cellID).getGain().getGain(); - } - - @Override - protected double getNoiseConditions(long channelID) { - return findChannel(channelID).getCalibration().getNoise(); - } - - protected double getPedestalConditions(long cellID) { - return findChannel(cellID).getCalibration().getPedestal(); - } - - @Override - protected double getTimeShiftConditions(long cellID) { - return findChannel(cellID).getTimeShift().getTimeShift(); - } - - @Override - protected int getTimestampFlag() { - return ReadoutTimestamp.SYSTEM_ECAL; - } - - /** - * Gets the channel parameters for a given channel ID. - * @param cellID - The long ID value that represents - * the channel. This is typically acquired from the method {@link - * org.lcsim.event.CalorimeterHit#getCellID() getCellID()} in a - * {@link org.lcsim.event.CalorimeterHit CalorimeterHit} object. - * @return Returns the channel parameters for the channel as an - * {@link org.hps.conditions.ecal.EcalChannelConstants - * EcalChannelConstants} object. - */ - private EcalChannelConstants findChannel(long cellID) { - return ecalConditions.getChannelConstants(ecalConditions.getChannelCollection().findGeometric(cellID)); - } -} \ No newline at end of file diff --git a/digi/src/main/java/org/hps/digi/EcalDigitizationWithPulserDataMergingReadoutDriver.java b/digi/src/main/java/org/hps/digi/EcalDigitizationWithPulserDataMergingReadoutDriver.java index 93e679ce6..d0d7a4fdb 100644 --- a/digi/src/main/java/org/hps/digi/EcalDigitizationWithPulserDataMergingReadoutDriver.java +++ b/digi/src/main/java/org/hps/digi/EcalDigitizationWithPulserDataMergingReadoutDriver.java @@ -12,6 +12,8 @@ import org.lcsim.event.RawTrackerHit; import org.lcsim.geometry.Detector; import org.lcsim.geometry.subdetector.HPSEcal3; +import org.hps.record.daqconfig.ConfigurationManager; +import org.hps.record.daqconfig.DAQConfig; import org.hps.record.daqconfig2019.ConfigurationManager2019; import org.hps.record.daqconfig2019.DAQConfig2019; import org.hps.record.daqconfig2019.FADCConfigEcal2019; @@ -29,28 +31,27 @@ public class EcalDigitizationWithPulserDataMergingReadoutDriver extends Digitiza // The DAQ configuration manager for FADC parameters. private FADCConfigEcal2019 config = new FADCConfigEcal2019(); private boolean configStat = false; // Indicates if DAQ configuration is loaded - + // The number of nanoseconds in a clock-cycle (sample). private static final int nsPerSample = 4; - - + /** Stores the conditions for this subdetector. */ private EcalConditions ecalConditions = null; - + /** Stores the channel collection for this subdetector. */ private EcalChannelCollection geoMap = new EcalChannelCollection(); - + public EcalDigitizationWithPulserDataMergingReadoutDriver() { // Set the default values for each subdetector-dependent // parameter. setGeometryName("Ecal"); - + setInputHitCollectionName("EcalHits"); setOutputHitCollectionName("EcalRawHits"); setTruthRelationsCollectionName("EcalTruthRelations"); setTriggerPathTruthRelationsCollectionName("TriggerPathTruthRelations"); setReadoutHitCollectionName("EcalReadoutHits"); - + setPhotoelectronsPerMeV(EcalUtils.photoelectronsPerMeV); setPulseTimeParameter(9.6); } @@ -85,57 +86,86 @@ public void actionPerformed(ActionEvent e) { } }); } - } - - + } + + /** + * Sets whether or not the DAQ configuration is applied into the driver + * the EvIO data stream or whether to read the configuration from data files. + * + * @param state - true indicates that the DAQ configuration is + * applied into the readout system, and false that it + * is not applied into the readout system. + */ + public void setDaqConfiguration2016AppliedintoReadout(boolean state) { + // If the DAQ configuration should be read, attach a listener + // to track when it updates. + if (state) { + ConfigurationManager.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + // Get the DAQ configuration. + DAQConfig daq = ConfigurationManager.getInstance(); + + // Load the DAQ settings from the configuration manager. + numSamplesAfter = daq.getFADCConfig().getNSA() / nsPerSample; + numSamplesBefore = daq.getFADCConfig().getNSB() / nsPerSample; + readoutWindow = daq.getFADCConfig().getWindowWidth() / nsPerSample; + + // Get the FADC configuration. + configStat = true; + } + }); + } + } + @Override public void detectorChanged(Detector detector) { // Get a copy of the calorimeter conditions for the detector. ecalConditions = DatabaseConditionsManager.getInstance().getEcalConditions(); - + // Store the calorimeter conditions table for converting between // geometric IDs and channel objects. geoMap = DatabaseConditionsManager.getInstance().getCachedConditions(EcalChannelCollection.class, "ecal_channels").getCachedData(); - + // Run the superclass method. super.detectorChanged(detector); } - + @Override protected Set getChannelIDs() { return getSubdetector().getNeighborMap().keySet(); } - + @Override protected Long getID(RawTrackerHit hit) { return hit.getCellID(); } - + @Override protected double getGainConditions(long cellID) { return findChannel(cellID).getGain().getGain(); } - + @Override protected double getNoiseConditions(long channelID) { return findChannel(channelID).getCalibration().getNoise(); } - + protected double getPedestalConditions(long cellID) { return findChannel(cellID).getCalibration().getPedestal(); } - + @Override protected double getTimeShiftConditions(long cellID) { return findChannel(cellID).getTimeShift().getTimeShift(); } - + @Override protected int getTimestampFlag() { return ReadoutTimestamp.SYSTEM_ECAL; } - + /** * Gets the channel parameters for a given channel ID. * @param cellID - The long ID value that represents diff --git a/steering-files/src/main/resources/org/hps/steering/readout/PhysicsRun2016TrigPairsWithPulserDataMerging.lcsim b/steering-files/src/main/resources/org/hps/steering/readout/PhysicsRun2016TrigPairsWithPulserDataMerging.lcsim index ec4dc4988..7d2d4c48a 100644 --- a/steering-files/src/main/resources/org/hps/steering/readout/PhysicsRun2016TrigPairsWithPulserDataMerging.lcsim +++ b/steering-files/src/main/resources/org/hps/steering/readout/PhysicsRun2016TrigPairsWithPulserDataMerging.lcsim @@ -132,7 +132,7 @@ same collection name as the input truth data. If a truth handler driver also outputs data into this collection, the two will merge. --> - + EcalHits PulserDataEcalReadoutHits @@ -141,7 +141,7 @@ EcalTruthRelations TriggerPathTruthRelations - true + true 1 @@ -154,10 +154,6 @@ selecting a readout window equal to (readoutLatency - 64). --> 10 - 50 - 25 - 5 - 18 0.100 - - 2 - - 3 - - 0.150 - - 1.400 - - 0.600 - - 2.000 - - 1.1 - - 35 - - 0.0055 - - 0.700