factory module

Define a factory to easily create Accelerator.

class AcceleratorFactory(beam_calculators: BeamCalculator | Sequence[BeamCalculator | None], files: dict[str, Any], beam: dict[str, Any], **kwargs: dict)

Bases: ABC

A class to create accelerators.

__init__(beam_calculators: BeamCalculator | Sequence[BeamCalculator | None], files: dict[str, Any], beam: dict[str, Any], **kwargs: dict) None

Facilitate creation of Accelerator objects.

Parameters:
  • beam_calculators (BeamCalculator | Sequence[BeamCalculator | None]) – Objects that will compute propagation of the beam.

  • files (dict[str, Any]) – Configuration entries for the input/output paths.

  • beam (dict[str, Any]) – Configuration dictionary holding the initial beam parameters.

  • kwargs – Other configuration dictionaries.

run(*args, **kwargs) Accelerator

Create the object.

_generate_folders_tree_structure(out_folders: Sequence[Path], n_simulations: int) list[Path]

Create the proper folders for every Accelerator.

The default structure is:

  • where_original_dat_is/

    • YYYY.MM.DD_HHhMM_SSs_MILLIms/ <- project_folder (absolute)

      • 000000_ref/ <- accelerator_path (absolute)

        • 0_FirstBeamCalculatorName/ <- out_folder (relative)

        • (1_SecondBeamCalculatorName/) <- out_folder (relative)

      • 000001/

        • 0_FirstBeamCalculatorName/

        • (1_SecondBeamCalculatorName/)

      • 000002/

        • 0_FirstBeamCalculatorName/

        • (1_SecondBeamCalculatorName/)

      • etc

Parameters:

out_folders (Sequence[pathlib.Path]) – Name of the folders that will store outputs. By default, it is the name of the solver, preceeded by its position in the list of BeamCalculator.

_check_consistency_absolute_phases(cavities: Sequence[FieldMap]) None

Check that solvers phases are consistent with .dat file.

_abc_impl = <_abc._abc_data object at 0x7f36f7e2b840>
class NoFault(beam_calculators: BeamCalculator, files: dict[str, Any], beam: dict[str, Any], **kwargs: dict)

Bases: AcceleratorFactory

Factory used to generate a single accelerator, no faults.

__init__(beam_calculators: BeamCalculator, files: dict[str, Any], beam: dict[str, Any], **kwargs: dict) None

Facilitate creation of Accelerator.

Parameters:
  • beam_calculators (BeamCalculator) – A unique object to compute propagation of the field. Even if there is a s at the end of the variable name.

  • files (dict[str, Any]) – Configuration entries for the input/output paths.

  • beam (dict[str, Any]) – Configuration dictionary holding the initial beam parameters.

  • kwargs – Other configuration dictionaries.

property beam_calculator: BeamCalculator

Shortcut to get the only existing BeamCalculator.

run(*args, **kwargs) Accelerator

Create a single accelerator.

_abc_impl = <_abc._abc_data object at 0x7f36f6e2a8c0>
class StudyWithoutFaultsAcceleratorFactory(beam_calculators: BeamCalculator, files: dict[str, Any], beam: dict[str, Any], **kwargs: dict)

Bases: NoFault

Alias for NoFault.

_abc_impl = <_abc._abc_data object at 0x7f36f6f1eec0>
class WithFaults(beam_calculators: BeamCalculator | Sequence[BeamCalculator | None], files: dict[str, Any], beam: dict[str, Any], wtf: dict[str, Any], **kwargs: dict)

Bases: AcceleratorFactory

Factory used to generate several accelerators for a fault study.

__init__(beam_calculators: BeamCalculator | Sequence[BeamCalculator | None], files: dict[str, Any], beam: dict[str, Any], wtf: dict[str, Any], **kwargs: dict) None

Facilitate creation of Accelerator objects.

Parameters:
  • beam_calculators (BeamCalculator | Sequence[BeamCalculator | None]) – Objects that will compute propagation of the beam.

  • files (dict[str, Any]) – Configuration entries for the input/output paths.

  • beam (dict[str, Any]) – Configuration dictionary holding the initial beam parameters.

  • wtf (dict[str, Any]) – Dictionary holding the information on what to fit.

  • kwargs – Other configuration dictionaries.

property n_simulations: int

Determine how much simulations will be made.

run(*args, **kwargs) Accelerator

Return a single accelerator.

run_all(**kwargs) list[Accelerator]

Create the required Accelerators as well as their output folders.

_abc_impl = <_abc._abc_data object at 0x7f36f6f1fb80>
class FullStudyAcceleratorFactory(beam_calculators: BeamCalculator | Sequence[BeamCalculator | None], files: dict[str, Any], beam: dict[str, Any], wtf: dict[str, Any], **kwargs: dict)

Bases: WithFaults

Alias for WithFaults.

_abc_impl = <_abc._abc_data object at 0x7f36f6e1f6c0>