OpalCyclotron.h 2.46 KB
Newer Older
gsell's avatar
gsell committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
#ifndef OPAL_OpalCyclotron_HH
#define OPAL_OpalCyclotron_HH

// ------------------------------------------------------------------------
// $RCSfile: OpalCyclotron.h,v $
// ------------------------------------------------------------------------
// $Revision: 1.1.1.1 $
// ------------------------------------------------------------------------
// Copyright: see Copyright.readme
// ------------------------------------------------------------------------
//
// Class: OpalCyclotron
//
// ------------------------------------------------------------------------
//
// $Date: 2000/03/27 09:33:39 $
// $Author: Andreas Adelmann $
//
// ------------------------------------------------------------------------

#include "Elements/OpalElement.h"


// Class OpalCyclotron
// ------------------------------------------------------------------------
/// The OpalCyclotron element.

class OpalCyclotron: public OpalElement {

public:

    /// The attributes of class OpalCyclotron.
    enum {
        TYPE,
        CYHARMON,         // The harmonic number of the cyclotron
        SYMMETRY,         // The symetry of the field
        RINIT,             // The initial radius [m]
        PRINIT,             // The initial radial momenta [pr/p0] []
        PHIINIT,               // The initial phase [deg]
        RFFREQ,                // First hamonic of the RF system
        FMAPFN,                // The filename of the fieldmap
        RFMAPFN,                // The filename of the fieldmap
        BSCALE,                // A scalar to scale the B-field
        ESCALE,                // A scalar to scale the RF field
        TCR1,    //trim coil r1 (mm)
        TCR2,    //trim coil r2 (mm)
        MBTC,    //max bfield of trim coil (kG)
        SLPTC,    //slope of the rising edge
	RFPHI,   // the initial phase of RF field 
50
	SUPERPOSE, // whether the electric field map are superposed or not 
gsell's avatar
gsell committed
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
        SIZE
    };



    /// Exemplar constructor.
    OpalCyclotron();

    virtual ~OpalCyclotron();

    /// Make clone.
    virtual OpalCyclotron *clone(const string &name);

    /// Fill in all registered attributes.
    virtual void fillRegisteredAttributes(const ElementBase &, ValueFlag);

    /// Update the embedded CLASSIC cavity.
    virtual void update();

private:

    // Not implemented.
    OpalCyclotron(const OpalCyclotron &);
    void operator=(const OpalCyclotron &);

    // Clone constructor.
    OpalCyclotron(const string &name, OpalCyclotron *parent);
};

#endif // OPAL_OpalCyclotron_HH