BeamCommand.java
// @formatter:off
/*******************************************************************************
*
* This file is part of JMad.
*
* Copyright (c) 2008-2011, CERN. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
******************************************************************************/
// @formatter:on
package cern.accsoft.steering.jmad.kernel.cmd;
import java.util.ArrayList;
import java.util.List;
import cern.accsoft.steering.jmad.domain.beam.Beam;
import cern.accsoft.steering.jmad.kernel.cmd.param.GenericParameter;
import cern.accsoft.steering.jmad.kernel.cmd.param.Parameter;
/**
* represents the madX 'beam' command BEAM, PARTICLE=name,MASS=real,CHARGE=real, ENERGY=real,PC=real,GAMMA=real,
* EX=real,EXN=real,EY=real,EYN=real, ET=real,SIGT=real,SIGE=real, KBUNCH=integer,NPART=real,BCURRENT=real,
* BUNCHED=logical,RADIATE=logical,BV=integer,SEQUENCE=name;
*
* @author Kajetan Fuchsberger (kajetan.fuchsberger at cern.ch)
*/
public class BeamCommand extends AbstractCommand {
private static final String CMD_NAME = "beam";
private final Beam beam;
public BeamCommand(Beam beam) {
this.beam = beam;
}
@Override
public String getName() {
return CMD_NAME;
}
@Override
public List<Parameter> getParameters() {
ArrayList<Parameter> parameters = new ArrayList<>();
/*
* define the mapping of the member-fields to the parameters.
*/
/*
* for particle, there may be set throug enum or through a arbitrary string. DANGER: not checked, if boths are
* set!
*/
parameters.add(new GenericParameter<>("particle", beam.getParticle()));
parameters.add(new GenericParameter<>("particle", beam.getParticleName()));
parameters.add(new GenericParameter<>("mass", beam.getMass()));
parameters.add(new GenericParameter<>("charge", beam.getCharge()));
parameters.add(new GenericParameter<>("energy", beam.getEnergy()));
parameters.add(new GenericParameter<>("pc", beam.getMomentum()));
parameters.add(new GenericParameter<>("gamma", beam.getGamma()));
parameters.add(new GenericParameter<>("ex", beam.getHorizontalEmittance()));
parameters.add(new GenericParameter<>("ey", beam.getVerticalEmittance()));
parameters.add(new GenericParameter<>("et", beam.getLongitudinalEmittance()));
parameters.add(new GenericParameter<>("exn", beam.getNormalisedHorizontalEmittance()));
parameters.add(new GenericParameter<>("eyn", beam.getNormalisedVerticalEmittance()));
parameters.add(new GenericParameter<>("sigt", beam.getBunchLength()));
parameters.add(new GenericParameter<>("sige", beam.getRelativeEnergySpread()));
parameters.add(new GenericParameter<>("kbunch", beam.getBunchNumber()));
parameters.add(new GenericParameter<>("npart", beam.getParticleNumber()));
parameters.add(new GenericParameter<>("bcurrent", beam.getBunchCurrent()));
parameters.add(new GenericParameter<>("bunched", beam.getBunched()));
parameters.add(new GenericParameter<>("radiate", beam.getRadiate()));
parameters.add(new GenericParameter<>("bv", beam.getDirection()));
parameters.add(new GenericParameter<>("sequence", beam.getSequence()));
return parameters;
}
}