@@ -72,6 +72,12 @@ public class MagneticFields {
7272 // which field is active
7373 private IMagField _activeField ;
7474
75+ // whether the active field is a torus:
76+ private boolean _hasActiveTorus = false ;
77+
78+ // whether the active field is a solenoid:
79+ private boolean _hasActiveSolenoid = false ;
80+
7581 // types of fields
7682 public enum FieldType {
7783 TORUS , SOLENOID , COMPOSITE , COMPOSITEROTATED , ZEROFIELD
@@ -181,7 +187,7 @@ protected void openNewTorus(String path) throws FileNotFoundException {
181187 _torus = readTorus (path );
182188
183189 if (activeFieldWasTorus ) {
184- _activeField = _torus ;
190+ setActiveField ( _torus ) ;
185191 }
186192
187193 if (_torus != null ) {
@@ -266,7 +272,7 @@ protected void openSolenoid(File file, boolean isTransverse) throws FileNotFound
266272 _solenoid = readSolenoid (file .getAbsolutePath (), isTransverse );
267273
268274 if (activeFieldWasSolenoid ) {
269- _activeField = _solenoid ;
275+ setActiveField ( _solenoid ) ;
270276 }
271277
272278 if (_solenoid != null ) {
@@ -479,13 +485,66 @@ private String sysPropOrEnvVar(String key) {
479485 return s ;
480486 }
481487
488+ private boolean getActiveTorus () {
489+
490+ if (_activeField != null ) {
491+ if (_activeField instanceof Torus ) {
492+ return true ;
493+ } else if (_activeField instanceof TorusProbe ) {
494+ return true ;
495+ } else if (_activeField instanceof CompositeProbe ) {
496+ return ((CompositeProbe ) _activeField ).hasTorus ();
497+ } else if (_activeField instanceof CompositeField ) {
498+ return ((CompositeField ) _activeField ).hasTorus ();
499+ }
500+ }
501+
502+ return false ;
503+ }
504+
505+ private boolean getActiveSolenoid () {
506+ if (_activeField != null ) {
507+ if (_activeField instanceof Solenoid ) {
508+ return true ;
509+ } else if (_activeField instanceof SolenoidProbe ) {
510+ return true ;
511+ } else if (_activeField instanceof CompositeProbe ) {
512+ return ((CompositeProbe ) _activeField ).hasSolenoid ();
513+ } else if (_activeField instanceof CompositeField ) {
514+ return ((CompositeField ) _activeField ).hasSolenoid ();
515+ }
516+ }
517+
518+ return false ;
519+ }
520+
521+ /**
522+ * Check whether we have an active torus field
523+ *
524+ * @return <code>true</code> if we have a torus
525+ */
526+ public boolean hasActiveTorus () {
527+ return _hasActiveTorus ;
528+ }
529+
530+ /**
531+ * Check whether we have an active solenoid field
532+ *
533+ * @return <code>true</code> if we have a solenoid
534+ */
535+ public boolean hasActiveSolenoid () {
536+ return _hasActiveSolenoid ;
537+ }
538+
482539 /**
483540 * Sets the active field
484541 *
485542 * @param field the new active field
486543 */
487544 public void setActiveField (IMagField field ) {
488545 _activeField = field ;
546+ _hasActiveTorus = getActiveTorus ();
547+ _hasActiveSolenoid = getActiveSolenoid ();
489548 }
490549
491550 /**
@@ -500,18 +559,28 @@ public void setActiveField(FieldType ftype) {
500559 switch (ftype ) {
501560 case TORUS :
502561 _activeField = _torus ;
562+ _hasActiveTorus = true ;
563+ _hasActiveSolenoid = false ;
503564 break ;
504565 case SOLENOID :
505566 _activeField = _solenoid ;
567+ _hasActiveTorus = false ;
568+ _hasActiveSolenoid = true ;
506569 break ;
507570 case COMPOSITE :
508571 _activeField = _compositeField ;
572+ _hasActiveTorus = _compositeField .hasTorus ();
573+ _hasActiveSolenoid = _compositeField .hasSolenoid ();
509574 break ;
510575 case COMPOSITEROTATED :
511576 _activeField = _rotatedCompositeField ;
577+ _hasActiveTorus = _rotatedCompositeField .hasTorus ();
578+ _hasActiveSolenoid = _rotatedCompositeField .hasSolenoid ();
512579 break ;
513580 case ZEROFIELD :
514581 _activeField = null ;
582+ _hasActiveTorus = false ;
583+ _hasActiveSolenoid = false ;
515584 break ;
516585 }
517586
@@ -1379,49 +1448,6 @@ public void removeMapOverlap() {
13791448 notifyListeners ();
13801449 }
13811450
1382- /**
1383- * Check whether we have an active torus field
1384- *
1385- * @return <code>true</code> if we have a torus
1386- */
1387- public boolean hasActiveTorus () {
1388-
1389- if (_activeField != null ) {
1390- if (_activeField instanceof Torus ) {
1391- return true ;
1392- } else if (_activeField instanceof TorusProbe ) {
1393- return true ;
1394- } else if (_activeField instanceof CompositeProbe ) {
1395- return ((CompositeProbe ) _activeField ).hasTorus ();
1396- } else if (_activeField instanceof CompositeField ) {
1397- return ((CompositeField ) _activeField ).hasTorus ();
1398- }
1399- }
1400-
1401- return false ;
1402- }
1403-
1404- /**
1405- * Check whether we have an active solenoid field
1406- *
1407- * @return <code>true</code> if we have a solenoid
1408- */
1409- public boolean hasActiveSolenoid () {
1410- if (_activeField != null ) {
1411- if (_activeField instanceof Solenoid ) {
1412- return true ;
1413- } else if (_activeField instanceof SolenoidProbe ) {
1414- return true ;
1415- } else if (_activeField instanceof CompositeProbe ) {
1416- return ((CompositeProbe ) _activeField ).hasSolenoid ();
1417- } else if (_activeField instanceof CompositeField ) {
1418- return ((CompositeField ) _activeField ).hasSolenoid ();
1419- }
1420- }
1421-
1422- return false ;
1423- }
1424-
14251451 /**
14261452 * Get the torus field
14271453 *
0 commit comments