InitialContitionsParameters.java

/**
 * Copyright (c) 2018 European Organisation for Nuclear Research (CERN), All Rights Reserved.
 */

package cern.accsoft.steering.jmad.kernel.cmd;

import java.util.List;

import cern.accsoft.steering.jmad.domain.twiss.TwissInitialConditions;
import cern.accsoft.steering.jmad.domain.var.enums.MadxTwissVariable;
import cern.accsoft.steering.jmad.kernel.cmd.param.GenericParameter;
import cern.accsoft.steering.jmad.kernel.cmd.param.Parameter;

/**
 * Contains utility methods to create parameters out of initial conditions
 * 
 * @author kfuchsbe
 */
public final class InitialContitionsParameters {

    private InitialContitionsParameters() {
        /* Only static methods */
    }

    /**
     * Adds the parameters representing the given initial conditions to the parameter list.
     * 
     * @param parameters the list to which to append the parameters
     * @param tw the twiss initial conditons which shall be added to the list of parameters
     */
    public static void addTwissParameters(List<Parameter> parameters, TwissInitialConditions tw) {
        parameters.add(new GenericParameter<>("deltap", tw.getDeltap()));

        /*
         * the initial conditions must not be set, if we want to calc the closed orbit solution
         */
        if (!tw.isClosedOrbit() && (tw.getSaveBetaName() == null)) {
            for (MadxTwissVariable var : tw.getMadxVariables()) {
                Double value = tw.getValue(var);
                if ((value != null) && (!MadxTwissVariable.DELTAP.equals(var))) {
                    parameters.add(new GenericParameter<>(var.getMadxName(), value));
                }
            }
        }

        if (tw.getSaveBetaName() != null) {
            parameters.add(new GenericParameter<>("beta0", tw.getSaveBetaName(), false));
        }

    }
}