diff --git a/common-tools/cnuphys/magfield/src/main/java/cnuphys/magfield/CompositeField.java b/common-tools/cnuphys/magfield/src/main/java/cnuphys/magfield/CompositeField.java index c9b2820da7..f80a8560db 100644 --- a/common-tools/cnuphys/magfield/src/main/java/cnuphys/magfield/CompositeField.java +++ b/common-tools/cnuphys/magfield/src/main/java/cnuphys/magfield/CompositeField.java @@ -11,6 +11,9 @@ @SuppressWarnings("serial") public class CompositeField extends ArrayList implements IMagField { + boolean _hasTorus; + boolean _hasSolenoid; + /** * Checks whether the field has been set to always return zero. * @@ -43,7 +46,16 @@ public boolean add(IMagField field) { } } - return super.add(field); + _hasSolenoid = false; + _hasTorus = false; + if (super.add(field)) { + for (IMagField ifield : this) { + if (ifield instanceof Solenoid) _hasSolenoid = true; + if (ifield instanceof Torus) _hasTorus = true; + } + return true; + } + return false; } @Override @@ -69,13 +81,7 @@ public String getName() { * @return true if we have a torus */ public boolean hasTorus() { - for (IMagField field : this) { - if (field instanceof Torus) { - return true; - } - } - - return false; + return _hasTorus; } /** @@ -84,13 +90,7 @@ public boolean hasTorus() { * @return true if we have a solenoid */ public boolean hasSolenoid() { - for (IMagField field : this) { - if (field instanceof Solenoid) { - return true; - } - } - - return false; + return _hasSolenoid; } /**