Complete update of SOURCE [SDEF] entry

This is a brief description on why every source entry system is going to work very differently from now!

Abstract

The source system is changing from a variable driven system to a command line driven system based on --sdefType and --sdefMod. All other sdef command line options are going, and all variable type sourceName+Value variable type e.g. -va beamSourceEnergy 10 are going. 

Introduction

The source system is based on the idea of entering an --sdefType card followed by a name e.g. beam. Then there is a mess of either -sdefNAME, were NAME is replaced by a random mix of values dependent on source type, and by a set of variables listed as beamSourceEnergy or beamSourceYPos etc.

This is a mess because

  1. beamSource etc variables are normally not defaulted, so a -va command is needed.
  2. It is completely unclear if -sdefYpos takes presidence over -va beamSourceYStep.
  3. For each source you have to look at the multiple pieces of code to figure out the capability of that source. 

Solution

The solution is that we are going to have -sdefType which will name a source type. That will be followed by -sdefObj should any FixedComp and linkPt reference be needed and finally -sdefMod keyname values... 

-sdefMod takes a set of keynames followed by values. The expected layout will be somthing like:

--sdefMod energy 10.0  \
--sdefMod yStep 20.0 \
--sdefMod radius 5.0 \
--sdefMod aSpead 1.0

 Note that every keyword starts with a lower case letter. 

The plan [not implemented yet] is to add -sdefModHelp so that a given source can report the sdefMod cards available.

Note

This will break all existing scripts that don't use default sources. Sorry.