Skip to content

Commit 0588ce3

Browse files
committed
keep track instead of calculating later
1 parent add24dc commit 0588ce3

1 file changed

Lines changed: 71 additions & 45 deletions

File tree

‎common-tools/cnuphys/magfield/src/main/java/cnuphys/magfield/MagneticFields.java‎

Lines changed: 71 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)