Author: [log in to unmask]
Date: Fri Mar 6 22:42:52 2015
New Revision: 2330
Log:
Add map of channel to crystal.
Modified:
java/trunk/conditions/src/main/java/org/hps/conditions/ecal/EcalCrystalChannelMap.java
Modified: java/trunk/conditions/src/main/java/org/hps/conditions/ecal/EcalCrystalChannelMap.java
=============================================================================
--- java/trunk/conditions/src/main/java/org/hps/conditions/ecal/EcalCrystalChannelMap.java (original)
+++ java/trunk/conditions/src/main/java/org/hps/conditions/ecal/EcalCrystalChannelMap.java Fri Mar 6 22:42:52 2015
@@ -10,13 +10,14 @@
/**
* This is a convenience utility for associating the geometric crystal
- * objects with the conditions system channel information.
+ * objects with the conditions system channel information and vice versa.
*
* @author Jeremy McCormick <[log in to unmask]>
*/
final class EcalCrystalChannelMap {
Map<EcalCrystal, EcalChannel> crystalMap = new HashMap<EcalCrystal, EcalChannel>();
+ Map<EcalChannel, EcalCrystal> channelMap = new HashMap<EcalChannel, EcalCrystal>();
/**
* Creates the map between crystals and channels.
@@ -24,13 +25,23 @@
* @param channels The list of channels.
*/
EcalCrystalChannelMap(HPSEcalAPI api, EcalChannelCollection channels) {
- List<EcalCrystal> crystals = api.getCrystals();
- for (EcalCrystal crystal : crystals) {
+
+ // Map crystals to channels.
+ for (EcalCrystal crystal : api.getCrystals()) {
EcalChannel channel = channels.findGeometric(crystal.getIdentifier().getValue());
if (channel == null) {
throw new RuntimeException("ECAL channel was not found for ID: " + crystal.getExpandedIdentifier());
}
crystalMap.put(crystal, channel);
+ }
+
+ // Map channels to crystals.
+ for (EcalChannel channel : channels) {
+ EcalCrystal crystal = api.getCrystal(channel.getX(), channel.getY());
+ if (crystal == null) {
+ throw new RuntimeException("ECAl crystal was not found for channel X Y: " + channel.getX() + " " + channel.getY());
+ }
+ channelMap.put(channel, crystal);
}
}
@@ -42,4 +53,13 @@
EcalChannel getEcalChannel(EcalCrystal crystal) {
return crystalMap.get(crystal);
}
+
+ /**
+ * Get a channel from a crystal.
+ * @param crystal The geometry object.
+ * @return The channel information or null if does not exist.
+ */
+ EcalCrystal getEcalCrystal(EcalChannel channel) {
+ return channelMap.get(channel);
+ }
}
|