1+ from typing import Any
2+
13from ..lattice import AccActionsContainer
24from ..lattice import AccLattice
35from ..lattice import AccNode
46from ..lattice import AccNodeBunchTracker
57from ..utils import orbitFinalize
68
7- from orbit .core .envelope import Danilov20EnvelopeSolver
8- from orbit .core .envelope import Danilov22EnvelopeSolver
9+ from orbit .core .envelope import EnvSolverDanilov20
10+ from orbit .core .envelope import EnvSolverDanilov22
911
1012
11- class DanilovEnvelopeSolverNode (AccNodeBunchTracker ):
13+ class EnvSolverNode (AccNodeBunchTracker ):
1214 def __init__ (
1315 self ,
14- solver : DanilovEnvelopeSolver20 | DanilovEnvelopeSolver22 ,
15- name : str = None ,
16+ solver : Any ,
17+ name : str = "" ,
1618 kick_length : float = 0.0 ,
17- perveance : float = 0.0 ,
1819 ) -> None :
1920 super ().__init__ (name = name )
20- self .setType ("DanilovEnvSolver " )
21+ self .setType ("EnvSolver " )
2122 self .setLength (0.0 )
2223
23- self .solver = solver
24+ self .solver = None
2425 self .kick_length = kick_length
25- self .perveance = perveance
2626 self .active = True
2727
28- def set_active (self , setting : bool ) -> None :
28+ def setActive (self , setting : bool ) -> None :
2929 self .active = setting
3030
31+ def setKickLength (self , kick_length : float ) -> None :
32+ self .kick_length = kick_length
33+
3134 def isRFGap (self ) -> bool :
3235 # In case this node is used in linac tracking
3336 return False
@@ -42,28 +45,24 @@ def track(self, params_dict: dict) -> None:
4245 bunch = params_dict ["bunch" ]
4346 self .solver .trackBunch (bunch , self .kick_length )
4447
45- def set_perveance (self , perveance : float ) -> None :
46- self .solver .setPerveance (perveance )
4748
48- def set_kick_length (self , kick_length : float ) -> None :
49- self .kick_length = kick_length
49+ class Danilov22EnvSolverNode (EnvSolverNode ):
50+ def __init__ (self , perveance : float , ** kwargs ) -> None :
51+ super ().__init__ (** kwargs )
52+ self .solver = EnvSolverDanilov22 (perveance )
5053
54+ def setPerveance (self , perveance : float ) -> None :
55+ self .solver .setPerveance (perveance )
5156
52- class DanilovEnvelopeSolverNode20 (DanilovEnvelopeSolverNode ):
53- def __init__ (self , eps_x : float , eps_y : float , ** kwargs ) -> None :
54- super ().__init__ (solver = None , ** kwargs )
55- self .eps_x = eps_x
56- self .eps_y = eps_y
57- self .solver = DanilovEnvelopeSolver20 (self .perveance , self .eps_x , self .eps_y )
5857
59- def set_emittances (self , eps_x : float , eps_y : float ) -> None :
60- self .eps_x = eps_x
61- self .eps_y = eps_y
62- self .solver .setEmittanceX (eps_x )
63- self .solver .setEmittanceY (eps_y )
58+ class Danilov20EnvSolverNode (EnvSolverNode ):
59+ def __init__ (self , eps_x : float , eps_y : float , perveance : float , ** kwargs ) -> None :
60+ super ().__init__ (** kwargs )
61+ self .solver = EnvSolverDanilov20 (perveance , eps_x , eps_y )
6462
63+ def setPerveance (self , perveance : float ) -> None :
64+ self .solver .setPerveance (perveance )
6565
66- class DanilovEnvelopeSolverNode22 (DanilovEnvelopeSolverNode ):
67- def __init__ (self , ** kwargs ) -> None :
68- super ().__init__ (solver = None , ** kwargs )
69- self .solver = DanilovEnvelopeSolver22 (self .perveance )
66+ def setEmittances (self , eps_x : float , eps_y : float ) -> None :
67+ self .solver .setEmittanceX (eps_x )
68+ self .solver .setEmittanceY (eps_y )
0 commit comments