Skip to content

Implement Experiment and API #11

@szabo137

Description

@szabo137

Description:

Introduce an Experiment type to represent collider and multi-beam experiments within the LaserExperiments.jl package.
An experiment combines one or more beams (e.g. an AbstractLaserBeam and/or an ElectronBeam) and may exist as either a generic or a deployed instance.

Requirements:

  • Each experiment must have:

    • a name (unique identifier)
    • a list of participating beams (Vector{AbstractBeam}; could include lasers or electrons)
    • a type or flag indicating whether it is generic or deployed
  • For deployed experiments:

    • a facility field to indicate where the experiment is located
    • an optional status field (e.g. "commissioned", "running", "finished")

Proposed API:

# Generic experiment definition
exp = Experiment(
    name = "GammaRaySource",
    beams = [laserbeam(...), electronbeam(...)],
    kind = :generic
)

# Deployed experiment linked to a facility
exp_deployed = Experiment(
    name = "GammaRaySource_HiBEF",
    beams = [laserbeam(...), electronbeam(...)],
    kind = :deployed,
    facility = "HiBEF",
    status = :running
)

Tasks:

  • Define Experiment struct and related constructors
  • Integrate experiment storage into the registry system
  • Add comprehensive unit tests and example entries

Notes:
This structure should generalize to any number of participating beams, allowing the same API to describe both collider and multi-laser setups.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions