Skip to content

Commit d2e4f3f

Browse files
authored
Merge pull request #166 from xsuite/fix/prebuild
Fix/prebuild
2 parents 8190b99 + b14eaa8 commit d2e4f3f

File tree

2 files changed

+15
-5
lines changed

2 files changed

+15
-5
lines changed

xcoll/beam_elements/geant4.py

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -79,19 +79,25 @@ def angle(self, val):
7979

8080
@property
8181
def material(self):
82-
return self._material
82+
if self._material != _DEFAULT_MATERIAL:
83+
return self._material
8384

8485
@material.setter
8586
def material(self, material):
8687
if material is None:
87-
material = Material()
88+
material = _DEFAULT_MATERIAL
8889
elif isinstance(material, dict):
8990
material = Material.from_dict(material)
9091
elif isinstance(material, str):
9192
material = material_db[material]
92-
if not isinstance(material, Material):
93-
raise ValueError("Invalid material!")
94-
self._material = material
93+
elif isinstance(material, RefMaterial):
94+
if material.geant4_name is None:
95+
raise ValueError(f"RefMaterial {material} does not have a Geant4 name!")
96+
if not isinstance(material, Material) \
97+
or isinstance(material, CrystalMaterial):
98+
raise ValueError(f"Invalid material of type {type(material)}!")
99+
if self.material != material:
100+
self._material = material
95101

96102

97103
def track(self, part):

xcoll/scattering_routines/environment.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ def __init__(self, *args, **kwargs):
3232
self._in_constructor = True
3333
for path in self._paths.keys():
3434
setattr(self, f'_{path}', None)
35+
self._config_dir.mkdir(parents=True, exist_ok=True)
36+
self._data_dir.mkdir(parents=True, exist_ok=True)
3537
self._config_file = self._config_dir / f'{self.__class__.__name__[:-11].lower()}.config.json'
3638
sys.path.append(self._data_dir.as_posix())
3739
self.load()
@@ -167,6 +169,8 @@ def load(self):
167169
try:
168170
data = json.load(fid)
169171
except json.JSONDecodeError:
172+
with open(self._config_file, 'w') as fid:
173+
json.dump({'paths': {}, 'read_only_paths': {}}, fid, indent=4)
170174
return
171175
if 'paths' not in data or 'read_only_paths' not in data:
172176
return

0 commit comments

Comments
 (0)