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); + } }